Thanks Vikas.
Regards -- Pranay Pandey HotWax Media www.hotwaxmedia.com On Apr 22, 2009, at 12:20 PM, [hidden email] wrote: > Author: mor > Date: Wed Apr 22 06:50:16 2009 > New Revision: 767394 > > URL: http://svn.apache.org/viewvc?rev=767394&view=rev > Log: > Facilitate packing screen to use verified orders from Verify Pick > screen by using existing shipment and invoice. > Patch from Akash Jain (reviewed and tested by Pranay Pandey), Part > of OFBIZ-2329 (https://issues.apache.org/jira/browse/OFBIZ-2329). > > Note: I have done little modifications to the new labels part of > this patch. > > This issue completes the functionality of the Verify Pick feature > added recently. I would like to port these changes to release09.04 > later today > if I do not see any objections. > > > > Modified: > ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml > ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml > ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ > invoice/InvoiceServices.java > ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml > ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml > ofbiz/trunk/applications/product/servicedef/services_shipment.xml > ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingServices.java > ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingSession.java > ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSession.java > ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSessionRow.java > ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/PackOrder.groovy > ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/VerifyPick.groovy > ofbiz/trunk/applications/product/webapp/facility/shipment/ > PackOrder.ftl > > Modified: ofbiz/trunk/applications/accounting/config/ > AccountingUiLabels.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/accounting/config/ > AccountingUiLabels.xml (original) > +++ ofbiz/trunk/applications/accounting/config/ > AccountingUiLabels.xml Wed Apr 22 06:50:16 2009 > @@ -6390,6 +6390,9 @@ > <value xml:lang="th">à¸à¸±à¸à¸«à¸²à¸¡à¸µà¸à¸¥à¸à¹à¸ > à¹à¸à¸£à¹à¸à¸£à¸¡à¸à¸£à¸°à¸¢à¸¸à¸à¸à¹à¹à¸à¹à¸à¸²à¸ > £à¸à¸³à¸£à¸°à¹à¸à¸´à¸à¸ªà¸³à¸«à¸£à¸±à¸à¸£à¸«à¸±à¸ªà¸à¸²à¸ > £à¸à¸³à¸£à¸°à¹à¸à¸´à¸ [${invoiceId}]</value> > <value xml:lang="zh">为å票ç¼å·[$ > {invoiceId}]è·å¾æ¯ä»åºç¨æ¶åºé</value> > </property> > + <property key="AccountingProblemGettingShipmentItemBilling"> > + <value xml:lang="en">Problem getting ShipmentItemBilling > records</value> > + </property> > <property key="AccountingProblemLookingUpOrderItemBilling"> > <value xml:lang="en">Problem looking up OrderItemBilling > records for ${billFields}</value> > <value xml:lang="es">Problema buscando Elemento de orden de > facturación para ${billFields}</value> > > Modified: ofbiz/trunk/applications/accounting/servicedef/ > services_invoice.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/accounting/servicedef/ > services_invoice.xml (original) > +++ ofbiz/trunk/applications/accounting/servicedef/ > services_invoice.xml Wed Apr 22 06:50:16 2009 > @@ -152,7 +152,7 @@ > </description> > <attribute name="orderId" type="String" mode="IN" > optional="false"/> > <attribute name="billItems" type="List" mode="IN" > optional="false"/> > - <attribute name="invoiceId" type="String" mode="OUT" > optional="true"/> > + <attribute name="invoiceId" type="String" mode="INOUT" > optional="true"/> > <attribute name="invoiceTypeId" type="String" mode="OUT" > optional="true"/> > </service> > <service name="createInvoiceFromReturn" engine="java" > > Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/ > accounting/invoice/InvoiceServices.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ > invoice/InvoiceServices.java (original) > +++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ > invoice/InvoiceServices.java Wed Apr 22 06:50:16 2009 > @@ -151,6 +151,7 @@ > > String orderId = (String) context.get("orderId"); > List billItems = (List) context.get("billItems"); > + String invoiceId = (String) context.get("invoiceId"); > boolean previousInvoiceFound = false; > > if (billItems == null || billItems.size() == 0) { > @@ -241,6 +242,7 @@ > } > > // create the invoice record > + if (UtilValidate.isEmpty(invoiceId)) { > Map createInvoiceContext = FastMap.newInstance(); > createInvoiceContext.put("partyId", > billToCustomerPartyId); > createInvoiceContext.put("partyIdFrom", > billFromVendorPartyId); > @@ -260,7 +262,8 @@ > } > > // call service, not direct entity op: > delegator.create(invoice); > - String invoiceId = (String) > createInvoiceResult.get("invoiceId"); > + invoiceId = (String) > createInvoiceResult.get("invoiceId"); > + } > > // order roles to invoice roles > List orderRoles = orderHeader.getRelated("OrderRole"); > @@ -491,6 +494,8 @@ > } > > if > ("ItemIssuance".equals(currentValue.getEntityName())) { > + List<GenericValue> shipmentItemBillings = > delegator.findByAnd("ShipmentItemBilling", > UtilMisc.toMap("shipmentId", currentValue.get("shipmentId"))); > + if (UtilValidate.isEmpty(shipmentItemBillings)) { > > // create the ShipmentItemBilling record > GenericValue shipmentItemBilling = > delegator.makeValue("ShipmentItemBilling", > UtilMisc.toMap("invoiceId", invoiceId, "invoiceItemSeqId", > invoiceItemSeqId)); > @@ -498,6 +503,7 @@ > shipmentItemBilling.put("shipmentItemSeqId", > currentValue.get("shipmentItemSeqId")); > shipmentItemBilling.create(); > } > + } > > String parentInvoiceItemSeqId = invoiceItemSeqId; > // increment the counter > @@ -1538,8 +1544,22 @@ > Debug.logInfo(UtilProperties.getMessage(resource, > "AccountingIgnoringAdditionalShipCharges", > productStore.getAllFields(), locale), module); > } > > + String invoiceId = null; > + List<GenericValue> shipmentItemBillings = null; > + String shipmentId = (String) shipmentIds.get(0); > + try { > + shipmentItemBillings = > delegator.findByAnd("ShipmentItemBilling", > UtilMisc.toMap("shipmentId", shipmentId)); > + } catch ( GenericEntityException e ) { > + String errMsg = UtilProperties.getMessage(resource, > "AccountingProblemGettingShipmentItemBilling", locale); > + return ServiceUtil.returnError(errMsg); > + } > + if (UtilValidate.isNotEmpty(shipmentItemBillings)) { > + GenericValue shipmentItemBilling = > EntityUtil.getFirst(shipmentItemBillings); > + invoiceId = > shipmentItemBilling.getString("invoiceId"); > + } > + > // call the createInvoiceForOrder service for each order > - Map serviceContext = UtilMisc.toMap("orderId", orderId, > "billItems", toBillItems, "userLogin", context.get("userLogin")); > + Map serviceContext = UtilMisc.toMap("orderId", orderId, > "billItems", toBillItems, "invoiceId", invoiceId, "userLogin", > context.get("userLogin")); > try { > Map result = > dispatcher.runSync("createInvoiceForOrder", serviceContext); > invoicesCreated.add(result.get("invoiceId")); > > Modified: ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml > (original) > +++ ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml Wed > Apr 22 06:50:16 2009 > @@ -334,6 +334,9 @@ > <value xml:lang="th">ERROR : à¸à¹à¸ à¸à¸´à¸à¸à¸¥à¸²à¸ ! > </value> > <value xml:lang="zh">é误ï¼</value> > </property> > + <property key="OrderErrorAllItemsOfOrderAreAlreadyVerified"> > + <value xml:lang="en">ERROR: All items of order #${orderId} > are already verified</value> > + </property> > <property > key="OrderErrorCallingCountProductQuantityOrderedService"> > <value xml:lang="en">Error calling > countProductQuantityOrdered service : </value> > <value xml:lang="es">Error al llamar al servicio > countProductQuantityOrdered:</value> > @@ -685,6 +688,12 @@ > <value xml:lang="ru">ÐШÐÐÐÐ: ÐозиÑÐ¸Ñ Ð·Ð°ÐºÐ°Ð·Ð > ° Ñ ÐºÐ¾Ð´Ð¾Ð¼ [${orderId}] и orderItemSeqId [${orderItemSeqId}] > не найденÑ</value> > <value xml:lang="th">ERROR : à¸à¹à¸ à¸à¸´à¸à¸à¸ > ¥à¸²à¸ ! รายà¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸ à¸à¹à¸§à¸¢à¸ > £à¸«à¸±à¸ª [${orderId}] à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸ > ±à¹à¸à¸à¸·à¹à¸ [${orderItemSeqId}] à¹à¸¡à¹à¸à¸</value> > </property> > + <property key="OrderErrorOrderNotApprovedForPacking"> > + <value xml:lang="en">ERROR: Order #${orderId} is not > approved for packing</value> > + </property> > + <property key="OrderErrorOrderNotApprovedForPicking"> > + <value xml:lang="en">ERROR: Order #${orderId} is not > approved for picking</value> > + </property> > <property key="OrderErrorOrderNotPurchaseOrder"> > <value xml:lang="en">Order ${orderId} is not a Purchase > Order</value> > <value xml:lang="es">El pedido ${orderId} no es un pedido de > compra</value> > @@ -693,6 +702,9 @@ > <value xml:lang="ru">Ðаказ ${orderId} не > ÑвлÑеÑÑÑ Ð·Ð°ÐºÑпоÑнÑм заказом</value> > <value xml:lang="th">à¹à¸à¸ªà¸±à¹à¸à¸à¸·à¹à¸ สภ> ´à¸à¸à¹à¸² ${orderId} à¹à¸¡à¹à¹à¸à¹à¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸ > ±à¹à¸à¸à¸·à¹à¸ </value> > </property> > + <property key="OrderErrorOrderNotVerifiedForPacking"> > + <value xml:lang="en">ERROR: Order #${orderId} is not > verified for packing</value> > + </property> > <property key="OrderErrorOrderTypeLookupFailed"> > <value xml:lang="en">ERROR : OrderType lookup failed : </ > value> > <value xml:lang="es">ERROR: La búsqueda ha fallado :</value> > > Modified: ofbiz/trunk/applications/product/config/ > ProductErrorUiLabels.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml > (original) > +++ ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml > Wed Apr 22 06:50:16 2009 > @@ -55,6 +55,9 @@ > <value xml:lang="en">Error Inventory Item Label Id Not > Found</value> > <value xml:lang="it">Errore riga etichetta inventario non > trovata</value> > </property> > + <property > key="ProductErrorNoShipGroupSequenceIdFoundCannotProcess"> > + <value xml:lang="en">ERROR: No ship group sequence Id found > cannot process</value> > + </property> > <property key="ProductFeatureTypeIdMustContainsLettersAndDigits"> > <value xml:lang="de">Die Produktmerkmal Typ ID darf nur > Buchstaben, Zahlen und _ enthalten. Bitte erneut eingeben.</value> > <value xml:lang="en">The Product Feature TypeId must > contains only letters, underscore and digits. Please re-enter</value> > > Modified: ofbiz/trunk/applications/product/servicedef/ > services_shipment.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/servicedef/ > services_shipment.xml (original) > +++ ofbiz/trunk/applications/product/servicedef/ > services_shipment.xml Wed Apr 22 06:50:16 2009 > @@ -562,6 +562,9 @@ > location="org.ofbiz.shipment.packing.PackingServices" > invoke="completePack" auth="true"> > <description>Complete the packging set the shipment to > PACKED</description> > <attribute name="packingSession" > type="org.ofbiz.shipment.packing.PackingSession" mode="IN" > optional="false"/> > + <attribute name="orderId" type="String" mode="IN" > optional="true"/> > + <attribute name="invoiceId" type="String" mode="IN" > optional="true"/> > + <attribute name="shipmentId" type="String" mode="IN" > optional="true"/> > <attribute name="handlingInstructions" type="String" > mode="IN" optional="true"/> > <attribute name="pickerPartyId" type="String" mode="IN" > optional="true"/> > <attribute name="additionalShippingCharge" type="BigDecimal" > mode="IN" optional="true"/> > > Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/ > packing/PackingServices.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingServices.java?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingServices.java (original) > +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingServices.java Wed Apr 22 06:50:16 2009 > @@ -271,11 +271,16 @@ > PackingSession session = (PackingSession) > context.get("packingSession"); > > // set the instructions -- will clear out previous if now null > + String orderId = (String) context.get("orderId"); > + String shipmentId = (String) context.get("shipmentId"); > + String invoiceId = (String) context.get("invoiceId"); > String instructions = (String) > context.get("handlingInstructions"); > String pickerPartyId = (String) context.get("pickerPartyId"); > BigDecimal additionalShippingCharge = (BigDecimal) > context.get("additionalShippingCharge"); > Map<String, String> packageWeights = > UtilGenerics.checkMap(context.get("packageWeights")); > String weightUomId = (String) context.get("weightUomId"); > + session.setShipmentId(shipmentId); > + session.setInvoiceId(invoiceId); > session.setHandlingInstructions(instructions); > session.setPickerPartyId(pickerPartyId); > session.setAdditionalShippingCharge(additionalShippingCharge); > @@ -287,9 +292,8 @@ > force = Boolean.FALSE; > } > > - String shipmentId = null; > try { > - shipmentId = session.complete(force); > + shipmentId = session.complete(force, orderId); > } catch (GeneralException e) { > Debug.logError(e, module); > return ServiceUtil.returnError(e.getMessage(), > e.getMessageList()); > > Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/ > packing/PackingSession.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingSession.java (original) > +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/ > PackingSession.java Wed Apr 22 06:50:16 2009 > @@ -60,6 +60,7 @@ > protected String shipmentId = null; > protected String instructions = null; > protected String weightUomId = null; > + protected String invoiceId = null; > protected BigDecimal additionalShippingCharge = null; > protected Map<Integer, BigDecimal> packageWeights = null; > protected List<PackingEvent> packEvents = null; > @@ -367,6 +368,18 @@ > return this.shipmentId; > } > > + public void setShipmentId(String shipmentId) { > + this.shipmentId = shipmentId; > + } > + > + public String getInvoiceId() { > + return this.invoiceId; > + } > + > + public void setInvoiceId(String invoiceId) { > + this.invoiceId = invoiceId; > + } > + > public List<PackingSessionLine> getLines() { > return this.packLines; > } > @@ -613,7 +626,7 @@ > this.runEvents(PackingEvent.EVENT_CODE_CLEAR); > } > > - public String complete(boolean force) throws GeneralException { > + public String complete(boolean force, String orderId) throws > GeneralException { > // clear out empty lines > // this.checkEmptyLines(); // removing, this seems to be > causeing issues - mja > > @@ -622,12 +635,16 @@ > return "EMPTY"; > } > > + this.checkPackedQty(orderId); > // check for errors > this.checkReservations(force); > // set the status to 0 > this.status = 0; > // create the shipment > - this.createShipment(); > + String shipmentId = this.getShipmentId(); > + if (UtilValidate.isEmpty(shipmentId)) { > + this.createShipment(); > + } > // create the packages > this.createPackages(); > // issue the items > @@ -646,6 +663,27 @@ > return this.shipmentId; > } > > + protected void checkPackedQty(String orderId) throws > GeneralException { > + int counter = 0; > + List<GenericValue> orderItems = null; > + for (PackingSessionLine line : this.getLines()) { > + orderItems = this.getDelegator().findByAnd("OrderItem", > UtilMisc.toMap("orderId", orderId)); > + for (GenericValue orderItem : orderItems) { > + if (orderId.equals(line.getOrderId())) { > + if > ((orderItem.get("orderItemSeqId")).equals(line.getOrderItemSeqId())) { > + BigDecimal packedQty = > this.getPackedQuantity(line.getOrderId(), line.getOrderItemSeqId(), > line.getShipGroupSeqId(), line.getProductId()); > + if > ((packedQty.compareTo(orderItem.getBigDecimal("quantity"))) == 0 ) { > + counter++; > + } > + } > + } > + } > + } > + if (((this.getLines().size()) != (orderItems.size())) || > (counter != (orderItems.size()))) { > + throw new GeneralException("All order items are not > packed"); > + } > + } > + > protected void checkReservations(boolean ignore) throws > GeneralException { > List<String> errors = FastList.newInstance(); > for (PackingSessionLine line: this.getLines()) { > > Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/ > verify/VerifyPickSession.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSession.java (original) > +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSession.java Wed Apr 22 06:50:16 2009 > @@ -140,14 +140,11 @@ > } > > public String complete(String orderId) throws GeneralException { > - String shipmentId = null; > String shipmentItemSeqId = null; > String invoiceId = null; > String invoiceItemSeqId = null; > - for (VerifyPickSessionRow line: this.getPickRows(orderId)) { > - shipmentId = this.createShipment(line); > - break; > - } > + this.checkVerifiedQty(orderId); > + String shipmentId = > this.createShipment((this.getPickRows(orderId)).get(0)); > for (VerifyPickSessionRow line: this.getPickRows(orderId)) { > shipmentItemSeqId = > this.createShipmentItem(line,shipmentId); > line.setShipmentItemSeqId(shipmentItemSeqId); > @@ -160,6 +157,24 @@ > return shipmentId; > } > > + protected void checkVerifiedQty(String orderId) throws > GeneralException { > + int counter = 0; > + List<GenericValue> orderItems = null; > + for (VerifyPickSessionRow line : this.getPickRows(orderId)) { > + orderItems = this.getDelegator().findByAnd("OrderItem", > UtilMisc.toMap("orderId", orderId)); > + for (GenericValue orderItem : orderItems) { > + if > ((orderItem.get("orderItemSeqId")).equals(line.getOrderSeqId())) { > + if > (((line > .getReadyToVerifyQty > ()).compareTo(orderItem.getBigDecimal("quantity"))) == 0 ) { > + counter++; > + } > + } > + } > + } > + if (counter != (orderItems.size())) { > + throw new GeneralException("All order items are not > verified"); > + } > + } > + > protected String createShipment(VerifyPickSessionRow line) > throws GeneralException { > Map<String, Object> newShipment = FastMap.newInstance(); > newShipment.put("originFacilityId", line.getFacilityId()); > @@ -202,11 +217,17 @@ > } > > protected String createInvoice(String orderId) throws > GeneralException { > + GenericDelegator delegator = this.getDelegator(); > Map createInvoiceContext = FastMap.newInstance(); > - createInvoiceContext.put("partyId", > (EntityUtil.getFirst(this.getDelegator().findByAnd("OrderRole", > UtilMisc.toMap("orderId", orderId, "roleTypeId", > "BILL_TO_CUSTOMER")))).getString("partyId")); > - createInvoiceContext.put("partyIdFrom", > (EntityUtil.getFirst(this.getDelegator().findByAnd("OrderRole", > UtilMisc.toMap("orderId", orderId, "roleTypeId", > "BILL_FROM_VENDOR")))).getString("partyId")); > + GenericValue orderHeader = delegator.findOne("OrderHeader", > UtilMisc.toMap("orderId", orderId), false); > + GenericValue billingAccount = > orderHeader.getRelatedOne("BillingAccount"); > + String billingAccountId = billingAccount != null ? > billingAccount.getString("billingAccountId") : null; > + createInvoiceContext.put("partyId", > (EntityUtil.getFirst(delegator.findByAnd("OrderRole", > UtilMisc.toMap("orderId", orderId, "roleTypeId", > "BILL_TO_CUSTOMER")))).getString("partyId")); > + createInvoiceContext.put("partyIdFrom", > (EntityUtil.getFirst(delegator.findByAnd("OrderRole", > UtilMisc.toMap("orderId", orderId, "roleTypeId", > "BILL_FROM_VENDOR")))).getString("partyId")); > + createInvoiceContext.put("billingAccountId", > billingAccountId); > createInvoiceContext.put("invoiceTypeId", "SALES_INVOICE"); > createInvoiceContext.put("statusId", "INVOICE_IN_PROCESS"); > + createInvoiceContext.put("currencyUomId", > orderHeader.getString("currencyUom")); > createInvoiceContext.put("userLogin", this.getUserLogin()); > Map createInvoiceResult = > this.getDispatcher().runSync("createInvoice", createInvoiceContext); > if (ServiceUtil.isError(createInvoiceResult)) { > > Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/ > verify/VerifyPickSessionRow.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSessionRow.java?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSessionRow.java (original) > +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/ > VerifyPickSessionRow.java Wed Apr 22 06:50:16 2009 > @@ -50,6 +50,7 @@ > this.orderItem = orderItem; > this.rowItem = rowItem; > this.shipmentItemSeqId = null; > + this.invoiceItemSeqId = null; > } > > public String getOrderId() { > > Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/ > actions/shipment/PackOrder.groovy > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.groovy?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/PackOrder.groovy (original) > +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/PackOrder.groovy Wed Apr 22 06:50:16 2009 > @@ -115,6 +115,16 @@ > context.shipGroupSeqId = shipGroupSeqId; > context.picklistBinId = picklistBinId; > > +shipment = EntityUtil.getFirst(delegator.findByAnd("Shipment", > [primaryOrderId : orderId, statusId : "SHIPMENT_PICKED"])); > +context.shipment = shipment; > + > +if (shipment) { > + invoice = > EntityUtil.getFirst(delegator.findByAnd("ShipmentItemBilling", > [shipmentId : shipment.shipmentId])); > + context.invoice = invoice; > +} else { > + context.invoice = null; > +} > + > // grab the order information > if (orderId) { > orderHeader = delegator.findOne("OrderHeader", [orderId : > orderId], false); > @@ -128,6 +138,7 @@ > > if ("ORDER_APPROVED".equals(orderHeader.statusId)) { > if (shipGroupSeqId) { > + if (shipment) { > > // Generate the shipment cost estimate for the ship > group > productStoreId = orh.getProductStoreId(); > @@ -145,13 +156,16 @@ > //context.put("itemInfos", shippableItemInfo); > } > } else { > - request.setAttribute("errorMessageList", ['No ship > group sequence ID. Cannot process.']); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorOrderNotVerifiedForPacking", [orderId : orderId], locale)); > + } > + } else { > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("ProductErrorUiLabels", > "ProductErrorNoShipGroupSequenceIdFoundCannotProcess", locale)); > } > } else { > - request.setAttribute("errorMessageList", ["Order #" + > orderId + " is not approved for packing."]); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorOrderNotApprovedForPacking", [orderId : orderId], locale)); > } > } else { > - request.setAttribute("errorMessageList", ["Order #" + > orderId + " cannot be found."]); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorOrderIdNotFound", [orderId : orderId], locale)); > } > } > > > Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/ > actions/shipment/VerifyPick.groovy > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/VerifyPick.groovy?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/VerifyPick.groovy (original) > +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/ > shipment/VerifyPick.groovy Wed Apr 22 06:50:16 2009 > @@ -17,9 +17,10 @@ > * under the License. > */ > > -import org.ofbiz.order.order.OrderReadHelper; > +import org.ofbiz.base.util.UtilProperties; > import org.ofbiz.entity.util.EntityUtil; > import org.ofbiz.entity.condition.EntityCondition; > +import org.ofbiz.order.order.OrderReadHelper; > import org.ofbiz.shipment.verify.VerifyPickSession; > > verifyPickSession = session.getAttribute("verifyPickSession"); > @@ -42,6 +43,7 @@ > invoiceIds = > EntityUtil.getFieldListFromEntityList(shipmentItemBillingList, > "invoiceId", true); > if (invoiceIds) { > context.invoiceIds = invoiceIds; > + parameters.orderId = null; > } > } > } > @@ -90,14 +92,18 @@ > if (shipGroupSeqId) { > productStoreId = orh.getProductStoreId(); > context.productStoreId = productStoreId; > + shipments = delegator.findByAnd("Shipment", > [primaryOrderId : orderId, statusId : "SHIPMENT_PICKED"]); > + if (shipments) { > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorAllItemsOfOrderAreAlreadyVerified", [orderId : orderId], > locale)); > + } > } else { > - request.setAttribute("errorMessageList", ['No ship > group sequence ID. Cannot process.']); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("ProductErrorUiLabels", > "ProductErrorNoShipGroupSequenceIdFoundCannotProcess", locale)); > } > } else { > - request.setAttribute("errorMessageList", ["Order #" + > orderId + " is not approved for picking."]); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorOrderNotApprovedForPicking", [orderId : orderId], locale)); > } > } else { > - request.setAttribute("errorMessageList", ["Order #" + > orderId + " cannot be found."]); > + request.setAttribute("_ERROR_MESSAGE_", > UtilProperties.getMessage("OrderErrorUiLabels", > "OrderErrorOrderIdNotFound", [orderId : orderId], locale)); > } > } > context.verifyPickSession = verifyPickSession; > \ No newline at end of file > > Modified: ofbiz/trunk/applications/product/webapp/facility/shipment/ > PackOrder.ftl > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl?rev=767394&r1=767393&r2=767394&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- ofbiz/trunk/applications/product/webapp/facility/shipment/ > PackOrder.ftl (original) > +++ ofbiz/trunk/applications/product/webapp/facility/shipment/ > PackOrder.ftl Wed Apr 22 06:50:16 2009 > @@ -21,7 +21,7 @@ > <#assign showInput = requestParameters.showInput?default("Y")> > <#assign hideGrid = requestParameters.hideGrid?default("N")> > > - <#if (requestParameters.forceComplete?has_content && ! > shipmentId?has_content)> > + <#if (requestParameters.forceComplete?has_content && ! > invoiceIds?has_content)> > <#assign forceComplete = "true"> > <#assign showInput = "Y"> > </#if> > @@ -33,12 +33,11 @@ > <br class="clear"/> > </div> > <div class="screenlet-body"> > - <#if shipmentId?has_content> > + <#if shipmentId?has_content && invoiceIds?exists && > invoiceIds?has_content> > <div> > ${uiLabelMap.CommonView} <a href="<@ofbizUrl>/ > PackingSlip.pdf?shipmentId=${shipmentId}</@ofbizUrl>" > target="_blank" class="buttontext">${uiLabelMap.ProductPackingSlip}</ > a> ${uiLabelMap.CommonOr} > ${uiLabelMap.CommonView} <a href="<@ofbizUrl>/ > ShipmentBarCode.pdf?shipmentId=${shipmentId}</@ofbizUrl>" > target="_blank" class="buttontext">${uiLabelMap.ProductBarcode}</a> $ > {uiLabelMap.CommonFor} ${uiLabelMap.ProductShipmentId} <a > href="<@ofbizUrl>/ViewShipment?shipmentId=${shipmentId}</@ofbizUrl>" > class="buttontext">${shipmentId}</a> > </div> > - <#if invoiceIds?exists && invoiceIds?has_content> > <div> > <p>${uiLabelMap.AccountingInvoices}:</p> > <ul> > @@ -50,7 +49,6 @@ > </#list> > </ul> > </div> > - </#if> > </#if> > <br/> > > @@ -115,6 +113,7 @@ > </div> > </div> > > + <#if ((shipment?has_content) && (shipment.shipmentId)?exists)> > <#if showInput != "N" && ((orderHeader?exists && orderHeader? > has_content))> > <div class="screenlet"> > <div class="screenlet-title-bar"> > @@ -329,6 +328,8 @@ > <input type="hidden" name="facilityId" value="$ > {facilityId?if_exists}"/> > <input type="hidden" name="forceComplete" value="$ > {forceComplete?default('false')}"/> > <input type="hidden" name="weightUomId" value="$ > {defaultWeightUomId}"/> > + <input type="hidden" name="shipmentId" value="$ > {(shipment.shipmentId)?default("")}"/> > + <input type="hidden" name="invoiceId" value="$ > {(invoice.invoiceId)?default("")}"/> > <input type="hidden" name="showInput" value="N"/> > <hr> > <table class="basic-table" cellpadding="2" > cellspacing='0'> > @@ -490,6 +491,7 @@ > </#if> > </div> > </div> > + </#if> > <#else> > <h3>${uiLabelMap.ProductFacilityViewPermissionError}</h3> > </#if> > \ No newline at end of file > > smime.p7s (3K) Download Attachment |
On Apr 22, 2009, at 12:50 AM, [hidden email] wrote: > Author: mor > Date: Wed Apr 22 06:50:16 2009 > New Revision: 767394 > > URL: http://svn.apache.org/viewvc?rev=767394&view=rev > Log: > Facilitate packing screen to use verified orders from Verify Pick > screen by using existing shipment and invoice. > Patch from Akash Jain (reviewed and tested by Pranay Pandey), Part > of OFBIZ-2329 (https://issues.apache.org/jira/browse/OFBIZ-2329). > > Note: I have done little modifications to the new labels part of > this patch. > > This issue completes the functionality of the Verify Pick feature > added recently. I would like to port these changes to release09.04 > later today > if I do not see any objections. No, these changes should NOT be migrated to the release branch. That violates the general intent of the release branch which is that only bug fixes should go there (ie no new functionality, which is what this is). For more information please read the Release Plan document: http://docs.ofbiz.org/display/OFBADMIN/Release+Plan -David |
I have reverted these changes in release09.04 branch in r767590
following your suggestion, David. Thanks! Vikas On Apr 22, 2009, at 1:35 PM, David E Jones wrote: > > On Apr 22, 2009, at 12:50 AM, [hidden email] wrote: > >> Author: mor >> Date: Wed Apr 22 06:50:16 2009 >> New Revision: 767394 >> >> URL: http://svn.apache.org/viewvc?rev=767394&view=rev >> Log: >> Facilitate packing screen to use verified orders from Verify Pick >> screen by using existing shipment and invoice. >> Patch from Akash Jain (reviewed and tested by Pranay Pandey), Part >> of OFBIZ-2329 (https://issues.apache.org/jira/browse/OFBIZ-2329). >> >> Note: I have done little modifications to the new labels part of >> this patch. >> >> This issue completes the functionality of the Verify Pick feature >> added recently. I would like to port these changes to release09.04 >> later today >> if I do not see any objections. > > No, these changes should NOT be migrated to the release branch. That > violates the general intent of the release branch which is that only > bug fixes should go there (ie no new functionality, which is what > this is). > > For more information please read the Release Plan document: > > http://docs.ofbiz.org/display/OFBADMIN/Release+Plan > > -David > smime.p7s (3K) Download Attachment |
Thanks for doing that Vikas. It is a bummer that neat new things don't go into the release branch, but really stability is the priority over new functionality. If people want the priority on new functionality (and want to be able to collaborate with others on building things) then the trunk is the way to go. On a more controversial note: IMO there is an ironic thing that happens with the trunk versus the release branches. Because most people want lots of new functionality and want to collaborate with others on building things, the trunk gets a much larger user base than any release branch, and because of that often ends up being more "bug- free" in spite of not being as stable. Anyway, onward and upward! -David On Apr 22, 2009, at 11:18 AM, Vikas Mayur wrote: > I have reverted these changes in release09.04 branch in r767590 > following your suggestion, David. Thanks! > > Vikas > > On Apr 22, 2009, at 1:35 PM, David E Jones wrote: > >> >> On Apr 22, 2009, at 12:50 AM, [hidden email] wrote: >> >>> Author: mor >>> Date: Wed Apr 22 06:50:16 2009 >>> New Revision: 767394 >>> >>> URL: http://svn.apache.org/viewvc?rev=767394&view=rev >>> Log: >>> Facilitate packing screen to use verified orders from Verify Pick >>> screen by using existing shipment and invoice. >>> Patch from Akash Jain (reviewed and tested by Pranay Pandey), Part >>> of OFBIZ-2329 (https://issues.apache.org/jira/browse/OFBIZ-2329). >>> >>> Note: I have done little modifications to the new labels part of >>> this patch. >>> >>> This issue completes the functionality of the Verify Pick feature >>> added recently. I would like to port these changes to release09.04 >>> later today >>> if I do not see any objections. >> >> No, these changes should NOT be migrated to the release branch. >> That violates the general intent of the release branch which is >> that only bug fixes should go there (ie no new functionality, which >> is what this is). >> >> For more information please read the Release Plan document: >> >> http://docs.ofbiz.org/display/OFBADMIN/Release+Plan >> >> -David >> > |
Free forum by Nabble | Edit this page |