details: /erp/devel/pi/rev/519541e1ea40
changeset: 12230:519541e1ea40
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed May 18 16:40:48 2011 +0200
summary: Fixes issue 17248: When multiple parents are selected, the child
grid should not show lines
diffstat:
modules/org.openbravo.client.application/src/org/openbravo/client/application/businesslogic/ClonePropertyActionHandler.java
| 242 ++++++++++
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
| 2 +-
2 files changed, 243 insertions(+), 1 deletions(-)
diffs (258 lines):
diff -r e83f6882cd02 -r 519541e1ea40
modules/org.openbravo.client.application/src/org/openbravo/client/application/businesslogic/ClonePropertyActionHandler.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/businesslogic/ClonePropertyActionHandler.java
Wed May 18 16:40:48 2011 +0200
@@ -0,0 +1,242 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.1 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2011 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s): Sreedhar Sirigiri (TDS), Mallikarjun M (TDS)
+ ************************************************************************
+ */
+package org.openbravo.client.application.businesslogic;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.base.provider.OBProvider;
+import org.openbravo.client.kernel.BaseActionHandler;
+import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.dal.service.OBQuery;
+import org.openbravo.model.common.order.Order;
+import org.openbravo.model.common.order.OrderLine;
+import org.openbravo.model.pricing.pricelist.PriceListVersion;
+import org.openbravo.service.db.CallStoredProcedure;
+import org.openbravo.service.json.DataResolvingMode;
+import org.openbravo.service.json.DataToJsonConverter;
+
+/**
+ * Clone an existing sales order.
+ *
+ * @author Mallikarjun M
+ *
+ */
+public class ClonePropertyActionHandler extends BaseActionHandler {
+
+ protected JSONObject execute(Map<String, Object> parameters, String data) {
+ OBContext.setAdminMode();
+ final DataToJsonConverter jsonConverter = new DataToJsonConverter();
+ JSONObject json = null;
+ try {
+ String orderId = (String) parameters.get("orderId");
+ Order objOrder = OBDal.getInstance().get(Order.class, orderId);
+ Order objCloneOrder = OBProvider.getInstance().get(Order.class);
+ objCloneOrder.setNewOBObject(true);
+ objCloneOrder.setOrganization(objOrder.getOrganization());
+ objCloneOrder.setOrderDate(objOrder.getOrderDate());
+ objCloneOrder.setOrderReference(objOrder.getOrderReference());
+ objCloneOrder.setDescription(objOrder.getDescription());
+
objCloneOrder.setScheduledDeliveryDate(objOrder.getScheduledDeliveryDate());
+ objCloneOrder.setBusinessPartner(objOrder.getBusinessPartner());
+ objCloneOrder.setPartnerAddress(objOrder.getPartnerAddress());
+ objCloneOrder.setUserContact(objOrder.getUserContact());
+ objCloneOrder.setSalesRepresentative(objOrder.getSalesRepresentative());
+ objCloneOrder.setDeliveryLocation(objOrder.getDeliveryLocation());
+ objCloneOrder.setInvoiceTerms(objOrder.getInvoiceTerms());
+ objCloneOrder.setWarehouse(objOrder.getWarehouse());
+ objCloneOrder.setPriceList(objOrder.getPriceList());
+ objCloneOrder.setCurrency(objOrder.getCurrency());
+ objCloneOrder.setDeliveryMethod(objOrder.getDeliveryMethod());
+ objCloneOrder.setPriority(objOrder.getPriority());
+ objCloneOrder.setShippingCompany(objOrder.getShippingCompany());
+ objCloneOrder.setFreightAmount(objOrder.getFreightAmount());
+ objCloneOrder.setFreightCostRule(objOrder.getFreightCostRule());
+ objCloneOrder.setCharge(objOrder.getCharge());
+ objCloneOrder.setChargeAmount(objOrder.getChargeAmount());
+ objCloneOrder.setPaymentMethod(objOrder.getPaymentMethod());
+ objCloneOrder.setPaymentTerms(objOrder.getPaymentTerms());
+ objCloneOrder.setActivity(objOrder.getActivity());
+ objCloneOrder.setProject(objOrder.getProject());
+ objCloneOrder.setSalesCampaign(objOrder.getSalesCampaign());
+ objCloneOrder.setFormOfPayment(objOrder.getFormOfPayment());
+ objCloneOrder.setTrxOrganization(objOrder.getTrxOrganization());
+ objCloneOrder.setUpdatedBy(objOrder.getUpdatedBy());
+ objCloneOrder.setCreatedBy(objOrder.getCreatedBy());
+ objCloneOrder.setSummedLineAmount(new BigDecimal("0"));//
+ objCloneOrder.setGrandTotalAmount(new BigDecimal("0"));//
+ objCloneOrder.setDocumentType(objOrder.getDocumentType());
+ objCloneOrder.setCopyFrom(objOrder.isCopyFrom());
+ objCloneOrder.setCopyFromPO(objOrder.isCopyFromPO());
+ objCloneOrder.setDeliveryNotes(objOrder.getDeliveryNotes());
+ objCloneOrder.setActive(objOrder.isActive());
+ objCloneOrder.setClient(objOrder.getClient());
+ objCloneOrder.setDelivered(objOrder.isDelivered());
+ objCloneOrder.setPrint(objOrder.isPrint());
+ objCloneOrder.setPrintDiscount(objOrder.isPrintDiscount());
+ objCloneOrder.setAccountingDate(objOrder.getAccountingDate());
+ objCloneOrder.setDatePrinted(objOrder.getDatePrinted());
+ objCloneOrder.setSelected(objOrder.isSelected());
+ objCloneOrder.setDropShipContact(objOrder.getDropShipContact());
+ objCloneOrder.setDropShipLocation(objOrder.getDropShipLocation());
+ objCloneOrder.setDropShipPartner(objOrder.getDropShipPartner());
+ objCloneOrder.setSelfService(objOrder.isSelfService());
+ objCloneOrder.setGenerateTemplate(objOrder.isGenerateTemplate());
+ objCloneOrder.setIncoterms(objOrder.getIncoterms());
+
objCloneOrder.setINCOTERMSDescription(objOrder.getINCOTERMSDescription());
+ objCloneOrder.setCreationDate(new java.util.Date());
+ objCloneOrder.setUpdated(new java.util.Date());
+ objCloneOrder.setDelivered(objOrder.isDelivered());
+ objCloneOrder.setDeliveryLocation(objOrder.getDeliveryLocation());
+ objCloneOrder.setInvoiceAddress(objOrder.getInvoiceAddress());
+ objCloneOrder.setDocumentAction("CO");
+ objCloneOrder.setDocumentStatus("DR");
+ objCloneOrder.setPosted("N");
+ objCloneOrder.setProcessed(false);
+ objCloneOrder.setSalesTransaction(true);
+ objCloneOrder.setTransactionDocument(objOrder.getTransactionDocument());
+ // save the cloned order object
+ OBDal.getInstance().save(objCloneOrder);
+ // get the lines associated with the order and clone them to the new
+ // order line.
+ List<OrderLine> lsOrderLines = getOrderLines(objOrder);
+
+ for (OrderLine ol : lsOrderLines) {
+ String strPriceVersionId =
getPriceListVersion(objOrder.getPriceList().getId(), objOrder
+ .getClient().getId());
+ BigDecimal bdPriceList = getPriceList(ol.getProduct().getId(),
strPriceVersionId);
+ OrderLine objOrdLine = OBProvider.getInstance().get(OrderLine.class);
+ objOrdLine.setNewOBObject(true);
+ objOrdLine.setLineNo(ol.getLineNo());
+ objOrdLine.setClient(ol.getClient());
+ objOrdLine.setOrganization(ol.getOrganization());
+ objOrdLine.setActive(ol.isActive());
+ objOrdLine.setCreationDate(new java.util.Date());
+ objOrdLine.setCreatedBy(ol.getCreatedBy());
+ objOrdLine.setUpdated(new java.util.Date());
+ objOrdLine.setUpdatedBy(ol.getUpdatedBy());
+ objOrdLine.setSalesOrder(objCloneOrder);
+ objOrdLine.setBusinessPartner(ol.getBusinessPartner());
+ objOrdLine.setPartnerAddress(ol.getPartnerAddress());
+ objOrdLine.setOrderDate(ol.getOrderDate());
+ objOrdLine.setScheduledDeliveryDate(ol.getScheduledDeliveryDate());
+ objOrdLine.setDateDelivered(ol.getDateDelivered());
+ objOrdLine.setInvoiceDate(ol.getInvoiceDate());
+ objOrdLine.setDescription(ol.getDescription());
+ objOrdLine.setProduct(ol.getProduct());
+ objOrdLine.setWarehouse(ol.getWarehouse());
+ objOrdLine.setDirectShipment(ol.isDirectShipment());
+ objOrdLine.setUOM(ol.getUOM());
+ objOrdLine.setOrderedQuantity(ol.getOrderedQuantity());
+ objOrdLine.setReservedQuantity(new BigDecimal("0"));//
+ objOrdLine.setDeliveredQuantity(new BigDecimal("0"));//
+ objOrdLine.setInvoicedQuantity(new BigDecimal("0"));//
+ objOrdLine.setShippingCompany(ol.getShippingCompany());
+ objOrdLine.setCurrency(ol.getCurrency());
+ objOrdLine.setListPrice(bdPriceList);//
+ objOrdLine.setUnitPrice(ol.getUnitPrice());
+ objOrdLine.setPriceLimit(ol.getPriceLimit());
+ objOrdLine.setLineNetAmount(ol.getLineNetAmount());
+ objOrdLine.setDiscount(ol.getDiscount());
+ objOrdLine.setFreightAmount(ol.getFreightAmount());
+ objOrdLine.setCharge(ol.getCharge());
+ objOrdLine.setChargeAmount(ol.getChargeAmount());
+ objOrdLine.setTax(ol.getTax());
+ objOrdLine.setResourceAssignment(ol.getResourceAssignment());
+ objOrdLine.setSOPOReference(ol.getSOPOReference());
+ objOrdLine.setAttributeSetValue(ol.getAttributeSetValue());
+ objOrdLine.setDescriptionOnly(ol.isDescriptionOnly());
+ objOrdLine.setOrderQuantity(ol.getOrderQuantity());
+ objOrdLine.setOrderUOM(ol.getOrderUOM());
+ objOrdLine.setPriceAdjustment(ol.getPriceAdjustment());
+ objOrdLine.setStandardPrice(ol.getStandardPrice());
+ objOrdLine.setCancelPriceAdjustment(ol.isCancelPriceAdjustment());
+ objOrdLine.setOrderDiscount(ol.getOrderDiscount());
+ objOrdLine.setTaxableAmount(ol.getTaxableAmount());
+ objOrdLine.setEditLineAmount(ol.isEditLineAmount());
+ OBDal.getInstance().save(objOrdLine);
+ }
+ OBDal.getInstance().flush();
+ json = jsonConverter.toJsonObject(objCloneOrder, DataResolvingMode.FULL);
+ OBDal.getInstance().commitAndClose();
+ return json;
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ OBContext.restorePreviousMode();
+ }
+ return json;
+ }
+
+ /**
+ * @param objOrder
+ * @return
+ * @throws ServletException
+ */
+ private List<OrderLine> getOrderLines(Order objOrder) throws
ServletException {
+ String whereClause = "salesOrder = :objOrder";
+ OBQuery<OrderLine> qOrderLines =
OBDal.getInstance().createQuery(OrderLine.class, whereClause);
+ qOrderLines.setNamedParameter("objOrder", objOrder);
+ return qOrderLines.list();
+ }
+
+ private String getPriceListVersion(String priceList, String clientId) {
+ OBContext.setAdminMode();
+ try {
+ String whereClause = " as plv , PricingPriceList pl where pl.id=plv.id
and plv.active='Y' and "
+ + " pl.id = :priceList and plv.client.id = :clientId order by
plv.validFromDate desc";
+
+ OBQuery<PriceListVersion> ppriceListVersion =
OBDal.getInstance().createQuery(
+ PriceListVersion.class, whereClause);
+ ppriceListVersion.setNamedParameter("priceList", priceList);
+ ppriceListVersion.setNamedParameter("clientId", clientId);
+
+ if (!ppriceListVersion.list().isEmpty()) {
+ return ppriceListVersion.list().get(0).getId();
+ } else {
+ return "0";
+ }
+ } finally {
+ OBContext.restorePreviousMode();
+ }
+ }
+
+ private BigDecimal getPriceList(String strProductID, String
strPriceVersionId) {
+ OBContext.setAdminMode();
+ BigDecimal bdPriceList = null;
+ try {
+ final List<Object> parameters = new ArrayList<Object>();
+ parameters.add(strProductID);
+ parameters.add(strPriceVersionId);
+ final String procedureName = "M_BOM_PriceList";
+ bdPriceList = (BigDecimal)
CallStoredProcedure.getInstance().call(procedureName, parameters,
+ null);
+ } finally {
+ OBContext.restorePreviousMode();
+ }
+
+ return (bdPriceList);
+ }
+}
diff -r e83f6882cd02 -r 519541e1ea40
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
---
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
Wed May 18 16:12:47 2011 +0200
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
Wed May 18 16:40:48 2011 +0200
@@ -1119,7 +1119,7 @@
// one has as disadvantage that it is called multiple times
// for one select/deselect action
selectionUpdated: function(record, recordList){
- if (record === this.lastSelectedRecord && (this.lastSelectedRecord ||
record)) {
+ if ((!recordList || recordList.length === 1) && record ===
this.lastSelectedRecord && (this.lastSelectedRecord || record)) {
return;
}
------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its
next-generation tools to help Windows* and Linux* C/C++ and Fortran
developers boost performance applications - including clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits