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">à¸>ัà¸à¸«à¸²à¸¡à¸µà¸oลà¸.à¹^ภà¹,à¸>รà¹à¸à¸£à¸¡à¸>ระยุà¸à¸.à¹Oà¹fà¸Sà¹?à¸à¸²à¸
£à¸Sำระà¹?à¸?ิà¸Tสำหรัà¸sรหัสà¸à¸²à¸ £à¸Sำระà¹?à¸?ิà¸T [${invoiceId}]</value>
<value xml:lang="zh">为å'票ç¼-å·[$
{invoiceId}]èZ·å¾-æ"¯ä»~åº"ç"¨æ-¶å?ºé"T</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 : à¸,à¹?ภà¸oิà¸"à¸zลาà¸" ! </value>
<value xml:lang="zh">é"T误ï¼s</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">ÐzШÐ~Ð'ÐsÐ: ÐYозиÑ?Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð ° Ñ ÐºÐ¾Ð´Ð¾Ð¼ [${orderId}] и orderItemSeqId
[${orderItemSeqId}] не найденÑ<</value>
<value xml:lang="th">ERROR : à¸,à¹?ภà¸oิà¸"à¸zภ¥à¸²à¸" ! รายà¸à¸²à¸£à¸ªà¸±à¹^à¸?à¸<ืà¹?ภà¸"à¹?วยà¸
£à¸«à¸±à¸ª [${orderId}] à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸ ±à¹^à¸?à¸<ืà¹?ภ[${orderItemSeqId}]
à¹"มà¹^à¸zà¸s</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} не ÑвлÑеÑ,ÑÑ
закÑfпоÑ?нÑ<м заказом</value>
<value xml:lang="th">à¹fà¸sสัà¹^à¸?à¸<ืà¹?ภสภ´à¸Tà¸"à¹?า ${orderId} à¹"มà¹^à¹?à¸>à¹?à¸Tรายà¸à¸²à¸
£à¸ªà¸±à¹^à¸?à¸<ืà¹?ภ</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