hg merge release-2.0 (merge release2 into development)
This commit is contained in:
commit
bc9b8049bc
|
@ -27,7 +27,7 @@ WHERE (o.DocStatus = 'CO' AND o.IsDelivered='N') -- Status must be CO - not CL
|
|||
-- Not confirmed shipment
|
||||
AND NOT EXISTS (SELECT * FROM M_InOutLine iol
|
||||
INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('IP','WC'))
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))
|
||||
--
|
||||
GROUP BY o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
|
|
|
@ -27,7 +27,7 @@ WHERE (o.DocStatus = 'CO' AND o.IsDelivered='N') -- Status must be CO - not CL
|
|||
-- Not confirmed shipment
|
||||
AND NOT EXISTS (SELECT * FROM M_InOutLine iol
|
||||
INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('IP','WC'))
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))
|
||||
--
|
||||
GROUP BY o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- Feb 10, 2014 1:01:33 AM ICT
|
||||
-- IDEMPIERE-1712:Field "Event Change Log" of "Change Audit" window is not read only.
|
||||
UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2014-02-10 01:01:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54397
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201402101604-IDEMPIERE-1712.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,43 @@
|
|||
-- IDEMPIERE-1144 Generating shipments from existing orders fails if product has mandatory attribute set
|
||||
|
||||
CREATE OR REPLACE VIEW M_INOUT_CANDIDATE_V
|
||||
(AD_CLIENT_ID, AD_ORG_ID, C_BPARTNER_ID, C_ORDER_ID, DOCUMENTNO,
|
||||
DATEORDERED, C_DOCTYPE_ID, POREFERENCE, DESCRIPTION, SALESREP_ID,
|
||||
M_WAREHOUSE_ID, TOTALLINES)
|
||||
AS
|
||||
SELECT
|
||||
o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
o.POReference, o.Description, o.SalesRep_ID,
|
||||
l.M_Warehouse_ID,
|
||||
SUM((l.QtyOrdered-l.QtyDelivered)*l.PriceActual) AS TotalLines
|
||||
FROM C_Order o
|
||||
INNER JOIN C_OrderLine l ON (o.C_Order_ID=l.C_Order_ID)
|
||||
WHERE (o.DocStatus = 'CO' AND o.IsDelivered='N') -- Status must be CO - not CL/RE
|
||||
-- not Offers and open Walkin-Receipts
|
||||
AND o.C_DocType_ID IN (SELECT C_DocType_ID FROM C_DocType
|
||||
WHERE DocBaseType='SOO' AND DocSubTypeSO NOT IN ('ON','OB','WR'))
|
||||
-- Delivery Rule - not manual
|
||||
AND o.DeliveryRule<>'M'
|
||||
AND (l.M_Product_ID IS NULL OR EXISTS
|
||||
(SELECT * FROM M_Product p
|
||||
WHERE l.M_Product_ID=p.M_Product_ID AND p.IsExcludeAutoDelivery='N'))
|
||||
-- we need to ship
|
||||
AND l.QtyOrdered <> l.QtyDelivered
|
||||
AND o.IsDropShip='N'
|
||||
AND (l.M_Product_ID IS NOT NULL OR l.C_Charge_ID IS NOT NULL)
|
||||
-- Not confirmed shipment
|
||||
AND NOT EXISTS (SELECT * FROM M_InOutLine iol
|
||||
INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))
|
||||
--
|
||||
GROUP BY o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
o.POReference, o.Description, o.SalesRep_ID, l.M_Warehouse_ID
|
||||
;
|
||||
|
||||
|
||||
|
||||
SELECT register_migration_script('201403122133_IDEMPIERE-1144.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- Dec 26, 2013 10:24:08 PM ICT
|
||||
-- IDEMPIERE-1646 Make filter price list (SO/PO) in BP and BP group
|
||||
INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Description,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES ('M_PriceList.IsSOPriceList = ''Y'' AND (SELECT COUNT(*) FROM M_PriceList_Version WHERE M_PriceList.M_PriceList_ID=M_PriceList_Version.M_PriceList_ID AND M_PriceList_Version.IsActive=''Y'')>0',200057,'D','M_PriceList is SO','Limits the Sales & Purchase Order window to the correct price lsits','S','83715776-17dc-4e3c-87c2-3d638e43136a',100,100,TO_DATE('2013-12-26 22:24:08','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-12-26 22:24:08','YYYY-MM-DD HH24:MI:SS'),0,'Y',0)
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:24:45 PM ICT
|
||||
INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Description,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES ('M_PriceList.IsSOPriceList = ''N'' AND (SELECT COUNT(*) FROM M_PriceList_Version WHERE M_PriceList.M_PriceList_ID=M_PriceList_Version.M_PriceList_ID AND M_PriceList_Version.IsActive=''Y'')>0',200058,'D','M_PriceList is PO','Limits the Sales & Purchase Order window to the correct price lsits','S','efc89c8e-b74b-4ded-85b1-d266fa967194',100,100,TO_DATE('2013-12-26 22:24:45','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-12-26 22:24:45','YYYY-MM-DD HH24:MI:SS'),0,'Y',0)
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:25:20 PM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200057,Updated=TO_DATE('2013-12-26 22:25:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2930
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:26:04 PM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200058,Updated=TO_DATE('2013-12-26 22:26:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2931
|
||||
;
|
||||
|
||||
-- Dec 27, 2013 10:32:02 AM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200058,Updated=TO_DATE('2013-12-27 10:32:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=14637
|
||||
;
|
||||
|
||||
-- Dec 27, 2013 10:32:10 AM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200057,Updated=TO_DATE('2013-12-27 10:32:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=14636
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201403122207-IDEMPIERE-1646.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,7 @@
|
|||
-- Feb 10, 2014 1:01:33 AM ICT
|
||||
-- IDEMPIERE-1712:Field "Event Change Log" of "Change Audit" window is not read only.
|
||||
UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2014-02-10 01:01:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54397
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201402101604-IDEMPIERE-1712.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,43 @@
|
|||
-- IDEMPIERE-1144 Generating shipments from existing orders fails if product has mandatory attribute set
|
||||
|
||||
CREATE OR REPLACE VIEW M_INOUT_CANDIDATE_V
|
||||
(AD_CLIENT_ID, AD_ORG_ID, C_BPARTNER_ID, C_ORDER_ID, DOCUMENTNO,
|
||||
DATEORDERED, C_DOCTYPE_ID, POREFERENCE, DESCRIPTION, SALESREP_ID,
|
||||
M_WAREHOUSE_ID, TOTALLINES)
|
||||
AS
|
||||
SELECT
|
||||
o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
o.POReference, o.Description, o.SalesRep_ID,
|
||||
l.M_Warehouse_ID,
|
||||
SUM((l.QtyOrdered-l.QtyDelivered)*l.PriceActual) AS TotalLines
|
||||
FROM C_Order o
|
||||
INNER JOIN C_OrderLine l ON (o.C_Order_ID=l.C_Order_ID)
|
||||
WHERE (o.DocStatus = 'CO' AND o.IsDelivered='N') -- Status must be CO - not CL/RE
|
||||
-- not Offers and open Walkin-Receipts
|
||||
AND o.C_DocType_ID IN (SELECT C_DocType_ID FROM C_DocType
|
||||
WHERE DocBaseType='SOO' AND DocSubTypeSO NOT IN ('ON','OB','WR'))
|
||||
-- Delivery Rule - not manual
|
||||
AND o.DeliveryRule<>'M'
|
||||
AND (l.M_Product_ID IS NULL OR EXISTS
|
||||
(SELECT * FROM M_Product p
|
||||
WHERE l.M_Product_ID=p.M_Product_ID AND p.IsExcludeAutoDelivery='N'))
|
||||
-- we need to ship
|
||||
AND l.QtyOrdered <> l.QtyDelivered
|
||||
AND o.IsDropShip='N'
|
||||
AND (l.M_Product_ID IS NOT NULL OR l.C_Charge_ID IS NOT NULL)
|
||||
-- Not confirmed shipment
|
||||
AND NOT EXISTS (SELECT * FROM M_InOutLine iol
|
||||
INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)
|
||||
WHERE iol.C_OrderLine_ID=l.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))
|
||||
--
|
||||
GROUP BY o.AD_Client_ID, o.AD_Org_ID, o.C_BPartner_ID, o.C_Order_ID,
|
||||
o.DocumentNo, o.DateOrdered, o.C_DocType_ID,
|
||||
o.POReference, o.Description, o.SalesRep_ID, l.M_Warehouse_ID
|
||||
;
|
||||
|
||||
|
||||
|
||||
SELECT register_migration_script('201403122133_IDEMPIERE-1144.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
-- Dec 26, 2013 10:24:08 PM ICT
|
||||
-- IDEMPIERE-1646 Make filter price list (SO/PO) in BP and BP group
|
||||
INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Description,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES ('M_PriceList.IsSOPriceList = ''Y'' AND (SELECT COUNT(*) FROM M_PriceList_Version WHERE M_PriceList.M_PriceList_ID=M_PriceList_Version.M_PriceList_ID AND M_PriceList_Version.IsActive=''Y'')>0',200057,'D','M_PriceList is SO','Limits the Sales & Purchase Order window to the correct price lsits','S','83715776-17dc-4e3c-87c2-3d638e43136a',100,100,TO_TIMESTAMP('2013-12-26 22:24:08','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-12-26 22:24:08','YYYY-MM-DD HH24:MI:SS'),0,'Y',0)
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:24:45 PM ICT
|
||||
INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Description,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES ('M_PriceList.IsSOPriceList = ''N'' AND (SELECT COUNT(*) FROM M_PriceList_Version WHERE M_PriceList.M_PriceList_ID=M_PriceList_Version.M_PriceList_ID AND M_PriceList_Version.IsActive=''Y'')>0',200058,'D','M_PriceList is PO','Limits the Sales & Purchase Order window to the correct price lsits','S','efc89c8e-b74b-4ded-85b1-d266fa967194',100,100,TO_TIMESTAMP('2013-12-26 22:24:45','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-12-26 22:24:45','YYYY-MM-DD HH24:MI:SS'),0,'Y',0)
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:25:20 PM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200057,Updated=TO_TIMESTAMP('2013-12-26 22:25:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2930
|
||||
;
|
||||
|
||||
-- Dec 26, 2013 10:26:04 PM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200058,Updated=TO_TIMESTAMP('2013-12-26 22:26:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2931
|
||||
;
|
||||
|
||||
-- Dec 27, 2013 10:32:02 AM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200058,Updated=TO_TIMESTAMP('2013-12-27 10:32:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=14637
|
||||
;
|
||||
|
||||
-- Dec 27, 2013 10:32:10 AM ICT
|
||||
UPDATE AD_Column SET AD_Val_Rule_ID=200057,Updated=TO_TIMESTAMP('2013-12-27 10:32:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=14636
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201403122207-IDEMPIERE-1646.sql') FROM dual
|
||||
;
|
|
@ -109,7 +109,7 @@ public class CalloutPaymentAllocate extends CalloutEngine
|
|||
mTab.setValue("Amount", InvoiceOpen.subtract(DiscountAmt));
|
||||
mTab.setValue("DiscountAmt", DiscountAmt);
|
||||
// reset as dependent fields get reset
|
||||
Env.setContext(ctx, WindowNo, "C_Invoice_ID", C_Invoice_ID.toString());
|
||||
Env.setContext(ctx, WindowNo, mTab.getTabNo(), "C_Invoice_ID", C_Invoice_ID.toString());
|
||||
mTab.setValue("C_Invoice_ID", C_Invoice_ID);
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ public class CalloutPaymentAllocate extends CalloutEngine
|
|||
if (isCalloutActive()) // assuming it is resetting value
|
||||
return "";
|
||||
// No Invoice
|
||||
int C_Invoice_ID = Env.getContextAsInt(ctx, WindowNo, "C_Invoice_ID");
|
||||
int C_Invoice_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_Invoice_ID");
|
||||
if (C_Invoice_ID == 0)
|
||||
return "";
|
||||
// Get Info from Tab
|
||||
|
@ -173,8 +173,8 @@ public class CalloutPaymentAllocate extends CalloutEngine
|
|||
// PayAmt - calculate write off
|
||||
if (colName.equals("Amount"))
|
||||
{
|
||||
WriteOffAmt = InvoiceAmt.subtract(Amount).subtract(DiscountAmt).subtract(OverUnderAmt);
|
||||
mTab.setValue("WriteOffAmt", WriteOffAmt);
|
||||
OverUnderAmt = InvoiceAmt.subtract(Amount).subtract(DiscountAmt).subtract(WriteOffAmt);
|
||||
mTab.setValue("OverUnderAmt", OverUnderAmt);
|
||||
}
|
||||
else // calculate Amount
|
||||
{
|
||||
|
|
|
@ -57,7 +57,7 @@ public class InOutGenerate extends SvrProcess
|
|||
/** Include Orders w. unconfirmed Shipments */
|
||||
private boolean p_IsUnconfirmedInOut = false;
|
||||
/** DocAction */
|
||||
private String p_docAction = DocAction.ACTION_Complete;
|
||||
private String p_docAction = DocAction.ACTION_None;
|
||||
/** Consolidate */
|
||||
private boolean p_ConsolidateDocument = true;
|
||||
/** Shipment Date */
|
||||
|
@ -123,9 +123,6 @@ public class InOutGenerate extends SvrProcess
|
|||
m_movementDate = new Timestamp(System.currentTimeMillis());
|
||||
} else
|
||||
m_movementDate = p_DateShipped;
|
||||
// DocAction check
|
||||
if (!DocAction.ACTION_Complete.equals(p_docAction))
|
||||
p_docAction = DocAction.ACTION_Prepare;
|
||||
}
|
||||
} // prepare
|
||||
|
||||
|
@ -244,7 +241,7 @@ public class InOutGenerate extends SvrProcess
|
|||
if (!p_IsUnconfirmedInOut)
|
||||
where.append(" AND NOT EXISTS (SELECT * FROM M_InOutLine iol")
|
||||
.append(" INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID) ")
|
||||
.append("WHERE iol.C_OrderLine_ID=C_OrderLine.C_OrderLine_ID AND io.DocStatus IN ('IP','WC'))");
|
||||
.append("WHERE iol.C_OrderLine_ID=C_OrderLine.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))");
|
||||
// Deadlock Prevention - Order by M_Product_ID
|
||||
MOrderLine[] lines = order.getLines (where.toString(), "C_BPartner_Location_ID, M_Product_ID");
|
||||
for (int i = 0; i < lines.length; i++)
|
||||
|
@ -269,7 +266,7 @@ public class InOutGenerate extends SvrProcess
|
|||
BigDecimal unconfirmedShippedQty = Env.ZERO;
|
||||
if (p_IsUnconfirmedInOut && product != null && toDeliver.signum() != 0)
|
||||
{
|
||||
String where2 = "EXISTS (SELECT * FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('IP','WC'))";
|
||||
String where2 = "EXISTS (SELECT * FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('DR','IN','IP','WC'))";
|
||||
MInOutLine[] iols = MInOutLine.getOfOrderLine(getCtx(),
|
||||
line.getC_OrderLine_ID(), where2, null);
|
||||
for (int j = 0; j < iols.length; j++)
|
||||
|
@ -573,12 +570,14 @@ public class InOutGenerate extends SvrProcess
|
|||
private void completeShipment()
|
||||
{
|
||||
if (m_shipment != null)
|
||||
{
|
||||
if (!DocAction.ACTION_None.equals(p_docAction))
|
||||
{
|
||||
// Fails if there is a confirmation
|
||||
if (!m_shipment.processIt(p_docAction)) {
|
||||
log.warning("Failed: " + m_shipment);
|
||||
throw new IllegalStateException("Shipment Process Failed: " + m_shipment + " - " + m_shipment.getProcessMsg());
|
||||
|
||||
}
|
||||
}
|
||||
m_shipment.saveEx();
|
||||
String message = Msg.parseTranslation(getCtx(), "@ShipmentProcessed@ " + m_shipment.getDocumentNo());
|
||||
|
|
|
@ -252,9 +252,9 @@ public class ReplenishReport extends SvrProcess
|
|||
sql.append("QtyOnHand = (SELECT COALESCE(SUM(QtyOnHand),0) FROM M_StorageOnHand s, M_Locator l WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND l.M_Locator_ID=s.M_Locator_ID AND l.M_Warehouse_ID=t.M_Warehouse_ID),");
|
||||
sql.append("QtyReserved = (SELECT COALESCE(SUM(Qty),0) FROM M_StorageReservation s WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID),");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID AND s.IsSOTrx='Y'),");
|
||||
sql.append("QtyOrdered = (SELECT COALESCE(SUM(Qty),0) FROM M_StorageReservation s WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID)");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID AND s.IsSOTrx='N')");
|
||||
if (p_C_DocType_ID != 0)
|
||||
sql.append(", C_DocType_ID=").append(p_C_DocType_ID);
|
||||
sql.append(" WHERE AD_PInstance_ID=").append(getAD_PInstance_ID());
|
||||
|
|
|
@ -272,9 +272,9 @@ public class ReplenishReportProduction extends SvrProcess
|
|||
sql.append("QtyOnHand = (SELECT COALESCE(SUM(QtyOnHand),0) FROM M_StorageOnHand s, M_Locator l WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND l.M_Locator_ID=s.M_Locator_ID AND l.M_Warehouse_ID=t.M_Warehouse_ID),");
|
||||
sql.append("QtyReserved = (SELECT COALESCE(SUM(Qty),0) FROM M_StorageReservation s WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID),");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID AND s.IsSOTrx='Y'),");
|
||||
sql.append("QtyOrdered = (SELECT COALESCE(SUM(Qty),0) FROM M_StorageReservation s WHERE t.M_Product_ID=s.M_Product_ID");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID)");
|
||||
sql.append(" AND t.M_Warehouse_ID=s.M_Warehouse_ID AND s.IsSOTrx='N')");
|
||||
if (p_C_DocType_ID != 0)
|
||||
sql.append(", C_DocType_ID=").append(p_C_DocType_ID);
|
||||
sql.append(" WHERE AD_PInstance_ID=").append(getAD_PInstance_ID());
|
||||
|
|
|
@ -1056,6 +1056,12 @@ public class GridTable extends AbstractTableModel
|
|||
{}
|
||||
loops++;
|
||||
}
|
||||
if (m_sort.size() == 0) {
|
||||
// check if there is a DB error saved to show
|
||||
Exception savedEx = CLogger.retrieveException();
|
||||
if (savedEx != null)
|
||||
throw new IllegalStateException(savedEx);
|
||||
}
|
||||
if (row >= m_sort.size()) {
|
||||
throw new IllegalStateException("Timeout loading row " + (row+1));
|
||||
}
|
||||
|
@ -3512,7 +3518,8 @@ public class GridTable extends AbstractTableModel
|
|||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
log.log(Level.SEVERE, m_SQL, e);
|
||||
log.saveError(e.getLocalizedMessage(), e);
|
||||
throw new DBException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,21 +16,21 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.model;
|
||||
|
||||
import static org.compiere.model.SystemIDs.COUNTRY_US;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.util.CCache;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Language;
|
||||
import static org.compiere.model.SystemIDs.*;
|
||||
|
||||
/**
|
||||
* Location Country Model (Value Object)
|
||||
|
@ -47,8 +47,7 @@ public class MCountry extends X_C_Country
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3098295201595847612L;
|
||||
|
||||
private static final long serialVersionUID = -4015127112992493778L;
|
||||
|
||||
/**
|
||||
* Get Country (cached)
|
||||
|
@ -59,14 +58,13 @@ public class MCountry extends X_C_Country
|
|||
public static MCountry get (Properties ctx, int C_Country_ID)
|
||||
{
|
||||
loadAllCountriesIfNeeded(ctx);
|
||||
String key = String.valueOf(C_Country_ID);
|
||||
MCountry c = (MCountry)s_countries.get(key);
|
||||
MCountry c = s_countries.get(C_Country_ID);
|
||||
if (c != null)
|
||||
return c;
|
||||
c = new MCountry (ctx, C_Country_ID, null);
|
||||
if (c.getC_Country_ID() == C_Country_ID)
|
||||
{
|
||||
s_countries.put(key, c);
|
||||
s_countries.put(C_Country_ID, c);
|
||||
return c;
|
||||
}
|
||||
return null;
|
||||
|
@ -79,8 +77,14 @@ public class MCountry extends X_C_Country
|
|||
*/
|
||||
public static MCountry getDefault (Properties ctx)
|
||||
{
|
||||
loadAllCountriesIfNeeded(ctx);
|
||||
return s_default;
|
||||
int clientID = Env.getAD_Client_ID(ctx);
|
||||
MCountry c = s_default.get(clientID);
|
||||
if (c != null)
|
||||
return c;
|
||||
|
||||
loadDefaultCountry(ctx);
|
||||
c = s_default.get(clientID);
|
||||
return c;
|
||||
} // get
|
||||
|
||||
/**
|
||||
|
@ -112,43 +116,53 @@ public class MCountry extends X_C_Country
|
|||
{
|
||||
MClient client = MClient.get (ctx);
|
||||
MLanguage lang = MLanguage.get(ctx, client.getAD_Language());
|
||||
MCountry usa = null;
|
||||
//
|
||||
s_countries = new CCache<String,MCountry>(Table_Name, 250);
|
||||
String sql = "SELECT * FROM C_Country WHERE IsActive='Y'";
|
||||
Statement stmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
{
|
||||
stmt = DB.createStatement();
|
||||
rs = stmt.executeQuery(sql);
|
||||
while(rs.next())
|
||||
{
|
||||
MCountry c = new MCountry (ctx, rs, null);
|
||||
s_countries.put(String.valueOf(c.getC_Country_ID()), c);
|
||||
s_countries = new CCache<Integer,MCountry>(Table_Name, 250);
|
||||
List<MCountry> countries = new Query(ctx, Table_Name, "", null)
|
||||
.setOnlyActiveRecords(true)
|
||||
.list();
|
||||
for (MCountry c : countries) {
|
||||
s_countries.put(c.getC_Country_ID(), c);
|
||||
// Country code of Client Language
|
||||
if (lang != null && lang.getCountryCode().equals(c.getCountryCode()))
|
||||
s_default = c;
|
||||
if (c.getC_Country_ID() == COUNTRY_US) // USA
|
||||
usa = c;
|
||||
s_default.put(client.getAD_Client_ID(), c);
|
||||
}
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
s_log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DB.close(rs, stmt);
|
||||
rs = null;
|
||||
stmt = null;
|
||||
}
|
||||
if (s_default == null)
|
||||
s_default = usa;
|
||||
if (s_log.isLoggable(Level.FINE)) s_log.fine("#" + s_countries.size()
|
||||
+ " - Default=" + s_default);
|
||||
} // loadAllCountries
|
||||
|
||||
/**
|
||||
* Load Default Country for actual client on context
|
||||
* @param ctx
|
||||
*/
|
||||
private static void loadDefaultCountry(Properties ctx) {
|
||||
loadAllCountriesIfNeeded(ctx);
|
||||
MClient client = MClient.get (ctx);
|
||||
MCountry found = s_default.get(client.getAD_Client_ID());
|
||||
if (found != null)
|
||||
return;
|
||||
|
||||
MLanguage lang = MLanguage.get(ctx, client.getAD_Language());
|
||||
MCountry usa = null;
|
||||
|
||||
for (Entry<Integer, MCountry> cachedEntry : s_countries.entrySet()) {
|
||||
MCountry c = cachedEntry.getValue();
|
||||
// Country code of Client Language
|
||||
if (lang != null && lang.getCountryCode().equals(c.getCountryCode())) {
|
||||
found = c;
|
||||
break;
|
||||
}
|
||||
if (c.getC_Country_ID() == COUNTRY_US) // USA
|
||||
usa = c;
|
||||
}
|
||||
if (found != null)
|
||||
s_default.put(client.getAD_Client_ID(), found);
|
||||
else
|
||||
s_default.put(client.getAD_Client_ID(), usa);
|
||||
if (s_log.isLoggable(Level.FINE)) s_log.fine("#" + s_countries.size()
|
||||
+ " - Default=" + s_default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return Language
|
||||
* @return Name
|
||||
|
@ -177,9 +191,9 @@ public class MCountry extends X_C_Country
|
|||
private static String s_AD_Language = null;
|
||||
|
||||
/** Country Cache */
|
||||
private static CCache<String,MCountry> s_countries = null;
|
||||
private static CCache<Integer,MCountry> s_countries = null;
|
||||
/** Default Country */
|
||||
private static MCountry s_default = null;
|
||||
private static CCache<Integer,MCountry> s_default = new CCache<Integer,MCountry>(Table_Name, 3);
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MCountry.class);
|
||||
// Default DisplaySequence */
|
||||
|
|
|
@ -95,7 +95,7 @@ public class MGoal extends X_PA_Goal
|
|||
rs = null; pstmt = null;
|
||||
}
|
||||
if (list.size() == 0)
|
||||
s_log.log (Level.WARNING, Msg.getMsg(ctx, "FindZeroRecords"));
|
||||
s_log.log (Level.INFO, Msg.getMsg(ctx, "FindZeroRecords"));
|
||||
MGoal[] retValue = new MGoal[list.size ()];
|
||||
list.toArray (retValue);
|
||||
return retValue;
|
||||
|
|
|
@ -163,6 +163,11 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
if (counter)
|
||||
{
|
||||
to.setRef_Invoice_ID(from.getC_Invoice_ID());
|
||||
MOrg org = MOrg.get(from.getCtx(), from.getAD_Org_ID());
|
||||
int counterC_BPartner_ID = org.getLinkedC_BPartner_ID(trxName);
|
||||
if (counterC_BPartner_ID == 0)
|
||||
return null;
|
||||
to.setBPartner(MBPartner.get(from.getCtx(), counterC_BPartner_ID));
|
||||
// Try to find Order link
|
||||
if (from.getC_Order_ID() != 0)
|
||||
{
|
||||
|
@ -2169,8 +2174,8 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
counter.setAD_Org_ID(counterAD_Org_ID);
|
||||
// counter.setM_Warehouse_ID(counterOrgInfo.getM_Warehouse_ID());
|
||||
//
|
||||
counter.setBPartner(counterBP);
|
||||
// Refernces (Should not be required
|
||||
// counter.setBPartner(counterBP);// was set on copyFrom
|
||||
// References (Should not be required)
|
||||
counter.setSalesRep_ID(getSalesRep_ID());
|
||||
counter.saveEx(get_TrxName());
|
||||
|
||||
|
|
|
@ -675,9 +675,9 @@ public class MLookupFactory
|
|||
embedSQL.append(BaseTable).append(".").append(BaseColumn);
|
||||
embedSQL.append("=").append(TableNameAlias).append(".").append(KeyColumn);
|
||||
} else if (translated) {
|
||||
embedSQL.append(TableNameAlias).append(".").append(BaseColumn).append("=").append(column.getColumnSQL());
|
||||
embedSQL.append(TableNameAlias).append(".").append(KeyColumn).append("=").append(column.getColumnSQL());
|
||||
} else {
|
||||
embedSQL.append(BaseColumn).append("=").append(column.getColumnSQL());
|
||||
embedSQL.append(KeyColumn).append("=").append(column.getColumnSQL());
|
||||
}
|
||||
|
||||
return embedSQL.toString();
|
||||
|
|
|
@ -127,9 +127,14 @@ public class MOrder extends X_C_Order implements DocAction
|
|||
to.setIsTransferred (false);
|
||||
to.setPosted (false);
|
||||
to.setProcessed (false);
|
||||
if (counter)
|
||||
if (counter) {
|
||||
to.setRef_Order_ID(from.getC_Order_ID());
|
||||
else
|
||||
MOrg org = MOrg.get(from.getCtx(), from.getAD_Org_ID());
|
||||
int counterC_BPartner_ID = org.getLinkedC_BPartner_ID(trxName);
|
||||
if (counterC_BPartner_ID == 0)
|
||||
return null;
|
||||
to.setBPartner(MBPartner.get(from.getCtx(), counterC_BPartner_ID));
|
||||
} else
|
||||
to.setRef_Order_ID(0);
|
||||
//
|
||||
if (!to.save(trxName))
|
||||
|
@ -2338,9 +2343,9 @@ public class MOrder extends X_C_Order implements DocAction
|
|||
counter.setAD_Org_ID(counterAD_Org_ID);
|
||||
counter.setM_Warehouse_ID(counterOrgInfo.getM_Warehouse_ID());
|
||||
//
|
||||
counter.setBPartner(counterBP);
|
||||
// counter.setBPartner(counterBP); // was set on copyFrom
|
||||
counter.setDatePromised(getDatePromised()); // default is date ordered
|
||||
// Refernces (Should not be required
|
||||
// References (Should not be required)
|
||||
counter.setSalesRep_ID(getSalesRep_ID());
|
||||
counter.saveEx(get_TrxName());
|
||||
|
||||
|
|
|
@ -1241,10 +1241,6 @@ public class Login
|
|||
if (system.isLDAP())
|
||||
{
|
||||
authenticated = system.isLDAP(app_user, app_pwd);
|
||||
if (authenticated){
|
||||
app_pwd = null;
|
||||
authenticated=true;
|
||||
}
|
||||
// if not authenticated, use AD_User as backup
|
||||
}
|
||||
|
||||
|
@ -1328,12 +1324,16 @@ public class Login
|
|||
}
|
||||
clientsValidated.add(user.getAD_Client_ID());
|
||||
boolean valid = false;
|
||||
if (hash_password) {
|
||||
// authenticated by ldap
|
||||
if (authenticated){
|
||||
valid = true;
|
||||
} else if (hash_password) {
|
||||
valid = user.authenticateHash(app_pwd);
|
||||
} else {
|
||||
// password not hashed
|
||||
valid = user.getPassword() != null && user.getPassword().equals(app_pwd);
|
||||
}
|
||||
|
||||
if (valid ) {
|
||||
if (user.isLocked())
|
||||
{
|
||||
|
@ -1341,7 +1341,10 @@ public class Login
|
|||
continue;
|
||||
}
|
||||
|
||||
if (user.isExpired())
|
||||
if (authenticated){
|
||||
// use Ldap because don't check password age
|
||||
}
|
||||
else if (user.isExpired())
|
||||
isPasswordExpired = true;
|
||||
else if (MAX_PASSWORD_AGE > 0 && !user.isNoPasswordReset())
|
||||
{
|
||||
|
|
|
@ -12,6 +12,8 @@ import org.compiere.model.PO;
|
|||
import org.compiere.model.POInfo;
|
||||
import org.compiere.model.X_AD_Client;
|
||||
import org.compiere.model.X_AD_Org;
|
||||
import org.compiere.model.X_C_Location;
|
||||
import org.compiere.model.X_M_Locator;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DisplayType;
|
||||
import org.xml.sax.SAXException;
|
||||
|
@ -275,6 +277,10 @@ public class PoExporter {
|
|||
addBlob(columnName);
|
||||
} else if (columnName.equals(po.getUUIDColumnName()) && po.get_Value(columnName) == null) {
|
||||
continue;
|
||||
} else if (DisplayType.Locator == displayType) {
|
||||
addTableReference(columnName, X_M_Locator.Table_Name, new AttributesImpl());
|
||||
} else if (DisplayType.Location == displayType) {
|
||||
addTableReference(columnName, X_C_Location.Table_Name, new AttributesImpl());
|
||||
} else {
|
||||
add(columnName, "", new AttributesImpl());
|
||||
}
|
||||
|
|
|
@ -143,7 +143,7 @@ public class VInOutGen extends InOutGen implements FormPanel, ActionListener, Ve
|
|||
// Document Action Prepared/ Completed
|
||||
MLookup docActionL = MLookupFactory.get(Env.getCtx(), m_WindowNo, 4324 /* M_InOut.DocStatus */,
|
||||
DisplayType.List, Env.getLanguage(Env.getCtx()), "DocAction", 135 /* _Document Action */,
|
||||
false, "AD_Ref_List.Value IN ('CO','PR')");
|
||||
false, "AD_Ref_List.Value IN ('CO','PR','--')");
|
||||
docAction = new VLookup("DocAction", true, false, true,docActionL);
|
||||
docAction.addVetoableChangeListener(this);
|
||||
// C_Order.C_BPartner_ID
|
||||
|
|
|
@ -1664,6 +1664,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
IADTabpanel headerTab = adTabbox.getSelectedTabpanel();
|
||||
IADTabpanel detailTab = adTabbox.getSelectedDetailADTabpanel();
|
||||
adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true);
|
||||
adTabbox.getSelectedGridTab().refreshParentTabs();
|
||||
headerTab.dynamicDisplay(0);
|
||||
if (detailTab != null)
|
||||
{
|
||||
|
@ -2021,6 +2022,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
{
|
||||
String statusLine = statusBar.getStatusLine();
|
||||
adTabbox.getSelectedGridTab().dataRefreshAll(true, true);
|
||||
adTabbox.getSelectedGridTab().refreshParentTabs();
|
||||
statusBar.setStatusLine(statusLine);
|
||||
}
|
||||
if (dirtyTabpanel != null) {
|
||||
|
@ -2212,6 +2214,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
if(result)
|
||||
{
|
||||
adTabbox.getSelectedGridTab().dataRefreshAll(true, true);
|
||||
adTabbox.getSelectedGridTab().refreshParentTabs();
|
||||
IADTabpanel dirtyTabpanel = (IADTabpanel) Executions.getCurrent().removeAttribute("adtabpane.saved");
|
||||
if (dirtyTabpanel != null && dirtyTabpanel.getGridTab().isDetail()) {
|
||||
try {
|
||||
|
@ -2278,6 +2281,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
{
|
||||
//error will be catch in the dataStatusChanged event
|
||||
adTabbox.getSelectedGridTab().dataDelete();
|
||||
adTabbox.getSelectedGridTab().refreshParentTabs();
|
||||
|
||||
adTabbox.getSelectedTabpanel().dynamicDisplay(0);
|
||||
focusToActivePanel();
|
||||
|
@ -2321,6 +2325,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
count++;
|
||||
}
|
||||
}
|
||||
adTabbox.getSelectedGridTab().refreshParentTabs();
|
||||
|
||||
adTabbox.getSelectedTabpanel().dynamicDisplay(0);
|
||||
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "Deleted")+": "+count, false);
|
||||
|
|
|
@ -138,7 +138,7 @@ public class WInOutGen extends InOutGen implements IFormController, EventListene
|
|||
lDocAction.setText(Msg.translate(Env.getCtx(), "DocAction"));
|
||||
MLookup docActionL = MLookupFactory.get(Env.getCtx(), form.getWindowNo(), 4324 /* M_InOut.DocAction */,
|
||||
DisplayType.List, Env.getLanguage(Env.getCtx()), "DocAction", 135 /* _Document Action */,
|
||||
false, "AD_Ref_List.Value IN ('CO','PR')");
|
||||
false, "AD_Ref_List.Value IN ('CO','PR','--')");
|
||||
docAction = new WTableDirEditor("DocAction", true, false, true,docActionL);
|
||||
docAction.setValue(DocAction.ACTION_Complete);
|
||||
// docAction.addValueChangeListener(this); // IDEMPIERE-768
|
||||
|
|
|
@ -163,6 +163,7 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
hbox.setStyle("padding: 3px;");
|
||||
hbox.setAlign("center");
|
||||
hbox.setHflex("1");
|
||||
hbox.setVflex("1");
|
||||
northPanel.appendChild(hbox);
|
||||
|
||||
hbox.appendChild (new Space());
|
||||
|
|
|
@ -1244,6 +1244,11 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
|
|||
|
||||
public void zoom()
|
||||
{
|
||||
Integer recordId = contentPanel.getSelectedRowKey();
|
||||
// prevent NPE when double click is raise but no recore is selected
|
||||
if (recordId == null)
|
||||
return;
|
||||
|
||||
if (listeners != null && listeners.size() > 0)
|
||||
{
|
||||
ValueChangeEvent event = new ValueChangeEvent(this,"zoom",
|
||||
|
@ -1252,7 +1257,6 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
|
|||
}
|
||||
else
|
||||
{
|
||||
Integer recordId = contentPanel.getSelectedRowKey();
|
||||
int AD_Table_ID = MTable.getTable_ID(p_tableName);
|
||||
if (AD_Table_ID <= 0)
|
||||
{
|
||||
|
|
|
@ -61,7 +61,7 @@ public class HTMLExtension implements IHTMLExtension {
|
|||
href.setStyle("text-decoration: none; font-size: 11px; vertical-align: middle;");
|
||||
href.addAttribute("onclick", "parent.zoom('"
|
||||
+ componentId + "', '"
|
||||
+ dataElement.getColumnName() + "', '"
|
||||
+ dataElement.getForeignColumnName() + "', '"
|
||||
+ dataElement.getValueAsString() + "')");
|
||||
window.addElement(href);
|
||||
menu.addElement(window);
|
||||
|
|
Loading…
Reference in New Issue