IDEMPIERE-386 Redesign ASI usage for FIFO. Based on Patch From Deepak.
This commit is contained in:
parent
0029c6cd4f
commit
8b5da4d99f
|
@ -0,0 +1,613 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:54:46 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element (ColumnName,AD_Element_ID,Help,EntityType,Description,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('DateMaterialPolicy',202184,'This field is used to record time used for LIFO and FIFO material policy','D','Time used for LIFO and FIFO Material Policy','Date Material Policy','Date Material Policy','b45c798f-5957-4856-bc64-979c5dd54147',0,TO_DATE('2012-12-25 10:54:44','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-12-25 10:54:44','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:54:46 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202184 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:17 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,200026,208340,'D','N','N','N',0,'N',7,'N',16,'N',202184,'N','Y','913e1eca-ca35-461a-ae0d-709589cd89d5','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_DATE('2012-12-25 10:56:16','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-12-25 10:56:16','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:17 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208340 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:39 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_StorageOnHand ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:17:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('UseGuaranteeDateForMPolicy',202185,'D','Use Guarantee Date for Material Policy','Use Guarantee Date for Material Policy','de278e48-9731-4100-bf5f-f8b74dc15807',0,TO_DATE('2012-12-25 11:17:32','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-12-25 11:17:32','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:17:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202185 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:40 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,560,208341,'D','N','N','N',0,'N',1,'N',20,'N',202185,'N','Y','3af336ad-d7c4-4bcc-b2dd-f7f23e39bc82','Y','UseGuaranteeDateForMPolicy','N','Use Guarantee Date for Material Policy','Y',100,TO_DATE('2012-12-25 11:18:39','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-12-25 11:18:39','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:40 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208341 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:47 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_AttributeSet ADD UseGuaranteeDateForMPolicy CHAR(1) DEFAULT 'N' CHECK (UseGuaranteeDateForMPolicy IN ('Y','N'))
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:32 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',461,36,'N','N',60867,'Y',201616,'N','D','M_AttributeSet_UU','N','Y','a02bb9da-705d-4ee5-9ba0-8809aaca675c',100,0,TO_DATE('2012-12-25 11:21:31','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-12-25 11:21:31','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:32 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201616 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',461,1,'N','N',208341,'Y',201617,'N','D','Use Guarantee Date for Material Policy','N','Y','afec456c-437d-42ff-8b92-6d764569c8e4',100,0,TO_DATE('2012-12-25 11:21:32','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-12-25 11:21:32','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201617 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=201616
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=10419
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:23:29 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET XPosition=4,Updated=TO_DATE('2012-12-25 11:23:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:26:29 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET ColumnSpan=2, DisplayLogic='@IsGuaranteeDate@=Y', XPosition=5,Updated=TO_DATE('2012-12-25 11:26:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:12:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,762,208342,'D','N','N','N',0,'N',7,'N',16,'N',202184,'N','Y','f2ee4123-70c8-40d5-bb0a-38543c4b2522','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_DATE('2012-12-25 20:12:34','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-12-25 20:12:34','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:12:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208342 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:13:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET EntityType='D',Updated=TO_DATE('2012-12-25 20:13:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:13:42 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_InOutLineMA ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_InOutLineMA SET DateMaterialPolicy = (SELECT To_Date(io.MovementDate) FROM M_InOut io JOIN M_InOutLine iol ON (io.M_InOut_ID=iol.M_InOut_ID) WHERE iol.M_InOutLine_ID=M_InOutLineMA.M_InOutLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA MODIFY COLUMN DateMaterialPolicy NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA DROP CONSTRAINT m_inoutlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA ADD CONSTRAINT m_inoutlinema_pkey PRIMARY KEY(m_inoutline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:10 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',751,7,'N','N',208342,'Y',201618,'N','This field is used to record time used for LIFO and FIFO material policy','D','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','c489cb75-8f36-4818-a77c-a30ba8ae5ac2',100,0,TO_DATE('2012-12-25 20:14:09','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-12-25 20:14:09','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:10 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201618 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:11 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',751,36,'N','N',60900,'Y',201619,'N','D','M_InOutLineMA_UU','N','Y','74956b1b-7def-46f8-a9a5-eeb0575fe4bb',100,0,TO_DATE('2012-12-25 20:14:10','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-12-25 20:14:10','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:11 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201619 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:16:53 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=201619
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:16:53 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=12195
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=201619
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=12197
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=12198
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=12194
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=12196
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,764,210651,'N','N','N',0,'N',7,'N',16,'N','N','Y','b261acf8-ab20-4532-ad4e-fd1f122231cf','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_DATE('2013-07-16 10:14:02','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2013-07-16 10:14:02','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:04 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210651 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:26 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_MovementLineMA ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_MovementLineMA SET DateMaterialPolicy = (SELECT TO_Date(m.MovementDate) FROM M_Movement m JOIN M_MovementLine ml ON (m.M_Movement_ID=ml.M_Movement_ID) WHERE ml.M_MovementLine_ID=M_MovementLineMA.M_MovementLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA MODIFY DateMaterialPolicy NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA DROP CONSTRAINT m_movementlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA ADD CONSTRAINT m_movementlinema_pkey PRIMARY KEY(m_movementline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:20 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',750,36,'N','N',60914,60,'Y',202287,'N','M_MovementLineMA_UU','N','N','33f63b7c-5503-4f61-a18d-7ba082506da0',100,0,TO_DATE('2013-07-16 10:18:19','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 10:18:19','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:20 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202287 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:21 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',750,7,'N','N',210651,70,'Y',202288,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','c1bdc238-1b5a-4d3e-b321-86b285dd9a12',100,0,TO_DATE('2013-07-16 10:18:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 10:18:20','YYYY-MM-DD HH24:MI:SS'),'Y',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:21 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202288 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12188
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1, ColumnSpan=2,Updated=TO_DATE('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12191
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60,Updated=TO_DATE('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202288
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,Updated=TO_DATE('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202287
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:20:08 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 10:20:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202288
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12194
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1,Updated=TO_DATE('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12196
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:33:25 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,763,210653,'N','N','N',0,'N',7,'N',16,'N','N','Y','b14bae38-065a-4daa-9ad5-94b96062e511','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_DATE('2013-07-16 11:33:24','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2013-07-16 11:33:24','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:33:25 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210653 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:35:42 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET EntityType='D',Updated=TO_DATE('2013-07-16 11:35:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:35:52 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_InventoryLineMA ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_InventoryLineMA SET DateMaterialPolicy = (SELECT Date(i.MovementDate) FROM M_Inventory i JOIN M_InventoryLine il ON (i.M_Inventory_ID=il.M_Inventory_ID) WHERE il.M_InventoryLine_ID=M_InventoryLineMA.M_InventoryLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InventoryLineMA MODIFY DateMaterialPolicy NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InventoryLineMA ADD CONSTRAINT m_inventorylinema_pkey PRIMARY KEY(m_inventoryline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:10 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',749,36,'N','N',60903,60,'Y',202289,'N','M_InventoryLineMA_UU','N','N','a3609970-e680-491b-a608-100617e5eb64',100,0,TO_DATE('2013-07-16 11:36:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 11:36:09','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:10 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202289 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:11 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',749,7,'N','N',210653,70,'Y',202290,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','4318813a-f3e7-43d6-a795-7682a2b37fd6',100,0,TO_DATE('2013-07-16 11:36:10','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 11:36:10','YYYY-MM-DD HH24:MI:SS'),'Y',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:11 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202290 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12182
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1,Updated=TO_DATE('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12184
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202290
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,Updated=TO_DATE('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202289
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:06:51 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_ProductionLine ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:07:09 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',321,36,'N','N',60929,130,'Y',202335,'N','M_ProductionLine_UU','N','N','976abb9e-bb13-4a15-a379-e74764a407f0',100,0,TO_DATE('2013-07-17 16:07:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-17 16:07:08','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:07:09 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202335 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:07 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,765,210658,'N','N','N',0,'N',7,'N',16,'N','N','Y','7834c3ff-8c66-441c-bc49-9430e9861db2','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_DATE('2013-07-17 16:09:06','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2013-07-17 16:09:06','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:07 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210658 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:17 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_ProductionLineMA ADD DateMaterialPolicy DATE DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_ProductionLineMA SET DateMaterialPolicy = (SELECT TO_Date(p.MovementDate) FROM M_Production p JOIN M_ProductionLine pl ON (p.M_Production_ID=pl.M_Production_ID) WHERE pl.M_ProductionLine_ID=M_ProductionLineMA.M_ProductionLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA MODIFY DateMaterialPolicy NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA DROP CONSTRAINT m_productionlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA ADD CONSTRAINT m_productionlinema_pkey PRIMARY KEY(m_productionline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
Update M_StorageOnHand Set DateMaterialPolicy = To_Date(Created)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:45:42 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsMandatory='Y',Updated=TO_DATE('2013-08-03 14:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:46:05 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_StorageOnHand MODIFY DateMaterialPolicy DATE
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:46:05 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_StorageOnHand MODIFY DateMaterialPolicy NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE m_storageonhand DROP CONSTRAINT m_storageonhand_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_StorageOnHand ADD CONSTRAINT M_StorageOnHand_pkey PRIMARY KEY (m_product_id , m_locator_id , m_attributesetinstance_id, DateMaterialPolicy )
|
||||||
|
;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW m_storage
|
||||||
|
AS
|
||||||
|
SELECT s.m_product_id,
|
||||||
|
s.m_locator_id,
|
||||||
|
s.ad_client_id,
|
||||||
|
s.ad_org_id,
|
||||||
|
s.isactive,
|
||||||
|
s.created,
|
||||||
|
s.createdby,
|
||||||
|
s.updated,
|
||||||
|
s.updatedby,
|
||||||
|
s.qtyonhand,
|
||||||
|
0 AS qtyreserved,
|
||||||
|
0 AS qtyordered,
|
||||||
|
s.datelastinventory,
|
||||||
|
s.m_attributesetinstance_id,
|
||||||
|
s.m_storageonhand_uu AS m_storage_uu,
|
||||||
|
s.datematerialpolicy AS datematerialpolicy
|
||||||
|
FROM m_storageonhand s
|
||||||
|
UNION
|
||||||
|
SELECT sr.m_product_id,
|
||||||
|
w.m_reservelocator_id AS m_locator_id,
|
||||||
|
sr.ad_client_id,
|
||||||
|
sr.ad_org_id,
|
||||||
|
sr.isactive,
|
||||||
|
sr.created,
|
||||||
|
sr.createdby,
|
||||||
|
sr.updated,
|
||||||
|
sr.updatedby,
|
||||||
|
0 AS qtyonhand,
|
||||||
|
sr.qty AS qtyreserved,
|
||||||
|
0 AS qtyordered,
|
||||||
|
sr.datelastinventory,
|
||||||
|
sr.m_attributesetinstance_id,
|
||||||
|
sr.m_storagereservation_uu AS m_storage_uu,
|
||||||
|
null as datematerialpolicy
|
||||||
|
FROM m_storagereservation sr
|
||||||
|
JOIN m_warehouse w
|
||||||
|
ON sr.m_warehouse_id = w.m_warehouse_id
|
||||||
|
WHERE sr.issotrx = 'Y' and sr.qty <> 0
|
||||||
|
UNION
|
||||||
|
SELECT so.m_product_id,
|
||||||
|
w.m_reservelocator_id AS m_locator_id,
|
||||||
|
so.ad_client_id,
|
||||||
|
so.ad_org_id,
|
||||||
|
so.isactive,
|
||||||
|
so.created,
|
||||||
|
so.createdby,
|
||||||
|
so.updated,
|
||||||
|
so.updatedby,
|
||||||
|
0 AS qtyonhand,
|
||||||
|
0 AS qtyreserved,
|
||||||
|
so.qty AS qtyordered,
|
||||||
|
so.datelastinventory,
|
||||||
|
so.m_attributesetinstance_id,
|
||||||
|
so.m_storagereservation_uu AS m_storage_uu,
|
||||||
|
null as datematerialpolicy
|
||||||
|
FROM m_storagereservation so
|
||||||
|
JOIN m_warehouse w
|
||||||
|
ON so.m_warehouse_id = w.m_warehouse_id
|
||||||
|
WHERE so.issotrx = 'N' and so.qty <> 0
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:48:19 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',1,250,1003519,'N','N','N',0,'N',7,'N',16,'N','N','N','e7fac848-ba58-41ac-81f3-bac9f3c81e62','N','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','N',TO_DATE('2013-10-16 17:48:19','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-10-16 17:48:19','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202184,'N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:48:56 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (SortNo,IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,SeqNoGrid,XPosition,IsQuickEntry,AD_Client_ID,ColumnSpan,NumLines,EntityType,IsAdvancedField,IsDefaultFocus) VALUES (0,'N',53244,0,'N','N',1003519,110,'Y',1002071,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','cf628432-e15e-47fe-af1d-9803f5b155b8','Y','N',100,0,TO_DATE('2013-10-16 17:48:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-10-16 17:48:56','YYYY-MM-DD HH24:MI:SS'),'Y','Y',110,1,'N',0,2,1,'D','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1002071
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=90,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=100,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57396
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=110,Updated=TO_DATE('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57399
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:26 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=60,Updated=TO_DATE('2013-10-16 17:50:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1002071
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=70,Updated=TO_DATE('2013-10-16 17:50:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:44 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=80,Updated=TO_DATE('2013-10-16 17:50:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:53 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=90,Updated=TO_DATE('2013-10-16 17:50:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:51:03 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=100,Updated=TO_DATE('2013-10-16 17:51:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57396
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:51:14 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=110,Updated=TO_DATE('2013-10-16 17:51:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57399
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:01:34 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:01:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:03:45 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:03:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:04:25 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:04:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:05:02 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:05:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210651
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:05:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:05:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210658
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:06:41 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_DATE('2013-10-16 20:06:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=1003519
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:05:31 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2013-10-17 16:05:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:06:52 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2013-10-17 16:06:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:07:28 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2013-10-17 16:07:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:08:06 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2013-10-17 16:08:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210651
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:09:51 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2013-10-17 16:09:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210658
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201310141246_IDEMPIERE-386.sql') FROM dual
|
||||||
|
;
|
|
@ -0,0 +1,605 @@
|
||||||
|
-- Dec 25, 2012 10:54:46 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element (ColumnName,AD_Element_ID,Help,EntityType,Description,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('DateMaterialPolicy',202184,'This field is used to record time used for LIFO and FIFO material policy','D','Time used for LIFO and FIFO Material Policy','Date Material Policy','Date Material Policy','b45c798f-5957-4856-bc64-979c5dd54147',0,TO_TIMESTAMP('2012-12-25 10:54:44','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-12-25 10:54:44','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:54:46 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202184 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:17 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,200026,208340,'D','N','N','N',0,'N',7,'N',16,'N',202184,'N','Y','913e1eca-ca35-461a-ae0d-709589cd89d5','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_TIMESTAMP('2012-12-25 10:56:16','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-12-25 10:56:16','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:17 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208340 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 10:56:39 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_StorageOnHand ADD COLUMN DateMaterialPolicy TIMESTAMP DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:17:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('UseGuaranteeDateForMPolicy',202185,'D','Use Guarantee Date for Material Policy','Use Guarantee Date for Material Policy','de278e48-9731-4100-bf5f-f8b74dc15807',0,TO_TIMESTAMP('2012-12-25 11:17:32','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-12-25 11:17:32','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:17:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202185 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:40 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,560,208341,'D','N','N','N',0,'N',1,'N',20,'N',202185,'N','Y','3af336ad-d7c4-4bcc-b2dd-f7f23e39bc82','Y','UseGuaranteeDateForMPolicy','N','Use Guarantee Date for Material Policy','Y',100,TO_TIMESTAMP('2012-12-25 11:18:39','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-12-25 11:18:39','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:40 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208341 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:18:47 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_AttributeSet ADD COLUMN UseGuaranteeDateForMPolicy CHAR(1) DEFAULT 'N' CHECK (UseGuaranteeDateForMPolicy IN ('Y','N'))
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:32 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',461,36,'N','N',60867,'Y',201616,'N','D','M_AttributeSet_UU','N','Y','a02bb9da-705d-4ee5-9ba0-8809aaca675c',100,0,TO_TIMESTAMP('2012-12-25 11:21:31','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-12-25 11:21:31','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:32 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201616 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',461,1,'N','N',208341,'Y',201617,'N','D','Use Guarantee Date for Material Policy','N','Y','afec456c-437d-42ff-8b92-6d764569c8e4',100,0,TO_TIMESTAMP('2012-12-25 11:21:32','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-12-25 11:21:32','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:21:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201617 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=201616
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:22:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=10419
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:23:29 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET XPosition=4,Updated=TO_TIMESTAMP('2012-12-25 11:23:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 11:26:29 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET ColumnSpan=2, DisplayLogic='@IsGuaranteeDate@=Y', XPosition=5,Updated=TO_TIMESTAMP('2012-12-25 11:26:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201617
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:12:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,IsEncrypted,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable) VALUES (0,'N','N',0,762,208342,'D','N','N','N',0,'N',7,'N',16,'N',202184,'N','Y','f2ee4123-70c8-40d5-bb0a-38543c4b2522','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_TIMESTAMP('2012-12-25 20:12:34','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-12-25 20:12:34','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:12:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=208342 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:13:36 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET EntityType='D',Updated=TO_TIMESTAMP('2012-12-25 20:13:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:13:42 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_InOutLineMA ADD COLUMN DateMaterialPolicy TIMESTAMP DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_InOutLineMA SET DateMaterialPolicy = (SELECT Date(io.MovementDate) FROM M_InOut io JOIN M_InOutLine iol ON (io.M_InOut_ID=iol.M_InOut_ID) WHERE iol.M_InOutLine_ID=M_InOutLineMA.M_InOutLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA ALTER COLUMN DateMaterialPolicy SET NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA DROP CONSTRAINT m_inoutlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InOutLineMA ADD CONSTRAINT m_inoutlinema_pkey PRIMARY KEY(m_inoutline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:10 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',751,7,'N','N',208342,'Y',201618,'N','This field is used to record time used for LIFO and FIFO material policy','D','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','c489cb75-8f36-4818-a77c-a30ba8ae5ac2',100,0,TO_TIMESTAMP('2012-12-25 20:14:09','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-12-25 20:14:09','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:10 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201618 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:11 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',751,36,'N','N',60900,'Y',201619,'N','D','M_InOutLineMA_UU','N','Y','74956b1b-7def-46f8-a9a5-eeb0575fe4bb',100,0,TO_TIMESTAMP('2012-12-25 20:14:10','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-12-25 20:14:10','YYYY-MM-DD HH24:MI:SS'),'Y')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:14:11 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201619 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:16:53 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=201619
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:16:53 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=12195
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=201619
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=12197
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=12198
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=12194
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=12196
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 25, 2012 8:17:04 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:03 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,764,210651,'N','N','N',0,'N',7,'N',16,'N','N','Y','b261acf8-ab20-4532-ad4e-fd1f122231cf','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_TIMESTAMP('2013-07-16 10:14:02','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2013-07-16 10:14:02','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:04 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210651 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:14:26 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_MovementLineMA ADD COLUMN DateMaterialPolicy TIMESTAMP DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_MovementLineMA SET DateMaterialPolicy = (SELECT Date(m.MovementDate) FROM M_Movement m JOIN M_MovementLine ml ON (m.M_Movement_ID=ml.M_Movement_ID) WHERE ml.M_MovementLine_ID=M_MovementLineMA.M_MovementLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA ALTER COLUMN DateMaterialPolicy SET NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA DROP CONSTRAINT m_movementlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_MovementLineMA ADD CONSTRAINT m_movementlinema_pkey PRIMARY KEY(m_movementline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:20 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',750,36,'N','N',60914,60,'Y',202287,'N','M_MovementLineMA_UU','N','N','33f63b7c-5503-4f61-a18d-7ba082506da0',100,0,TO_TIMESTAMP('2013-07-16 10:18:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 10:18:19','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:20 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202287 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:21 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',750,7,'N','N',210651,70,'Y',202288,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','c1bdc238-1b5a-4d3e-b321-86b285dd9a12',100,0,TO_TIMESTAMP('2013-07-16 10:18:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 10:18:20','YYYY-MM-DD HH24:MI:SS'),'Y',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:18:21 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202288 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12188
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1, ColumnSpan=2,Updated=TO_TIMESTAMP('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12191
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60,Updated=TO_TIMESTAMP('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202288
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:19:33 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,Updated=TO_TIMESTAMP('2013-07-16 10:19:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202287
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:20:08 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 10:20:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202288
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12194
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1,Updated=TO_TIMESTAMP('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12196
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 10:21:06 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 10:21:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201618
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:33:25 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,763,210653,'N','N','N',0,'N',7,'N',16,'N','N','Y','b14bae38-065a-4daa-9ad5-94b96062e511','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_TIMESTAMP('2013-07-16 11:33:24','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2013-07-16 11:33:24','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:33:25 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210653 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:35:42 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET EntityType='D',Updated=TO_TIMESTAMP('2013-07-16 11:35:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:35:52 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_InventoryLineMA ADD COLUMN DateMaterialPolicy TIMESTAMP DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_InventoryLineMA SET DateMaterialPolicy = (SELECT Date(i.MovementDate) FROM M_Inventory i JOIN M_InventoryLine il ON (i.M_Inventory_ID=il.M_Inventory_ID) WHERE il.M_InventoryLine_ID=M_InventoryLineMA.M_InventoryLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InventoryLineMA ALTER COLUMN DateMaterialPolicy SET NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_InventoryLineMA ADD CONSTRAINT m_inventorylinema_pkey PRIMARY KEY(m_inventoryline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:10 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',749,36,'N','N',60903,60,'Y',202289,'N','M_InventoryLineMA_UU','N','N','a3609970-e680-491b-a608-100617e5eb64',100,0,TO_TIMESTAMP('2013-07-16 11:36:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 11:36:09','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:10 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202289 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:11 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',749,7,'N','N',210653,70,'Y',202290,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','N','Y','4318813a-f3e7-43d6-a795-7682a2b37fd6',100,0,TO_TIMESTAMP('2013-07-16 11:36:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 11:36:10','YYYY-MM-DD HH24:MI:SS'),'Y',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:11 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202290 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=40, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12182
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=50, IsDisplayed='Y', XPosition=1,Updated=TO_TIMESTAMP('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12184
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202290
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 16, 2013 11:36:34 AM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=0,Updated=TO_TIMESTAMP('2013-07-16 11:36:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202289
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:07:09 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan,EntityType) VALUES ('N',321,36,'N','N',60929,130,'Y',202335,'N','M_ProductionLine_UU','N','N','976abb9e-bb13-4a15-a379-e74764a407f0',100,0,TO_TIMESTAMP('2013-07-17 16:07:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-17 16:07:08','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:07:09 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202335 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:07 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted,AD_Client_ID,EntityType,AD_Element_ID) VALUES (0,'N',0,765,210658,'N','N','N',0,'N',7,'N',16,'N','N','Y','7834c3ff-8c66-441c-bc49-9430e9861db2','Y','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','Y',100,TO_TIMESTAMP('2013-07-17 16:09:06','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2013-07-17 16:09:06','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N',0,'D',202184)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:07 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210658 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jul 17, 2013 4:09:17 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
ALTER TABLE M_ProductionLineMA ADD COLUMN DateMaterialPolicy TIMESTAMP DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE M_ProductionLineMA SET DateMaterialPolicy = (SELECT Date(p.MovementDate) FROM M_Production p JOIN M_ProductionLine pl ON (p.M_Production_ID=pl.M_Production_ID) WHERE pl.M_ProductionLine_ID=M_ProductionLineMA.M_ProductionLine_ID) WHERE DateMaterialPolicy IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA ALTER COLUMN DateMaterialPolicy SET NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA DROP CONSTRAINT m_productionlinema_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_ProductionLineMA ADD CONSTRAINT m_productionlinema_pkey PRIMARY KEY(m_productionline_id, m_attributesetinstance_id, datematerialpolicy)
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE m_storageonhand DROP CONSTRAINT m_storageonhand_pkey
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
Update M_StorageOnHand SET DateMaterialPolicy = Date(Created)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:45:42 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsMandatory='Y',Updated=TO_TIMESTAMP('2013-08-03 14:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:46:05 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO t_alter_column values('m_storageonhand','DateMaterialPolicy','TIMESTAMP',null,null)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 3, 2013 2:46:05 PM IST
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO t_alter_column values('m_storageonhand','DateMaterialPolicy',null,'NOT NULL',null)
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE M_StorageOnHand ADD CONSTRAINT m_storageonhand_pkey PRIMARY KEY (m_product_id , m_locator_id , m_attributesetinstance_id, DateMaterialPolicy )
|
||||||
|
;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW m_storage
|
||||||
|
AS
|
||||||
|
SELECT s.m_product_id,
|
||||||
|
s.m_locator_id,
|
||||||
|
s.ad_client_id,
|
||||||
|
s.ad_org_id,
|
||||||
|
s.isactive,
|
||||||
|
s.created,
|
||||||
|
s.createdby,
|
||||||
|
s.updated,
|
||||||
|
s.updatedby,
|
||||||
|
s.qtyonhand,
|
||||||
|
0 AS qtyreserved,
|
||||||
|
0 AS qtyordered,
|
||||||
|
s.datelastinventory,
|
||||||
|
s.m_attributesetinstance_id,
|
||||||
|
s.m_storageonhand_uu AS m_storage_uu,
|
||||||
|
s.datematerialpolicy AS datematerialpolicy
|
||||||
|
FROM m_storageonhand s
|
||||||
|
UNION
|
||||||
|
SELECT sr.m_product_id,
|
||||||
|
w.m_reservelocator_id AS m_locator_id,
|
||||||
|
sr.ad_client_id,
|
||||||
|
sr.ad_org_id,
|
||||||
|
sr.isactive,
|
||||||
|
sr.created,
|
||||||
|
sr.createdby,
|
||||||
|
sr.updated,
|
||||||
|
sr.updatedby,
|
||||||
|
0 AS qtyonhand,
|
||||||
|
sr.qty AS qtyreserved,
|
||||||
|
0 AS qtyordered,
|
||||||
|
sr.datelastinventory,
|
||||||
|
sr.m_attributesetinstance_id,
|
||||||
|
sr.m_storagereservation_uu AS m_storage_uu,
|
||||||
|
null as datematerialpolicy
|
||||||
|
FROM m_storagereservation sr
|
||||||
|
JOIN m_warehouse w
|
||||||
|
ON sr.m_warehouse_id = w.m_warehouse_id
|
||||||
|
WHERE sr.issotrx = 'Y' and sr.qty <> 0
|
||||||
|
UNION
|
||||||
|
SELECT so.m_product_id,
|
||||||
|
w.m_reservelocator_id AS m_locator_id,
|
||||||
|
so.ad_client_id,
|
||||||
|
so.ad_org_id,
|
||||||
|
so.isactive,
|
||||||
|
so.created,
|
||||||
|
so.createdby,
|
||||||
|
so.updated,
|
||||||
|
so.updatedby,
|
||||||
|
0 AS qtyonhand,
|
||||||
|
0 AS qtyreserved,
|
||||||
|
so.qty AS qtyordered,
|
||||||
|
so.datelastinventory,
|
||||||
|
so.m_attributesetinstance_id,
|
||||||
|
so.m_storagereservation_uu AS m_storage_uu,
|
||||||
|
null as datematerialpolicy
|
||||||
|
FROM m_storagereservation so
|
||||||
|
JOIN m_warehouse w
|
||||||
|
ON so.m_warehouse_id = w.m_warehouse_id
|
||||||
|
WHERE so.issotrx = 'N' and so.qty <> 0
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:48:19 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',1,250,1003519,'N','N','N',0,'N',7,'N',16,'N','N','N','e7fac848-ba58-41ac-81f3-bac9f3c81e62','N','DateMaterialPolicy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy','Date Material Policy','N',TO_TIMESTAMP('2013-10-16 17:48:19','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-10-16 17:48:19','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202184,'N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:48:56 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
INSERT INTO AD_Field (SortNo,IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,SeqNoGrid,XPosition,IsQuickEntry,AD_Client_ID,ColumnSpan,NumLines,EntityType,IsAdvancedField,IsDefaultFocus) VALUES (0,'N',53244,0,'N','N',1003519,110,'Y',1002071,'N','This field is used to record time used for LIFO and FIFO material policy','Time used for LIFO and FIFO Material Policy','Date Material Policy','cf628432-e15e-47fe-af1d-9803f5b155b8','Y','N',100,0,TO_TIMESTAMP('2013-10-16 17:48:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-10-16 17:48:56','YYYY-MM-DD HH24:MI:SS'),'Y','Y',110,1,'N',0,2,1,'D','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1002071
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=90,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=100,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57396
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:49:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNo=110,Updated=TO_TIMESTAMP('2013-10-16 17:49:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57399
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:26 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=60,Updated=TO_TIMESTAMP('2013-10-16 17:50:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1002071
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=70,Updated=TO_TIMESTAMP('2013-10-16 17:50:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:44 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=80,Updated=TO_TIMESTAMP('2013-10-16 17:50:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:50:53 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=90,Updated=TO_TIMESTAMP('2013-10-16 17:50:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:51:03 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=100,Updated=TO_TIMESTAMP('2013-10-16 17:51:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57396
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 5:51:14 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Field SET SeqNoGrid=110,Updated=TO_TIMESTAMP('2013-10-16 17:51:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57399
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:01:34 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:01:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:03:45 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:03:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:04:25 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:04:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:05:02 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:05:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210651
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:05:35 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:05:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210658
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2013 8:06:41 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=15,Updated=TO_TIMESTAMP('2013-10-16 20:06:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=1003519
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:05:31 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2013-10-17 16:05:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208340
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:06:52 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2013-10-17 16:06:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:07:28 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2013-10-17 16:07:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210653
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:08:06 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2013-10-17 16:08:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210651
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 17, 2013 4:09:51 PM MYT
|
||||||
|
-- IDEMPIERE-386 Redesign ASI usage for FIFO
|
||||||
|
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2013-10-17 16:09:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210658
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201310141246_IDEMPIERE-386.sql') FROM dual
|
||||||
|
;
|
|
@ -123,7 +123,7 @@ public class CalloutMovement extends CalloutEngine
|
||||||
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = Env.ZERO;
|
BigDecimal available = Env.ZERO;
|
||||||
if (M_AttributeSetInstance_ID > 0) {
|
if (M_AttributeSetInstance_ID > 0) {
|
||||||
MStorageOnHand oh = MStorageOnHand.get(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, null);
|
MStorageOnHand oh = MStorageOnHand.get(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, null,null);
|
||||||
if (oh != null)
|
if (oh != null)
|
||||||
available = oh.getQtyOnHand();
|
available = oh.getQtyOnHand();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -64,7 +65,7 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
|
|
||||||
/** Inventory Line */
|
/** Inventory Line */
|
||||||
private MInventoryLine m_line = null;
|
private MInventoryLine m_line = null;
|
||||||
|
private Timestamp oldDateMPolicy = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare - e.g., get Parameters.
|
* Prepare - e.g., get Parameters.
|
||||||
|
@ -160,8 +161,8 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder("SELECT s.M_Product_ID, s.M_Locator_ID, s.M_AttributeSetInstance_ID,");
|
StringBuilder sql = new StringBuilder("SELECT s.M_Product_ID, s.M_Locator_ID, s.M_AttributeSetInstance_ID,");
|
||||||
sql.append(" s.QtyOnHand, p.M_AttributeSet_ID ");
|
sql.append(" s.QtyOnHand, p.M_AttributeSet_ID ,s.DateMaterialPolicy");
|
||||||
sql.append("FROM M_Product p");
|
sql.append(" FROM M_Product p");
|
||||||
sql.append(" INNER JOIN M_StorageOnHand s ON (s.M_Product_ID=p.M_Product_ID)");
|
sql.append(" INNER JOIN M_StorageOnHand s ON (s.M_Product_ID=p.M_Product_ID)");
|
||||||
sql.append(" INNER JOIN M_Locator l ON (s.M_Locator_ID=l.M_Locator_ID) ");
|
sql.append(" INNER JOIN M_Locator l ON (s.M_Locator_ID=l.M_Locator_ID) ");
|
||||||
sql.append("WHERE l.M_Warehouse_ID=?");
|
sql.append("WHERE l.M_Warehouse_ID=?");
|
||||||
|
@ -224,6 +225,8 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
if (QtyOnHand == null)
|
if (QtyOnHand == null)
|
||||||
QtyOnHand = Env.ZERO;
|
QtyOnHand = Env.ZERO;
|
||||||
int M_AttributeSet_ID = rs.getInt(5);
|
int M_AttributeSet_ID = rs.getInt(5);
|
||||||
|
|
||||||
|
Timestamp dateMpolicy = rs.getTimestamp(6);
|
||||||
//
|
//
|
||||||
int compare = QtyOnHand.compareTo(Env.ZERO);
|
int compare = QtyOnHand.compareTo(Env.ZERO);
|
||||||
if (p_QtyRange == null
|
if (p_QtyRange == null
|
||||||
|
@ -233,7 +236,7 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
|| (p_QtyRange.equals("N") && compare != 0))
|
|| (p_QtyRange.equals("N") && compare != 0))
|
||||||
{
|
{
|
||||||
count += createInventoryLine (M_Locator_ID, M_Product_ID,
|
count += createInventoryLine (M_Locator_ID, M_Product_ID,
|
||||||
M_AttributeSetInstance_ID, QtyOnHand, M_AttributeSet_ID);
|
M_AttributeSetInstance_ID, QtyOnHand, M_AttributeSet_ID,dateMpolicy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -273,7 +276,7 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
* @return lines added
|
* @return lines added
|
||||||
*/
|
*/
|
||||||
private int createInventoryLine (int M_Locator_ID, int M_Product_ID,
|
private int createInventoryLine (int M_Locator_ID, int M_Product_ID,
|
||||||
int M_AttributeSetInstance_ID, BigDecimal QtyOnHand, int M_AttributeSet_ID)
|
int M_AttributeSetInstance_ID, BigDecimal QtyOnHand, int M_AttributeSet_ID,Timestamp dateMPolicy)
|
||||||
{
|
{
|
||||||
boolean oneLinePerASI = false;
|
boolean oneLinePerASI = false;
|
||||||
if (M_AttributeSet_ID != 0)
|
if (M_AttributeSet_ID != 0)
|
||||||
|
@ -301,7 +304,7 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
if (QtyOnHand.signum() == 0)
|
if (QtyOnHand.signum() == 0)
|
||||||
return 0;
|
return 0;
|
||||||
// Same ASI (usually 0)
|
// Same ASI (usually 0)
|
||||||
if (m_line.getM_AttributeSetInstance_ID() == M_AttributeSetInstance_ID)
|
if (m_line.getM_AttributeSetInstance_ID() == M_AttributeSetInstance_ID && ((dateMPolicy==null && oldDateMPolicy==null) || (dateMPolicy!=null && dateMPolicy.equals(oldDateMPolicy)) || (oldDateMPolicy!=null && oldDateMPolicy.equals(dateMPolicy))))
|
||||||
{
|
{
|
||||||
m_line.setQtyBook(m_line.getQtyBook().add(QtyOnHand));
|
m_line.setQtyBook(m_line.getQtyBook().add(QtyOnHand));
|
||||||
m_line.setQtyCount(m_line.getQtyCount().add(QtyOnHand));
|
m_line.setQtyCount(m_line.getQtyCount().add(QtyOnHand));
|
||||||
|
@ -312,7 +315,7 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
else if (m_line.getM_AttributeSetInstance_ID() != 0)
|
else if (m_line.getM_AttributeSetInstance_ID() != 0)
|
||||||
{
|
{
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (m_line,
|
MInventoryLineMA ma = new MInventoryLineMA (m_line,
|
||||||
m_line.getM_AttributeSetInstance_ID(), m_line.getQtyBook());
|
m_line.getM_AttributeSetInstance_ID(), m_line.getQtyBook(),oldDateMPolicy);
|
||||||
if (!ma.save())
|
if (!ma.save())
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -320,9 +323,10 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
m_line.setQtyBook(m_line.getQtyBook().add(QtyOnHand));
|
m_line.setQtyBook(m_line.getQtyBook().add(QtyOnHand));
|
||||||
m_line.setQtyCount(m_line.getQtyCount().add(QtyOnHand));
|
m_line.setQtyCount(m_line.getQtyCount().add(QtyOnHand));
|
||||||
m_line.saveEx();
|
m_line.saveEx();
|
||||||
|
|
||||||
//
|
//
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (m_line,
|
MInventoryLineMA ma = new MInventoryLineMA (m_line,
|
||||||
M_AttributeSetInstance_ID, QtyOnHand);
|
M_AttributeSetInstance_ID, QtyOnHand,dateMPolicy);
|
||||||
if (!ma.save())
|
if (!ma.save())
|
||||||
;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -331,6 +335,8 @@ public class InventoryCountCreate extends SvrProcess
|
||||||
m_line = new MInventoryLine (m_inventory, M_Locator_ID,
|
m_line = new MInventoryLine (m_inventory, M_Locator_ID,
|
||||||
M_Product_ID, M_AttributeSetInstance_ID,
|
M_Product_ID, M_AttributeSetInstance_ID,
|
||||||
QtyOnHand, QtyOnHand); // book/count
|
QtyOnHand, QtyOnHand); // book/count
|
||||||
|
|
||||||
|
oldDateMPolicy = dateMPolicy;
|
||||||
if (m_line.save())
|
if (m_line.save())
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -160,7 +160,7 @@ public class InventoryCountUpdate extends SvrProcess
|
||||||
continue;
|
continue;
|
||||||
// Save ASI
|
// Save ASI
|
||||||
ma = new MInventoryLineMA (il,
|
ma = new MInventoryLineMA (il,
|
||||||
storage.getM_AttributeSetInstance_ID(), storage.getQtyOnHand());
|
storage.getM_AttributeSetInstance_ID(), storage.getQtyOnHand(),storage.getDateMaterialPolicy());
|
||||||
if (!ma.save())
|
if (!ma.save())
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.sql.Timestamp;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.model.MAttributeSetInstance;
|
||||||
import org.compiere.model.MClient;
|
import org.compiere.model.MClient;
|
||||||
import org.compiere.model.MLocator;
|
import org.compiere.model.MLocator;
|
||||||
import org.compiere.model.MProduct;
|
import org.compiere.model.MProduct;
|
||||||
|
@ -155,11 +156,20 @@ public class M_Production_Run extends SvrProcess {
|
||||||
MovementType = MTransaction.MOVEMENTTYPE_Production_;
|
MovementType = MTransaction.MOVEMENTTYPE_Production_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timestamp dateMPolicy = production.getMovementDate();
|
||||||
|
if(pline.getM_AttributeSetInstance_ID()>0){
|
||||||
|
if(pline.getM_AttributeSetInstance_ID()>0){
|
||||||
|
MAttributeSetInstance asi = new MAttributeSetInstance(getCtx(), pline.getM_AttributeSetInstance_ID(), get_TrxName());
|
||||||
|
dateMPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!MStorageOnHand.add(getCtx(), locator.getM_Warehouse_ID(),
|
if (!MStorageOnHand.add(getCtx(), locator.getM_Warehouse_ID(),
|
||||||
locator.getM_Locator_ID(),
|
locator.getM_Locator_ID(),
|
||||||
pline.getM_Product_ID(),
|
pline.getM_Product_ID(),
|
||||||
pline.getM_AttributeSetInstance_ID(),
|
pline.getM_AttributeSetInstance_ID(),
|
||||||
MovementQty,
|
MovementQty,
|
||||||
|
dateMPolicy,
|
||||||
get_TrxName()))
|
get_TrxName()))
|
||||||
{
|
{
|
||||||
raiseError("Cannot correct Inventory", "");
|
raiseError("Cannot correct Inventory", "");
|
||||||
|
|
|
@ -353,4 +353,13 @@ public interface I_M_AttributeSet
|
||||||
* User who updated this records
|
* User who updated this records
|
||||||
*/
|
*/
|
||||||
public int getUpdatedBy();
|
public int getUpdatedBy();
|
||||||
|
|
||||||
|
/** Column name UseGuaranteeDateForMPolicy */
|
||||||
|
public static final String COLUMNNAME_UseGuaranteeDateForMPolicy = "UseGuaranteeDateForMPolicy";
|
||||||
|
|
||||||
|
/** Set Use Guarantee Date for Material Policy */
|
||||||
|
public void setUseGuaranteeDateForMPolicy (boolean UseGuaranteeDateForMPolicy);
|
||||||
|
|
||||||
|
/** Get Use Guarantee Date for Material Policy */
|
||||||
|
public boolean isUseGuaranteeDateForMPolicy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,19 @@ public interface I_M_InOutLineMA
|
||||||
*/
|
*/
|
||||||
public int getCreatedBy();
|
public int getCreatedBy();
|
||||||
|
|
||||||
|
/** Column name DateMaterialPolicy */
|
||||||
|
public static final String COLUMNNAME_DateMaterialPolicy = "DateMaterialPolicy";
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy);
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy();
|
||||||
|
|
||||||
/** Column name IsActive */
|
/** Column name IsActive */
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,19 @@ public interface I_M_InventoryLineMA
|
||||||
*/
|
*/
|
||||||
public int getCreatedBy();
|
public int getCreatedBy();
|
||||||
|
|
||||||
|
/** Column name DateMaterialPolicy */
|
||||||
|
public static final String COLUMNNAME_DateMaterialPolicy = "DateMaterialPolicy";
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy);
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy();
|
||||||
|
|
||||||
/** Column name IsActive */
|
/** Column name IsActive */
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,19 @@ public interface I_M_MovementLineMA
|
||||||
*/
|
*/
|
||||||
public int getCreatedBy();
|
public int getCreatedBy();
|
||||||
|
|
||||||
|
/** Column name DateMaterialPolicy */
|
||||||
|
public static final String COLUMNNAME_DateMaterialPolicy = "DateMaterialPolicy";
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy);
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy();
|
||||||
|
|
||||||
/** Column name IsActive */
|
/** Column name IsActive */
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,19 @@ public interface I_M_ProductionLineMA
|
||||||
*/
|
*/
|
||||||
public int getCreatedBy();
|
public int getCreatedBy();
|
||||||
|
|
||||||
|
/** Column name DateMaterialPolicy */
|
||||||
|
public static final String COLUMNNAME_DateMaterialPolicy = "DateMaterialPolicy";
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy);
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy();
|
||||||
|
|
||||||
/** Column name IsActive */
|
/** Column name IsActive */
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,19 @@ public interface I_M_StorageOnHand
|
||||||
*/
|
*/
|
||||||
public Timestamp getDateLastInventory();
|
public Timestamp getDateLastInventory();
|
||||||
|
|
||||||
|
/** Column name DateMaterialPolicy */
|
||||||
|
public static final String COLUMNNAME_DateMaterialPolicy = "DateMaterialPolicy";
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy);
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
* Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy();
|
||||||
|
|
||||||
/** Column name IsActive */
|
/** Column name IsActive */
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
|
|
@ -1329,10 +1329,14 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
boolean sameWarehouse = true;
|
boolean sameWarehouse = true;
|
||||||
// Reservation ASI - assume none
|
// Reservation ASI - assume none
|
||||||
int reservationAttributeSetInstance_ID = 0; // sLine.getM_AttributeSetInstance_ID();
|
int reservationAttributeSetInstance_ID = 0; // sLine.getM_AttributeSetInstance_ID();
|
||||||
|
int reservationWarehouse_ID = getM_Warehouse_ID();
|
||||||
if (oLine != null) {
|
if (oLine != null) {
|
||||||
reservationAttributeSetInstance_ID = oLine.getM_AttributeSetInstance_ID();
|
reservationAttributeSetInstance_ID = oLine.getM_AttributeSetInstance_ID();
|
||||||
sameWarehouse = oLine.getM_Warehouse_ID()==getM_Warehouse_ID();
|
sameWarehouse = oLine.getM_Warehouse_ID()==getM_Warehouse_ID();
|
||||||
}
|
}
|
||||||
|
if(!sameWarehouse){
|
||||||
|
reservationWarehouse_ID = oLine.getM_Warehouse_ID();
|
||||||
|
}
|
||||||
//
|
//
|
||||||
if (sLine.getM_AttributeSetInstance_ID() == 0)
|
if (sLine.getM_AttributeSetInstance_ID() == 0)
|
||||||
{
|
{
|
||||||
|
@ -1345,13 +1349,9 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
if (MovementType.charAt(1) == '-') // C- Customer Shipment - V- Vendor Return
|
if (MovementType.charAt(1) == '-') // C- Customer Shipment - V- Vendor Return
|
||||||
QtyMA = QtyMA.negate();
|
QtyMA = QtyMA.negate();
|
||||||
BigDecimal reservedDiff = Env.ZERO;
|
BigDecimal reservedDiff = Env.ZERO;
|
||||||
BigDecimal orderedDiff = Env.ZERO;
|
|
||||||
if (sLine.getC_OrderLine_ID() != 0)
|
if (sLine.getC_OrderLine_ID() != 0)
|
||||||
{
|
{
|
||||||
if (isSOTrx())
|
reservedDiff = ma.getMovementQty().negate();
|
||||||
reservedDiff = ma.getMovementQty().negate();
|
|
||||||
else
|
|
||||||
orderedDiff = ma.getMovementQty().negate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Storage - see also VMatch.createMatchRecord
|
// Update Storage - see also VMatch.createMatchRecord
|
||||||
|
@ -1359,65 +1359,27 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
sLine.getM_Locator_ID(),
|
sLine.getM_Locator_ID(),
|
||||||
sLine.getM_Product_ID(),
|
sLine.getM_Product_ID(),
|
||||||
ma.getM_AttributeSetInstance_ID(),
|
ma.getM_AttributeSetInstance_ID(),
|
||||||
QtyMA,
|
QtyMA,ma.getDateMaterialPolicy(),
|
||||||
get_TrxName()))
|
get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) [" + product.getValue() + "] - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) [" + product.getValue() + "] - " + lastError;
|
||||||
return DocAction.STATUS_Invalid;
|
return DocAction.STATUS_Invalid;
|
||||||
}
|
}
|
||||||
if (sameWarehouse && reservedDiff.signum() != 0) {
|
if (reservedDiff.signum() != 0) {
|
||||||
if (!MStorageReservation.add(getCtx(), getM_Warehouse_ID(),
|
if (!MStorageReservation.add(getCtx(), reservationWarehouse_ID,
|
||||||
sLine.getM_Product_ID(),
|
sLine.getM_Product_ID(),
|
||||||
ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
||||||
reservedDiff,
|
reservedDiff,
|
||||||
true,
|
isSOTrx(),
|
||||||
get_TrxName()))
|
get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory Reserved (MA) [" + product.getValue() + "] - " + lastError;
|
m_processMsg = "Cannot correct Inventory " + (isSOTrx()? "Reserved" : "Ordered") + " (MA) - [" + product.getValue() + "] - " + lastError;
|
||||||
return DocAction.STATUS_Invalid;
|
return DocAction.STATUS_Invalid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sameWarehouse && orderedDiff.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
orderedDiff,
|
|
||||||
false,
|
|
||||||
get_TrxName()))
|
|
||||||
{
|
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
|
||||||
m_processMsg = "Cannot correct Inventory Ordered (MA) [" + product.getValue() + "] - " + lastError;
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!sameWarehouse) {
|
|
||||||
//correct qtyOrdered in warehouse of order
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
MWarehouse wh = MWarehouse.get(getCtx(), oLine.getM_Warehouse_ID());
|
|
||||||
if (reservedDiff.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), oLine.getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
reservedDiff, true, get_TrxName()))
|
|
||||||
{
|
|
||||||
m_processMsg = "Cannot correct Inventory Reserved (MA) in order warehouse [" + product.getValue() + "]";
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (orderedDiff.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), oLine.getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
orderedDiff, false, get_TrxName()))
|
|
||||||
{
|
|
||||||
m_processMsg = "Cannot correct Inventory Ordered (MA) in order warehouse [" + product.getValue() + "]";
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Create Transaction
|
// Create Transaction
|
||||||
mtrx = new MTransaction (getCtx(), sLine.getAD_Org_ID(),
|
mtrx = new MTransaction (getCtx(), sLine.getAD_Org_ID(),
|
||||||
MovementType, sLine.getM_Locator_ID(),
|
MovementType, sLine.getM_Locator_ID(),
|
||||||
|
@ -1434,65 +1396,40 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
// sLine.getM_AttributeSetInstance_ID() != 0
|
// sLine.getM_AttributeSetInstance_ID() != 0
|
||||||
if (mtrx == null)
|
if (mtrx == null)
|
||||||
{
|
{
|
||||||
BigDecimal reservedDiff = sameWarehouse ? QtySO.negate() : Env.ZERO;
|
BigDecimal reservedDiff = null;
|
||||||
BigDecimal orderedDiff = sameWarehouse ? QtyPO.negate(): Env.ZERO;
|
if(isSOTrx())
|
||||||
|
reservedDiff = QtySO.negate();
|
||||||
|
else
|
||||||
|
reservedDiff = QtyPO.negate();
|
||||||
|
|
||||||
|
Timestamp dateMPolicy = getMovementDate();
|
||||||
|
if(sLine.getM_AttributeSetInstance_ID()>0){
|
||||||
|
I_M_AttributeSetInstance asi = sLine.getM_AttributeSetInstance();
|
||||||
|
dateMPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
|
||||||
// Fallback: Update Storage - see also VMatch.createMatchRecord
|
// Fallback: Update Storage - see also VMatch.createMatchRecord
|
||||||
if (!MStorageOnHand.add(getCtx(), getM_Warehouse_ID(),
|
if (!MStorageOnHand.add(getCtx(), getM_Warehouse_ID(),
|
||||||
sLine.getM_Locator_ID(),
|
sLine.getM_Locator_ID(),
|
||||||
sLine.getM_Product_ID(),
|
sLine.getM_Product_ID(),
|
||||||
sLine.getM_AttributeSetInstance_ID(),
|
sLine.getM_AttributeSetInstance_ID(),
|
||||||
Qty, get_TrxName()))
|
Qty,dateMPolicy,get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand [" + product.getValue() + "] - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand [" + product.getValue() + "] - " + lastError;
|
||||||
return DocAction.STATUS_Invalid;
|
return DocAction.STATUS_Invalid;
|
||||||
}
|
}
|
||||||
if (reservedDiff.signum() != 0) {
|
if (reservedDiff.signum() != 0) {
|
||||||
if (!MStorageReservation.add(getCtx(), getM_Warehouse_ID(),
|
if (!MStorageReservation.add(getCtx(), reservationWarehouse_ID,
|
||||||
sLine.getM_Product_ID(),
|
sLine.getM_Product_ID(),
|
||||||
sLine.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
sLine.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
||||||
reservedDiff, true, get_TrxName()))
|
reservedDiff, isSOTrx(), get_TrxName()))
|
||||||
{
|
{
|
||||||
m_processMsg = "Cannot correct Inventory Reserved [" + product.getValue() + "]";
|
m_processMsg = "Cannot correct Inventory Reserved " + (isSOTrx()? "Reserved [" :"Ordered [") + product.getValue() + "]";
|
||||||
return DocAction.STATUS_Invalid;
|
return DocAction.STATUS_Invalid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (orderedDiff.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
sLine.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
orderedDiff, false, get_TrxName()))
|
|
||||||
{
|
|
||||||
m_processMsg = "Cannot correct Inventory Ordered [" + product.getValue() + "]";
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!sameWarehouse) {
|
|
||||||
//correct qtyOrdered in warehouse of order
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
MWarehouse wh = MWarehouse.get(getCtx(), oLine.getM_Warehouse_ID());
|
|
||||||
if (QtySO.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), oLine.getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
sLine.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
QtySO.negate(), true, get_TrxName()))
|
|
||||||
{
|
|
||||||
m_processMsg = "Cannot correct Inventory Reserved [" + product.getValue() + "]";
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (QtyPO.signum() != 0) {
|
|
||||||
if (!MStorageReservation.add(getCtx(), oLine.getM_Warehouse_ID(),
|
|
||||||
sLine.getM_Product_ID(),
|
|
||||||
sLine.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
|
|
||||||
QtyPO.negate(), false, get_TrxName()))
|
|
||||||
{
|
|
||||||
m_processMsg = "Cannot correct Inventory Ordered [" + product.getValue() + "]";
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// FallBack: Create Transaction
|
// FallBack: Create Transaction
|
||||||
mtrx = new MTransaction (getCtx(), sLine.getAD_Org_ID(),
|
mtrx = new MTransaction (getCtx(), sLine.getAD_Org_ID(),
|
||||||
MovementType, sLine.getM_Locator_ID(),
|
MovementType, sLine.getM_Locator_ID(),
|
||||||
|
@ -1836,29 +1773,46 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
if (product != null && line.getM_AttributeSetInstance_ID() == 0)
|
if (product != null && line.getM_AttributeSetInstance_ID() == 0)
|
||||||
{
|
{
|
||||||
//Validate Transaction
|
//Validate Transaction
|
||||||
if (getMovementType().compareTo(MInOut.MOVEMENTTYPE_CustomerReturns) == 0
|
if (getMovementType().compareTo(MInOut.MOVEMENTTYPE_VendorReceipts) == 0 )
|
||||||
|| getMovementType().compareTo(MInOut.MOVEMENTTYPE_VendorReceipts) == 0 )
|
|
||||||
{
|
{
|
||||||
MAttributeSetInstance asi = null;
|
|
||||||
//auto balance negative on hand
|
//auto balance negative on hand
|
||||||
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
BigDecimal qtyToReceive = autoBalanceNegative(line, product);
|
||||||
null, MClient.MMPOLICY_FiFo.equals(product.getMMPolicy()), false, line.getM_Locator_ID(), get_TrxName());
|
|
||||||
for (MStorageOnHand storage : storages)
|
//Allocate remaining qty.
|
||||||
|
if (qtyToReceive.compareTo(Env.ZERO)>0)
|
||||||
{
|
{
|
||||||
if (storage.getQtyOnHand().signum() < 0)
|
MInOutLineMA ma = MInOutLineMA.addOrCreate(line, 0, qtyToReceive, getMovementDate());
|
||||||
{
|
ma.saveEx();
|
||||||
asi = new MAttributeSetInstance(getCtx(), storage.getM_AttributeSetInstance_ID(), get_TrxName());
|
}
|
||||||
break;
|
|
||||||
|
} else if (getMovementType().compareTo(MInOut.MOVEMENTTYPE_CustomerReturns) == 0){
|
||||||
|
BigDecimal qtyToReturn = autoBalanceNegative(line, product);
|
||||||
|
|
||||||
|
if (line.getM_RMALine_ID()!=0 && qtyToReturn.compareTo(Env.ZERO)>0){
|
||||||
|
//Linking to shipment line
|
||||||
|
MRMALine rmaLine = new MRMALine(getCtx(), line.getM_RMALine_ID(), get_TrxName());
|
||||||
|
if(rmaLine.getM_InOutLine_ID()>0){
|
||||||
|
MInOutLineMA shipmentMAS[] = MInOutLineMA.get(getCtx(), rmaLine.getM_InOutLine_ID(), get_TrxName());
|
||||||
|
for(MInOutLineMA sMA : shipmentMAS){
|
||||||
|
BigDecimal lineMAQty = qtyToReturn;
|
||||||
|
if(lineMAQty.compareTo(sMA.getMovementQty())>0){
|
||||||
|
lineMAQty = sMA.getMovementQty();
|
||||||
|
}
|
||||||
|
|
||||||
|
MInOutLineMA ma = MInOutLineMA.addOrCreate(line, sMA.getM_AttributeSetInstance_ID(), lineMAQty, sMA.getDateMaterialPolicy());
|
||||||
|
ma.saveEx();
|
||||||
|
|
||||||
|
qtyToReturn = qtyToReturn.subtract(lineMAQty);
|
||||||
|
if(qtyToReturn.compareTo(Env.ZERO)==0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//always create asi so fifo/lifo work.
|
if(qtyToReturn.compareTo(Env.ZERO)>0){
|
||||||
if (asi == null)
|
//Use movement data for Material policy if no linkage found to Shipment.
|
||||||
{
|
MInOutLineMA ma = MInOutLineMA.addOrCreate(line, 0, qtyToReturn, getMovementDate());
|
||||||
asi = MAttributeSetInstance.create(getCtx(), product, get_TrxName());
|
ma.saveEx();
|
||||||
}
|
}
|
||||||
line.setM_AttributeSetInstance_ID(asi.getM_AttributeSetInstance_ID());
|
|
||||||
if (log.isLoggable(Level.CONFIG)) log.config("New ASI=" + line);
|
|
||||||
needSave = true;
|
|
||||||
}
|
}
|
||||||
// Create consume the Attribute Set Instance using policy FIFO/LIFO
|
// Create consume the Attribute Set Instance using policy FIFO/LIFO
|
||||||
else if(getMovementType().compareTo(MInOut.MOVEMENTTYPE_VendorReturns) == 0 || getMovementType().compareTo(MInOut.MOVEMENTTYPE_CustomerShipment) == 0)
|
else if(getMovementType().compareTo(MInOut.MOVEMENTTYPE_VendorReturns) == 0 || getMovementType().compareTo(MInOut.MOVEMENTTYPE_CustomerShipment) == 0)
|
||||||
|
@ -1866,7 +1820,7 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
String MMPolicy = product.getMMPolicy();
|
String MMPolicy = product.getMMPolicy();
|
||||||
Timestamp minGuaranteeDate = getMovementDate();
|
Timestamp minGuaranteeDate = getMovementDate();
|
||||||
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
|
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
|
||||||
minGuaranteeDate, MClient.MMPOLICY_FiFo.equals(MMPolicy), true, line.getM_Locator_ID(), get_TrxName());
|
minGuaranteeDate, MClient.MMPOLICY_FiFo.equals(MMPolicy), true, line.getM_Locator_ID(), get_TrxName(), true);
|
||||||
BigDecimal qtyToDeliver = line.getMovementQty();
|
BigDecimal qtyToDeliver = line.getMovementQty();
|
||||||
for (MStorageOnHand storage: storages)
|
for (MStorageOnHand storage: storages)
|
||||||
{
|
{
|
||||||
|
@ -1874,7 +1828,7 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
{
|
{
|
||||||
MInOutLineMA ma = new MInOutLineMA (line,
|
MInOutLineMA ma = new MInOutLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
qtyToDeliver);
|
qtyToDeliver,storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = Env.ZERO;
|
qtyToDeliver = Env.ZERO;
|
||||||
}
|
}
|
||||||
|
@ -1882,7 +1836,7 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
{
|
{
|
||||||
MInOutLineMA ma = new MInOutLineMA (line,
|
MInOutLineMA ma = new MInOutLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
storage.getQtyOnHand());
|
storage.getQtyOnHand(),storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
||||||
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
||||||
|
@ -1893,11 +1847,9 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qtyToDeliver.signum() != 0)
|
if (qtyToDeliver.signum() != 0)
|
||||||
{
|
{
|
||||||
//deliver using new asi
|
//Over Delivery
|
||||||
MAttributeSetInstance asi = MAttributeSetInstance.create(getCtx(), product, get_TrxName());
|
MInOutLineMA ma = MInOutLineMA.addOrCreate(line, line.getM_AttributeSetInstance_ID(), qtyToDeliver, getMovementDate());
|
||||||
int M_AttributeSetInstance_ID = asi.getM_AttributeSetInstance_ID();
|
|
||||||
MInOutLineMA ma = new MInOutLineMA (line, M_AttributeSetInstance_ID, qtyToDeliver);
|
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("##: " + ma);
|
if (log.isLoggable(Level.FINE)) log.fine("##: " + ma);
|
||||||
}
|
}
|
||||||
|
@ -1910,6 +1862,31 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
}
|
}
|
||||||
} // checkMaterialPolicy
|
} // checkMaterialPolicy
|
||||||
|
|
||||||
|
private BigDecimal autoBalanceNegative(MInOutLine line, MProduct product) {
|
||||||
|
MStorageOnHand[] storages = MStorageOnHand.getWarehouseNegative(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
||||||
|
null, MClient.MMPOLICY_FiFo.equals(product.getMMPolicy()), line.getM_Locator_ID(), get_TrxName(), true);
|
||||||
|
|
||||||
|
Timestamp dateMPolicy = null;
|
||||||
|
BigDecimal qtyToReceive = line.getMovementQty();
|
||||||
|
|
||||||
|
for (MStorageOnHand storage : storages)
|
||||||
|
{
|
||||||
|
if (storage.getQtyOnHand().signum() < 0 && qtyToReceive.compareTo(Env.ZERO)>0)
|
||||||
|
{
|
||||||
|
dateMPolicy = storage.getDateMaterialPolicy();
|
||||||
|
BigDecimal lineMAQty = qtyToReceive;
|
||||||
|
if(lineMAQty.compareTo(storage.getQtyOnHand().negate())>0)
|
||||||
|
lineMAQty = storage.getQtyOnHand().negate();
|
||||||
|
|
||||||
|
//Using ASI from storage record
|
||||||
|
MInOutLineMA ma = new MInOutLineMA (line, storage.getM_AttributeSetInstance_ID(), lineMAQty,dateMPolicy);
|
||||||
|
ma.saveEx();
|
||||||
|
qtyToReceive = qtyToReceive.subtract(lineMAQty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return qtyToReceive;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Create Counter Document
|
* Create Counter Document
|
||||||
|
@ -2191,7 +2168,7 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
{
|
{
|
||||||
MInOutLineMA ma = new MInOutLineMA (rLine,
|
MInOutLineMA ma = new MInOutLineMA (rLine,
|
||||||
mas[j].getM_AttributeSetInstance_ID(),
|
mas[j].getM_AttributeSetInstance_ID(),
|
||||||
mas[j].getMovementQty().negate());
|
mas[j].getMovementQty().negate(),mas[j].getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,13 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shipment Material Allocation
|
* Shipment Material Allocation
|
||||||
|
@ -113,8 +116,9 @@ public class MInOutLineMA extends X_M_InOutLineMA
|
||||||
* @param parent parent
|
* @param parent parent
|
||||||
* @param M_AttributeSetInstance_ID asi
|
* @param M_AttributeSetInstance_ID asi
|
||||||
* @param MovementQty qty
|
* @param MovementQty qty
|
||||||
|
* @param DateMaterialPolicy
|
||||||
*/
|
*/
|
||||||
public MInOutLineMA (MInOutLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty)
|
public MInOutLineMA (MInOutLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty,Timestamp DateMaterialPolicy)
|
||||||
{
|
{
|
||||||
this (parent.getCtx(), 0, parent.get_TrxName());
|
this (parent.getCtx(), 0, parent.get_TrxName());
|
||||||
setClientOrg(parent);
|
setClientOrg(parent);
|
||||||
|
@ -122,7 +126,27 @@ public class MInOutLineMA extends X_M_InOutLineMA
|
||||||
//
|
//
|
||||||
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
||||||
setMovementQty(MovementQty);
|
setMovementQty(MovementQty);
|
||||||
|
if (DateMaterialPolicy == null)
|
||||||
|
{
|
||||||
|
if (M_AttributeSetInstance_ID > 0)
|
||||||
|
{
|
||||||
|
MAttributeSetInstance asi = new MAttributeSetInstance(parent.getCtx(), M_AttributeSetInstance_ID, parent.get_TrxName());
|
||||||
|
DateMaterialPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DateMaterialPolicy = parent.getParent().getMovementDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
} // MInOutLineMA
|
} // MInOutLineMA
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDateMaterialPolicy(Timestamp DateMaterialPolicy) {
|
||||||
|
if (DateMaterialPolicy != null)
|
||||||
|
DateMaterialPolicy = Util.removeTime(DateMaterialPolicy);
|
||||||
|
super.setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String Representation
|
* String Representation
|
||||||
|
@ -138,4 +162,16 @@ public class MInOutLineMA extends X_M_InOutLineMA
|
||||||
return sb.toString ();
|
return sb.toString ();
|
||||||
} // toString
|
} // toString
|
||||||
|
|
||||||
|
public static MInOutLineMA addOrCreate(MInOutLine line, int M_AttributeSetInstance_ID, BigDecimal MovementQty, Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
Query query = new Query(Env.getCtx(), I_M_InOutLineMA.Table_Name, "M_InOutLine_ID=? AND M_AttributeSetInstance_ID=? AND DateMaterialPolicy=trunc(cast(? as date))",
|
||||||
|
line.get_TrxName());
|
||||||
|
MInOutLineMA po = query.setParameters(line.getM_InOutLine_ID(), M_AttributeSetInstance_ID, DateMaterialPolicy).first();
|
||||||
|
if (po == null)
|
||||||
|
po = new MInOutLineMA(line, M_AttributeSetInstance_ID, MovementQty, DateMaterialPolicy);
|
||||||
|
else
|
||||||
|
po.setMovementQty(po.getMovementQty().add(MovementQty));
|
||||||
|
return po;
|
||||||
|
}
|
||||||
} // MInOutLineMA
|
} // MInOutLineMA
|
||||||
|
|
||||||
|
|
|
@ -461,7 +461,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
line.getM_Locator_ID(),
|
line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
ma.getM_AttributeSetInstance_ID(),
|
ma.getM_AttributeSetInstance_ID(),
|
||||||
QtyMA.negate(), get_TrxName()))
|
QtyMA.negate(),ma.getDateMaterialPolicy(), get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory (MA) - " + lastError;
|
||||||
|
@ -472,7 +472,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
if (MDocType.DOCSUBTYPEINV_PhysicalInventory.equals(docSubTypeInv))
|
if (MDocType.DOCSUBTYPEINV_PhysicalInventory.equals(docSubTypeInv))
|
||||||
{
|
{
|
||||||
MStorageOnHand storage = MStorageOnHand.get(getCtx(), line.getM_Locator_ID(),
|
MStorageOnHand storage = MStorageOnHand.get(getCtx(), line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(), ma.getM_AttributeSetInstance_ID(), get_TrxName());
|
line.getM_Product_ID(), ma.getM_AttributeSetInstance_ID(),ma.getDateMaterialPolicy(),get_TrxName());
|
||||||
storage.setDateLastInventory(getMovementDate());
|
storage.setDateLastInventory(getMovementDate());
|
||||||
if (!storage.save(get_TrxName()))
|
if (!storage.save(get_TrxName()))
|
||||||
{
|
{
|
||||||
|
@ -507,12 +507,16 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
// Fallback
|
// Fallback
|
||||||
if (mtrx == null)
|
if (mtrx == null)
|
||||||
{
|
{
|
||||||
|
Timestamp dateMPolicy= getMovementDate();
|
||||||
|
I_M_AttributeSetInstance asi = line.getM_AttributeSetInstance();
|
||||||
|
dateMPolicy =asi.getCreated();
|
||||||
|
|
||||||
//Fallback: Update Storage - see also VMatch.createMatchRecord
|
//Fallback: Update Storage - see also VMatch.createMatchRecord
|
||||||
if (!MStorageOnHand.add(getCtx(), getM_Warehouse_ID(),
|
if (!MStorageOnHand.add(getCtx(), getM_Warehouse_ID(),
|
||||||
line.getM_Locator_ID(),
|
line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
line.getM_AttributeSetInstance_ID(),
|
line.getM_AttributeSetInstance_ID(),
|
||||||
qtyDiff,get_TrxName()))
|
qtyDiff,dateMPolicy,get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
||||||
|
@ -523,7 +527,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
if (MDocType.DOCSUBTYPEINV_PhysicalInventory.equals(docSubTypeInv))
|
if (MDocType.DOCSUBTYPEINV_PhysicalInventory.equals(docSubTypeInv))
|
||||||
{
|
{
|
||||||
MStorageOnHand storage = MStorageOnHand.get(getCtx(), line.getM_Locator_ID(),
|
MStorageOnHand storage = MStorageOnHand.get(getCtx(), line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(), get_TrxName());
|
line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),dateMPolicy, get_TrxName());
|
||||||
|
|
||||||
storage.setDateLastInventory(getMovementDate());
|
storage.setDateLastInventory(getMovementDate());
|
||||||
if (!storage.save(get_TrxName()))
|
if (!storage.save(get_TrxName()))
|
||||||
|
@ -602,40 +606,49 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
MProduct product = MProduct.get(getCtx(), line.getM_Product_ID());
|
MProduct product = MProduct.get(getCtx(), line.getM_Product_ID());
|
||||||
if (qtyDiff.signum() > 0) // Incoming Trx
|
if (qtyDiff.signum() > 0) // Incoming Trx
|
||||||
{
|
{
|
||||||
MAttributeSetInstance asi = null;
|
|
||||||
//auto balance negative on hand
|
//auto balance negative on hand
|
||||||
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
MStorageOnHand[] storages = MStorageOnHand.getWarehouseNegative(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
||||||
null, MClient.MMPOLICY_FiFo.equals(product.getMMPolicy()), false, line.getM_Locator_ID(), get_TrxName());
|
null, MClient.MMPOLICY_FiFo.equals(product.getMMPolicy()), line.getM_Locator_ID(), get_TrxName(), true);
|
||||||
for (MStorageOnHand storage : storages)
|
for (MStorageOnHand storage : storages)
|
||||||
{
|
{
|
||||||
if (storage.getQtyOnHand().signum() < 0)
|
if (storage.getQtyOnHand().signum() < 0)
|
||||||
{
|
{
|
||||||
asi = new MAttributeSetInstance(getCtx(), storage.getM_AttributeSetInstance_ID(), get_TrxName());
|
BigDecimal maQty = qtyDiff;
|
||||||
break;
|
if(maQty.compareTo(storage.getQtyOnHand().negate())>0)
|
||||||
|
{
|
||||||
|
maQty = storage.getQtyOnHand().negate();
|
||||||
|
}
|
||||||
|
|
||||||
|
//backward compatibility: -ve in MA is incoming trx, +ve in MA is outgoing trx
|
||||||
|
MInventoryLineMA lineMA = new MInventoryLineMA(line, storage.getM_AttributeSetInstance_ID(), maQty.negate(), storage.getDateMaterialPolicy());
|
||||||
|
lineMA.saveEx();
|
||||||
|
|
||||||
|
qtyDiff = qtyDiff.subtract(maQty);
|
||||||
|
if (qtyDiff.compareTo(Env.ZERO)==0)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (asi == null)
|
|
||||||
|
if(qtyDiff.compareTo(Env.ZERO)>0)
|
||||||
{
|
{
|
||||||
asi = MAttributeSetInstance.create(getCtx(), product, get_TrxName());
|
MInventoryLineMA lineMA = MInventoryLineMA.addOrCreate(line, 0, qtyDiff.negate(), getMovementDate());
|
||||||
}
|
lineMA.saveEx();
|
||||||
line.setM_AttributeSetInstance_ID(asi.getM_AttributeSetInstance_ID());
|
}
|
||||||
needSave = true;
|
|
||||||
}
|
}
|
||||||
else // Outgoing Trx
|
else // Outgoing Trx
|
||||||
{
|
{
|
||||||
String MMPolicy = product.getMMPolicy();
|
String MMPolicy = product.getMMPolicy();
|
||||||
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
MStorageOnHand[] storages = MStorageOnHand.getWarehouse(getCtx(), getM_Warehouse_ID(), line.getM_Product_ID(), 0,
|
||||||
null, MClient.MMPOLICY_FiFo.equals(MMPolicy), true, line.getM_Locator_ID(), get_TrxName());
|
null, MClient.MMPOLICY_FiFo.equals(MMPolicy), true, line.getM_Locator_ID(), get_TrxName(), true);
|
||||||
|
|
||||||
BigDecimal qtyToDeliver = qtyDiff.negate();
|
BigDecimal qtyToDeliver = qtyDiff.negate();
|
||||||
|
|
||||||
for (MStorageOnHand storage: storages)
|
for (MStorageOnHand storage: storages)
|
||||||
{
|
{
|
||||||
if (storage.getQtyOnHand().compareTo(qtyToDeliver) >= 0)
|
if (storage.getQtyOnHand().compareTo(qtyToDeliver) >= 0)
|
||||||
{
|
{
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (line,
|
MInventoryLineMA ma = new MInventoryLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
qtyToDeliver);
|
qtyToDeliver,storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = Env.ZERO;
|
qtyToDeliver = Env.ZERO;
|
||||||
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
||||||
|
@ -644,8 +657,8 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
{
|
{
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (line,
|
MInventoryLineMA ma = new MInventoryLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
storage.getQtyOnHand());
|
storage.getQtyOnHand(),storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
||||||
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
||||||
}
|
}
|
||||||
|
@ -656,13 +669,9 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
// No AttributeSetInstance found for remainder
|
// No AttributeSetInstance found for remainder
|
||||||
if (qtyToDeliver.signum() != 0)
|
if (qtyToDeliver.signum() != 0)
|
||||||
{
|
{
|
||||||
//deliver using new asi
|
MInventoryLineMA lineMA = MInventoryLineMA.addOrCreate(line, 0, qtyToDeliver, getMovementDate());
|
||||||
MAttributeSetInstance asi = MAttributeSetInstance.create(getCtx(), product, get_TrxName());
|
lineMA.saveEx();
|
||||||
int M_AttributeSetInstance_ID = asi.getM_AttributeSetInstance_ID();
|
if (log.isLoggable(Level.FINE)) log.fine("##: " + lineMA);
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (line, M_AttributeSetInstance_ID , qtyToDeliver);
|
|
||||||
|
|
||||||
ma.saveEx();
|
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("##: " + ma);
|
|
||||||
}
|
}
|
||||||
} // outgoing Trx
|
} // outgoing Trx
|
||||||
|
|
||||||
|
@ -849,7 +858,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
{
|
{
|
||||||
MInventoryLineMA ma = new MInventoryLineMA (rLine,
|
MInventoryLineMA ma = new MInventoryLineMA (rLine,
|
||||||
mas[j].getM_AttributeSetInstance_ID(),
|
mas[j].getM_AttributeSetInstance_ID(),
|
||||||
mas[j].getMovementQty().negate());
|
mas[j].getMovementQty().negate(),mas[j].getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,15 @@ package org.compiere.model;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,8 +141,9 @@ public class MInventoryLineMA extends X_M_InventoryLineMA
|
||||||
* @param parent parent
|
* @param parent parent
|
||||||
* @param M_AttributeSetInstance_ID asi
|
* @param M_AttributeSetInstance_ID asi
|
||||||
* @param MovementQty qty
|
* @param MovementQty qty
|
||||||
|
* @param DateMaterialPolicy
|
||||||
*/
|
*/
|
||||||
public MInventoryLineMA (MInventoryLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty)
|
public MInventoryLineMA (MInventoryLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty,Timestamp DateMaterialPolicy)
|
||||||
{
|
{
|
||||||
this (parent.getCtx(), 0, parent.get_TrxName());
|
this (parent.getCtx(), 0, parent.get_TrxName());
|
||||||
setClientOrg(parent);
|
setClientOrg(parent);
|
||||||
|
@ -147,8 +151,28 @@ public class MInventoryLineMA extends X_M_InventoryLineMA
|
||||||
//
|
//
|
||||||
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
||||||
setMovementQty(MovementQty);
|
setMovementQty(MovementQty);
|
||||||
|
if (DateMaterialPolicy == null)
|
||||||
|
{
|
||||||
|
if (M_AttributeSetInstance_ID > 0)
|
||||||
|
{
|
||||||
|
MAttributeSetInstance asi = new MAttributeSetInstance(parent.getCtx(), M_AttributeSetInstance_ID, parent.get_TrxName());
|
||||||
|
DateMaterialPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DateMaterialPolicy = parent.getParent().getMovementDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
} // MInventoryLineMA
|
} // MInventoryLineMA
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDateMaterialPolicy(Timestamp DateMaterialPolicy) {
|
||||||
|
if (DateMaterialPolicy != null)
|
||||||
|
DateMaterialPolicy = Util.removeTime(DateMaterialPolicy);
|
||||||
|
super.setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String Representation
|
* String Representation
|
||||||
* @return info
|
* @return info
|
||||||
|
@ -163,4 +187,15 @@ public class MInventoryLineMA extends X_M_InventoryLineMA
|
||||||
return sb.toString ();
|
return sb.toString ();
|
||||||
} // toString
|
} // toString
|
||||||
|
|
||||||
|
public static MInventoryLineMA addOrCreate(MInventoryLine line, int M_AttributeSetInstance_ID, BigDecimal MovementQty, Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
Query query = new Query(Env.getCtx(), I_M_InventoryLineMA.Table_Name, "M_InventoryLine_ID=? AND M_AttributeSetInstance_ID=? AND DateMaterialPolicy=trunc(cast(? as date))",
|
||||||
|
line.get_TrxName());
|
||||||
|
MInventoryLineMA po = query.setParameters(line.getM_InventoryLine_ID(), M_AttributeSetInstance_ID, DateMaterialPolicy).first();
|
||||||
|
if (po == null)
|
||||||
|
po = new MInventoryLineMA(line, M_AttributeSetInstance_ID, MovementQty, DateMaterialPolicy);
|
||||||
|
else
|
||||||
|
po.setMovementQty(po.getMovementQty().add(MovementQty));
|
||||||
|
return po;
|
||||||
|
}
|
||||||
} // MInventoryLineMA
|
} // MInventoryLineMA
|
||||||
|
|
|
@ -406,7 +406,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
line.getM_Locator_ID(),
|
line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
ma.getM_AttributeSetInstance_ID(),
|
ma.getM_AttributeSetInstance_ID(),
|
||||||
ma.getMovementQty().negate(), get_TrxName()))
|
ma.getMovementQty().negate(),ma.getDateMaterialPolicy(), get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
||||||
|
@ -424,7 +424,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
line.getM_LocatorTo_ID(),
|
line.getM_LocatorTo_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
M_AttributeSetInstanceTo_ID,
|
M_AttributeSetInstanceTo_ID,
|
||||||
ma.getMovementQty(), get_TrxName()))
|
ma.getMovementQty(),ma.getDateMaterialPolicy(), get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
||||||
|
@ -458,13 +458,17 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
// Fallback - We have ASI
|
// Fallback - We have ASI
|
||||||
if (trxFrom == null)
|
if (trxFrom == null)
|
||||||
{
|
{
|
||||||
|
I_M_AttributeSetInstance asi = line.getM_AttributeSetInstance();
|
||||||
|
Timestamp dateMPolicy= getMovementDate();
|
||||||
|
dateMPolicy = asi.getCreated();
|
||||||
|
|
||||||
MLocator locator = new MLocator (getCtx(), line.getM_Locator_ID(), get_TrxName());
|
MLocator locator = new MLocator (getCtx(), line.getM_Locator_ID(), get_TrxName());
|
||||||
//Update Storage
|
//Update Storage
|
||||||
if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(),
|
if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(),
|
||||||
line.getM_Locator_ID(),
|
line.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
line.getM_AttributeSetInstance_ID(),
|
line.getM_AttributeSetInstance_ID(),
|
||||||
line.getMovementQty().negate(), get_TrxName()))
|
line.getMovementQty().negate(),dateMPolicy, get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
||||||
|
@ -476,7 +480,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
line.getM_LocatorTo_ID(),
|
line.getM_LocatorTo_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
line.getM_AttributeSetInstanceTo_ID(),
|
line.getM_AttributeSetInstanceTo_ID(),
|
||||||
line.getMovementQty(), get_TrxName()))
|
line.getMovementQty(),dateMPolicy, get_TrxName()))
|
||||||
{
|
{
|
||||||
String lastError = CLogger.retrieveErrorString("");
|
String lastError = CLogger.retrieveErrorString("");
|
||||||
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
|
||||||
|
@ -568,7 +572,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
{
|
{
|
||||||
MMovementLineMA ma = new MMovementLineMA (line,
|
MMovementLineMA ma = new MMovementLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
qtyToDeliver);
|
qtyToDeliver,storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = Env.ZERO;
|
qtyToDeliver = Env.ZERO;
|
||||||
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
||||||
|
@ -577,7 +581,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
{
|
{
|
||||||
MMovementLineMA ma = new MMovementLineMA (line,
|
MMovementLineMA ma = new MMovementLineMA (line,
|
||||||
storage.getM_AttributeSetInstance_ID(),
|
storage.getM_AttributeSetInstance_ID(),
|
||||||
storage.getQtyOnHand());
|
storage.getQtyOnHand(),storage.getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
|
||||||
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
if (log.isLoggable(Level.FINE)) log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
|
||||||
|
@ -589,12 +593,10 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
// No AttributeSetInstance found for remainder
|
// No AttributeSetInstance found for remainder
|
||||||
if (qtyToDeliver.signum() != 0)
|
if (qtyToDeliver.signum() != 0)
|
||||||
{
|
{
|
||||||
//deliver using new asi
|
MMovementLineMA ma = MMovementLineMA.addOrCreate(line, 0, qtyToDeliver, getMovementDate()) ;
|
||||||
MAttributeSetInstance asi = MAttributeSetInstance.create(getCtx(), product, get_TrxName());
|
|
||||||
int M_AttributeSetInstance_ID = asi.getM_AttributeSetInstance_ID();
|
|
||||||
MMovementLineMA ma = new MMovementLineMA (line, M_AttributeSetInstance_ID , qtyToDeliver);
|
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("##: " + ma);
|
if (log.isLoggable(Level.FINE)) log.fine("##: " + ma);
|
||||||
|
|
||||||
}
|
}
|
||||||
} // attributeSetInstance
|
} // attributeSetInstance
|
||||||
|
|
||||||
|
@ -787,7 +789,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
{
|
{
|
||||||
MMovementLineMA ma = new MMovementLineMA (rLine,
|
MMovementLineMA ma = new MMovementLineMA (rLine,
|
||||||
mas[j].getM_AttributeSetInstance_ID(),
|
mas[j].getM_AttributeSetInstance_ID(),
|
||||||
mas[j].getMovementQty().negate());
|
mas[j].getMovementQty().negate(),mas[j].getDateMaterialPolicy());
|
||||||
ma.saveEx();
|
ma.saveEx();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,15 @@ package org.compiere.model;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,8 +142,9 @@ public class MMovementLineMA extends X_M_MovementLineMA
|
||||||
* @param parent parent
|
* @param parent parent
|
||||||
* @param M_AttributeSetInstance_ID asi
|
* @param M_AttributeSetInstance_ID asi
|
||||||
* @param MovementQty qty
|
* @param MovementQty qty
|
||||||
|
* @param DateMaterialPolicy
|
||||||
*/
|
*/
|
||||||
public MMovementLineMA (MMovementLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty)
|
public MMovementLineMA (MMovementLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty,Timestamp DateMaterialPolicy)
|
||||||
{
|
{
|
||||||
this (parent.getCtx(), 0, parent.get_TrxName());
|
this (parent.getCtx(), 0, parent.get_TrxName());
|
||||||
setClientOrg(parent);
|
setClientOrg(parent);
|
||||||
|
@ -148,7 +152,27 @@ public class MMovementLineMA extends X_M_MovementLineMA
|
||||||
//
|
//
|
||||||
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
|
||||||
setMovementQty(MovementQty);
|
setMovementQty(MovementQty);
|
||||||
|
if (DateMaterialPolicy == null)
|
||||||
|
{
|
||||||
|
if (M_AttributeSetInstance_ID > 0)
|
||||||
|
{
|
||||||
|
MAttributeSetInstance asi = new MAttributeSetInstance(parent.getCtx(), M_AttributeSetInstance_ID, parent.get_TrxName());
|
||||||
|
DateMaterialPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DateMaterialPolicy = parent.getParent().getMovementDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
} // MMovementLineMA
|
} // MMovementLineMA
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDateMaterialPolicy(Timestamp DateMaterialPolicy) {
|
||||||
|
if (DateMaterialPolicy != null)
|
||||||
|
DateMaterialPolicy = Util.removeTime(DateMaterialPolicy);
|
||||||
|
super.setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String Representation
|
* String Representation
|
||||||
|
@ -164,4 +188,15 @@ public class MMovementLineMA extends X_M_MovementLineMA
|
||||||
return sb.toString ();
|
return sb.toString ();
|
||||||
} // toString
|
} // toString
|
||||||
|
|
||||||
|
public static MMovementLineMA addOrCreate(MMovementLine line, int M_AttributeSetInstance_ID, BigDecimal MovementQty, Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
Query query = new Query(Env.getCtx(), I_M_MovementLineMA.Table_Name, "M_MovementLine_ID=? AND M_AttributeSetInstance_ID=? AND DateMaterialPolicy=trunc(cast(? as date))",
|
||||||
|
line.get_TrxName());
|
||||||
|
MMovementLineMA po = query.setParameters(line.getM_MovementLine_ID(), M_AttributeSetInstance_ID, DateMaterialPolicy).first();
|
||||||
|
if (po == null)
|
||||||
|
po = new MMovementLineMA(line, M_AttributeSetInstance_ID, MovementQty, DateMaterialPolicy);
|
||||||
|
else
|
||||||
|
po.setMovementQty(po.getMovementQty().add(MovementQty));
|
||||||
|
return po;
|
||||||
|
}
|
||||||
} // MMovementLineMA
|
} // MMovementLineMA
|
||||||
|
|
|
@ -802,6 +802,20 @@ public class MProduct extends X_M_Product
|
||||||
return MMPolicy;
|
return MMPolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if use GuaranteeDate for Material Policy
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isUseGuaranteeDateForMPolicy(){
|
||||||
|
MAttributeSet as = getAttributeSet();
|
||||||
|
if(as==null)
|
||||||
|
return false;
|
||||||
|
if(!as.isGuaranteeDate())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return as.isUseGuaranteeDateForMPolicy();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if ASI is mandatory
|
* Check if ASI is mandatory
|
||||||
* @param isSOTrx is outgoing trx?
|
* @param isSOTrx is outgoing trx?
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
|
|
||||||
public class MProductionLine extends X_M_ProductionLine {
|
public class MProductionLine extends X_M_ProductionLine {
|
||||||
|
@ -89,8 +90,15 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
if (log.isLoggable(Level.FINEST)) log.log(Level.FINEST, "asi Description is: " + asiString);
|
if (log.isLoggable(Level.FINEST)) log.log(Level.FINEST, "asi Description is: " + asiString);
|
||||||
// create transactions for finished goods
|
// create transactions for finished goods
|
||||||
if ( getMovementQty().compareTo(Env.ZERO) > 0 ) {
|
if ( getMovementQty().compareTo(Env.ZERO) > 0 ) {
|
||||||
|
|
||||||
|
Timestamp dateMPolicy = date;
|
||||||
|
if(getM_AttributeSetInstance_ID()>0){
|
||||||
|
dateMPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
|
||||||
|
dateMPolicy = Util.removeTime(dateMPolicy);
|
||||||
MProductionLineMA lineMA = new MProductionLineMA( this,
|
MProductionLineMA lineMA = new MProductionLineMA( this,
|
||||||
asi.get_ID(), getMovementQty());
|
asi.get_ID(), getMovementQty(),dateMPolicy);
|
||||||
if ( !lineMA.save(get_TrxName()) ) {
|
if ( !lineMA.save(get_TrxName()) ) {
|
||||||
log.log(Level.SEVERE, "Could not save MA for " + toString());
|
log.log(Level.SEVERE, "Could not save MA for " + toString());
|
||||||
errorString.append("Could not save MA for " + toString() + "\n" );
|
errorString.append("Could not save MA for " + toString() + "\n" );
|
||||||
|
@ -105,7 +113,7 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
errorString.append("Could not save transaction for " + toString() + "\n");
|
errorString.append("Could not save transaction for " + toString() + "\n");
|
||||||
}
|
}
|
||||||
MStorageOnHand storage = MStorageOnHand.getCreate(getCtx(), getM_Locator_ID(),
|
MStorageOnHand storage = MStorageOnHand.getCreate(getCtx(), getM_Locator_ID(),
|
||||||
getM_Product_ID(), asi.get_ID(), get_TrxName());
|
getM_Product_ID(), asi.get_ID(),dateMPolicy, get_TrxName());
|
||||||
storage.changeQtyOnHand(getMovementQty(), true);
|
storage.changeQtyOnHand(getMovementQty(), true);
|
||||||
if ( !storage.save(get_TrxName()) ) {
|
if ( !storage.save(get_TrxName()) ) {
|
||||||
log.log(Level.SEVERE, "Could not update storage for " + toString());
|
log.log(Level.SEVERE, "Could not update storage for " + toString());
|
||||||
|
@ -118,13 +126,12 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
|
|
||||||
// create transactions and update stock used in production
|
// create transactions and update stock used in production
|
||||||
MStorageOnHand[] storages = MStorageOnHand.getAll( getCtx(), getM_Product_ID(),
|
MStorageOnHand[] storages = MStorageOnHand.getAll( getCtx(), getM_Product_ID(),
|
||||||
getM_Locator_ID(), get_TrxName());
|
getM_Locator_ID(), get_TrxName(), true, 120);
|
||||||
|
|
||||||
MProductionLineMA lineMA = null;
|
MProductionLineMA lineMA = null;
|
||||||
MTransaction matTrx = null;
|
MTransaction matTrx = null;
|
||||||
BigDecimal qtyToMove = getMovementQty().negate();
|
BigDecimal qtyToMove = getMovementQty().negate();
|
||||||
|
|
||||||
|
|
||||||
for (int sl = 0; sl < storages.length; sl++) {
|
for (int sl = 0; sl < storages.length; sl++) {
|
||||||
|
|
||||||
BigDecimal lineQty = storages[sl].getQtyOnHand();
|
BigDecimal lineQty = storages[sl].getQtyOnHand();
|
||||||
|
@ -148,7 +155,7 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
//storage matches specified ASI or is a costing asi (inc. 0)
|
//storage matches specified ASI or is a costing asi (inc. 0)
|
||||||
// This process will move negative stock on hand quantities
|
// This process will move negative stock on hand quantities
|
||||||
{
|
{
|
||||||
lineMA = MProductionLineMA.get(this,storages[sl].getM_AttributeSetInstance_ID());
|
lineMA = MProductionLineMA.get(this,storages[sl].getM_AttributeSetInstance_ID(),storages[sl].getDateMaterialPolicy());
|
||||||
lineMA.setMovementQty(lineMA.getMovementQty().add(lineQty.negate()));
|
lineMA.setMovementQty(lineMA.getMovementQty().add(lineQty.negate()));
|
||||||
if ( !lineMA.save(get_TrxName()) ) {
|
if ( !lineMA.save(get_TrxName()) ) {
|
||||||
log.log(Level.SEVERE, "Could not save MA for " + toString());
|
log.log(Level.SEVERE, "Could not save MA for " + toString());
|
||||||
|
@ -192,16 +199,7 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MStorageOnHand storage = MStorageOnHand.get(Env.getCtx(), getM_Locator_ID(), getM_Product_ID(), 0, get_TrxName());
|
MStorageOnHand storage = MStorageOnHand.getCreate(Env.getCtx(), getM_Locator_ID(), getM_Product_ID(), 0, date, get_TrxName(), true);
|
||||||
if (storage == null)
|
|
||||||
{
|
|
||||||
storage = new MStorageOnHand(Env.getCtx(), 0, get_TrxName());
|
|
||||||
storage.setM_Locator_ID(getM_Locator_ID());
|
|
||||||
storage.setM_Product_ID(getM_Product_ID());
|
|
||||||
storage.setM_AttributeSetInstance_ID(0);
|
|
||||||
storage.saveEx();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
BigDecimal lineQty = qtyToMove;
|
BigDecimal lineQty = qtyToMove;
|
||||||
MAttributeSetInstance slASI = new MAttributeSetInstance(getCtx(),
|
MAttributeSetInstance slASI = new MAttributeSetInstance(getCtx(),
|
||||||
|
@ -217,10 +215,7 @@ public class MProductionLine extends X_M_ProductionLine {
|
||||||
//storage matches specified ASI or is a costing asi (inc. 0)
|
//storage matches specified ASI or is a costing asi (inc. 0)
|
||||||
// This process will move negative stock on hand quantities
|
// This process will move negative stock on hand quantities
|
||||||
{
|
{
|
||||||
//lineMA = new MProductionLineMA( this,
|
lineMA = MProductionLineMA.get(this,storage.getM_AttributeSetInstance_ID(),storage.getDateMaterialPolicy());
|
||||||
// storage.getM_AttributeSetInstance_ID(),
|
|
||||||
// lineQty.negate());
|
|
||||||
lineMA = MProductionLineMA.get(this,storage.getM_AttributeSetInstance_ID());
|
|
||||||
lineMA.setMovementQty(lineMA.getMovementQty().add(lineQty.negate()));
|
lineMA.setMovementQty(lineMA.getMovementQty().add(lineQty.negate()));
|
||||||
|
|
||||||
if ( !lineMA.save(get_TrxName()) ) {
|
if ( !lineMA.save(get_TrxName()) ) {
|
||||||
|
|
|
@ -2,10 +2,13 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.compiere.model.X_M_ProductionLineMA;
|
import org.compiere.model.X_M_ProductionLineMA;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
public class MProductionLineMA extends X_M_ProductionLineMA {
|
public class MProductionLineMA extends X_M_ProductionLineMA {
|
||||||
/**
|
/**
|
||||||
|
@ -16,12 +19,10 @@ public class MProductionLineMA extends X_M_ProductionLineMA {
|
||||||
public MProductionLineMA(Properties ctx, int M_ProductionLineMA_ID,
|
public MProductionLineMA(Properties ctx, int M_ProductionLineMA_ID,
|
||||||
String trxName) {
|
String trxName) {
|
||||||
super(ctx, M_ProductionLineMA_ID, trxName);
|
super(ctx, M_ProductionLineMA_ID, trxName);
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MProductionLineMA(Properties ctx, ResultSet rs, String trxName) {
|
public MProductionLineMA(Properties ctx, ResultSet rs, String trxName) {
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,32 +30,52 @@ public class MProductionLineMA extends X_M_ProductionLineMA {
|
||||||
* @param parent
|
* @param parent
|
||||||
* @param asi
|
* @param asi
|
||||||
* @param qty
|
* @param qty
|
||||||
* @param ctx
|
* @param dateMaterialPolicy
|
||||||
* @param trxName
|
|
||||||
*/
|
*/
|
||||||
public MProductionLineMA( MProductionLine parent, int asi, BigDecimal qty) {
|
public MProductionLineMA( MProductionLine parent, int asi, BigDecimal qty,Timestamp dateMaterialPolicy) {
|
||||||
|
|
||||||
super(parent.getCtx(),0,parent.get_TrxName());
|
super(parent.getCtx(),0,parent.get_TrxName());
|
||||||
setM_AttributeSetInstance_ID(asi);
|
setM_AttributeSetInstance_ID(asi);
|
||||||
setM_ProductionLine_ID(parent.get_ID());
|
setM_ProductionLine_ID(parent.get_ID());
|
||||||
setMovementQty(qty);
|
setMovementQty(qty);
|
||||||
setAD_Org_ID(parent.getAD_Org_ID());
|
setAD_Org_ID(parent.getAD_Org_ID());
|
||||||
|
if (dateMaterialPolicy == null)
|
||||||
|
{
|
||||||
|
if (asi > 0)
|
||||||
|
{
|
||||||
|
MAttributeSetInstance masi = new MAttributeSetInstance(parent.getCtx(), asi, parent.get_TrxName());
|
||||||
|
dateMaterialPolicy = masi.getCreated();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dateMaterialPolicy = parent.getM_Production().getMovementDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDateMaterialPolicy(dateMaterialPolicy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MProductionLineMA get( MProductionLine parent, int asi ) {
|
@Override
|
||||||
|
public void setDateMaterialPolicy(Timestamp DateMaterialPolicy) {
|
||||||
|
if (DateMaterialPolicy != null)
|
||||||
|
DateMaterialPolicy = Util.removeTime(DateMaterialPolicy);
|
||||||
|
super.setDateMaterialPolicy(DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MProductionLineMA get( MProductionLine parent, int asi, Timestamp dateMPolicy ) {
|
||||||
String where = " M_ProductionLine_ID = ? AND M_AttributeSetInstance_ID = ? ";
|
String where = " M_ProductionLine_ID = ? AND M_AttributeSetInstance_ID = ? ";
|
||||||
|
if(dateMPolicy==null){
|
||||||
|
dateMPolicy = new Timestamp(new Date().getTime());
|
||||||
|
}
|
||||||
|
where = where + "AND DateMaterialPolicy = trunc(cast(? as date))";
|
||||||
|
|
||||||
MProductionLineMA lineMA = MTable.get(parent.getCtx(), MProductionLineMA.Table_Name).createQuery(where, parent.get_TrxName())
|
MProductionLineMA lineMA = MTable.get(parent.getCtx(), MProductionLineMA.Table_Name).createQuery(where, parent.get_TrxName())
|
||||||
.setParameters(parent.getM_ProductionLine_ID(), asi).firstOnly();
|
.setParameters(parent.getM_ProductionLine_ID(), asi,dateMPolicy).first();
|
||||||
|
|
||||||
if (lineMA != null)
|
if (lineMA != null)
|
||||||
return lineMA;
|
return lineMA;
|
||||||
else
|
else
|
||||||
return new MProductionLineMA( parent,
|
return new MProductionLineMA( parent,
|
||||||
asi,
|
asi,
|
||||||
Env.ZERO);
|
Env.ZERO,dateMPolicy);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,9 +163,17 @@ public class MProjectIssue extends X_C_ProjectIssue
|
||||||
mTrx.setC_ProjectIssue_ID(getC_ProjectIssue_ID());
|
mTrx.setC_ProjectIssue_ID(getC_ProjectIssue_ID());
|
||||||
//
|
//
|
||||||
MLocator loc = MLocator.get(getCtx(), getM_Locator_ID());
|
MLocator loc = MLocator.get(getCtx(), getM_Locator_ID());
|
||||||
|
|
||||||
|
Timestamp dateMPolicy = getMovementDate();
|
||||||
|
|
||||||
|
if(getM_AttributeSetInstance_ID()>0){
|
||||||
|
MAttributeSetInstance asi = new MAttributeSetInstance(getCtx(), getM_AttributeSetInstance_ID(), get_TrxName());
|
||||||
|
dateMPolicy = asi.getCreated();
|
||||||
|
}
|
||||||
|
|
||||||
if (MStorageOnHand.add(getCtx(), loc.getM_Warehouse_ID(), getM_Locator_ID(),
|
if (MStorageOnHand.add(getCtx(), loc.getM_Warehouse_ID(), getM_Locator_ID(),
|
||||||
getM_Product_ID(), getM_AttributeSetInstance_ID(),
|
getM_Product_ID(), getM_AttributeSetInstance_ID(),
|
||||||
getMovementQty().negate(), get_TrxName()))
|
getMovementQty().negate(),dateMPolicy, get_TrxName()))
|
||||||
{
|
{
|
||||||
if (mTrx.save(get_TrxName()))
|
if (mTrx.save(get_TrxName()))
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -30,6 +31,7 @@ import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inventory Storage Model
|
* Inventory Storage Model
|
||||||
|
@ -50,20 +52,26 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
* @param M_Locator_ID locator
|
* @param M_Locator_ID locator
|
||||||
* @param M_Product_ID product
|
* @param M_Product_ID product
|
||||||
* @param M_AttributeSetInstance_ID instance
|
* @param M_AttributeSetInstance_ID instance
|
||||||
|
* @param dateMPolicy
|
||||||
* @param trxName transaction
|
* @param trxName transaction
|
||||||
* @return existing or null
|
* @return existing or null
|
||||||
*/
|
*/
|
||||||
public static MStorageOnHand get (Properties ctx, int M_Locator_ID,
|
public static MStorageOnHand get (Properties ctx, int M_Locator_ID,
|
||||||
int M_Product_ID, int M_AttributeSetInstance_ID, String trxName)
|
int M_Product_ID, int M_AttributeSetInstance_ID,Timestamp dateMPolicy, String trxName)
|
||||||
{
|
{
|
||||||
String sqlWhere = "M_Locator_ID=? AND M_Product_ID=? AND ";
|
String sqlWhere = "M_Locator_ID=? AND M_Product_ID=? AND ";
|
||||||
if (M_AttributeSetInstance_ID == 0)
|
if (M_AttributeSetInstance_ID == 0)
|
||||||
sqlWhere += "(M_AttributeSetInstance_ID=? OR M_AttributeSetInstance_ID IS NULL)";
|
sqlWhere += "(M_AttributeSetInstance_ID=? OR M_AttributeSetInstance_ID IS NULL)";
|
||||||
else
|
else
|
||||||
sqlWhere += "M_AttributeSetInstance_ID=?";
|
sqlWhere += "M_AttributeSetInstance_ID=?";
|
||||||
|
|
||||||
|
if (dateMPolicy == null)
|
||||||
|
dateMPolicy = new Timestamp(new Date().getTime());
|
||||||
|
|
||||||
|
sqlWhere += " AND DateMaterialPolicy=trunc(cast(? as date))";
|
||||||
|
|
||||||
MStorageOnHand retValue = new Query(ctx, MStorageOnHand.Table_Name, sqlWhere, trxName)
|
MStorageOnHand retValue = new Query(ctx, MStorageOnHand.Table_Name, sqlWhere, trxName)
|
||||||
.setParameters(M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID)
|
.setParameters(M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, dateMPolicy)
|
||||||
.first();
|
.first();
|
||||||
|
|
||||||
if (retValue == null) {
|
if (retValue == null) {
|
||||||
|
@ -131,12 +139,43 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
*/
|
*/
|
||||||
public static MStorageOnHand[] getAll (Properties ctx,
|
public static MStorageOnHand[] getAll (Properties ctx,
|
||||||
int M_Product_ID, int M_Locator_ID, String trxName)
|
int M_Product_ID, int M_Locator_ID, String trxName)
|
||||||
|
{
|
||||||
|
return getAll(ctx, M_Product_ID, M_Locator_ID, trxName, false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all Storages for Product where QtyOnHand <> 0
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_Locator_ID locator
|
||||||
|
* @param trxName transaction
|
||||||
|
* @return existing or null
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getAll (Properties ctx,
|
||||||
|
int M_Product_ID, int M_Locator_ID, String trxName, boolean forUpdate, int timeout)
|
||||||
{
|
{
|
||||||
String sqlWhere = "M_Product_ID=? AND M_Locator_ID=? AND QtyOnHand <> 0";
|
String sqlWhere = "M_Product_ID=? AND M_Locator_ID=? AND QtyOnHand <> 0";
|
||||||
List<MStorageOnHand> list = new Query(ctx, MStorageOnHand.Table_Name, sqlWhere, trxName)
|
Query query = new Query(ctx, MStorageOnHand.Table_Name, sqlWhere, trxName)
|
||||||
.setParameters(M_Product_ID, M_Locator_ID)
|
.setParameters(M_Product_ID, M_Locator_ID);
|
||||||
.setOrderBy(MStorageOnHand.COLUMNNAME_M_AttributeSetInstance_ID)
|
MProduct product = new MProduct(ctx, M_Product_ID, trxName);
|
||||||
.list();
|
if (product.isUseGuaranteeDateForMPolicy())
|
||||||
|
{
|
||||||
|
query.addJoinClause(" LEFT OUTER JOIN M_AttributeSetInstance asi ON (M_StorageOnHand.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) ")
|
||||||
|
.setOrderBy("asi."+I_M_AttributeSetInstance.COLUMNNAME_GuaranteeDate);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query.setOrderBy(MStorageOnHand.COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
if (forUpdate)
|
||||||
|
{
|
||||||
|
query.setForUpdate(forUpdate);
|
||||||
|
if (timeout > 0)
|
||||||
|
{
|
||||||
|
query.setQueryTimeout(timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<MStorageOnHand> list = query.list();
|
||||||
|
|
||||||
MStorageOnHand[] retValue = new MStorageOnHand[list.size()];
|
MStorageOnHand[] retValue = new MStorageOnHand[list.size()];
|
||||||
list.toArray(retValue);
|
list.toArray(retValue);
|
||||||
|
@ -205,6 +244,49 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
public static MStorageOnHand[] getWarehouse (Properties ctx, int M_Warehouse_ID,
|
public static MStorageOnHand[] getWarehouse (Properties ctx, int M_Warehouse_ID,
|
||||||
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
boolean FiFo, boolean positiveOnly, int M_Locator_ID, String trxName)
|
boolean FiFo, boolean positiveOnly, int M_Locator_ID, String trxName)
|
||||||
|
{
|
||||||
|
return getWarehouse(ctx, M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, minGuaranteeDate, FiFo,
|
||||||
|
positiveOnly, M_Locator_ID, trxName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Storage Info for Warehouse or locator
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Warehouse_ID ignore if M_Locator_ID > 0
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance id, 0 to retrieve all instance
|
||||||
|
* @param minGuaranteeDate optional minimum guarantee date if all attribute instances
|
||||||
|
* @param FiFo first in-first-out
|
||||||
|
* @param positiveOnly if true, only return storage records with qtyOnHand > 0
|
||||||
|
* @param M_Locator_ID optional locator id
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @return existing - ordered by location priority (desc) and/or guarantee date
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getWarehouse (Properties ctx, int M_Warehouse_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
|
boolean FiFo, boolean positiveOnly, int M_Locator_ID, String trxName, boolean forUpdate)
|
||||||
|
{
|
||||||
|
return getWarehouse(ctx, M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, minGuaranteeDate, FiFo, positiveOnly, M_Locator_ID, trxName, forUpdate, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Storage Info for Warehouse or locator
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Warehouse_ID ignore if M_Locator_ID > 0
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance id, 0 to retrieve all instance
|
||||||
|
* @param minGuaranteeDate optional minimum guarantee date if all attribute instances
|
||||||
|
* @param FiFo first in-first-out
|
||||||
|
* @param positiveOnly if true, only return storage records with qtyOnHand > 0
|
||||||
|
* @param M_Locator_ID optional locator id
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @return existing - ordered by location priority (desc) and/or guarantee date
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getWarehouse (Properties ctx, int M_Warehouse_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
|
boolean FiFo, boolean positiveOnly, int M_Locator_ID, String trxName, boolean forUpdate, int timeout)
|
||||||
{
|
{
|
||||||
if ((M_Warehouse_ID == 0 && M_Locator_ID == 0) || M_Product_ID == 0)
|
if ((M_Warehouse_ID == 0 && M_Locator_ID == 0) || M_Product_ID == 0)
|
||||||
return new MStorageOnHand[0];
|
return new MStorageOnHand[0];
|
||||||
|
@ -217,7 +299,7 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
// Specific Attribute Set Instance
|
// Specific Attribute Set Instance
|
||||||
String sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
String sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
||||||
+ "s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
+ "s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
||||||
+ "s.QtyOnHand,s.DateLastInventory "
|
+ "s.QtyOnHand,s.DateLastInventory,s.DateMaterialPolicy "
|
||||||
+ "FROM M_StorageOnHand s"
|
+ "FROM M_StorageOnHand s"
|
||||||
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID) ";
|
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID) ";
|
||||||
if (M_Locator_ID > 0)
|
if (M_Locator_ID > 0)
|
||||||
|
@ -234,16 +316,16 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
{
|
{
|
||||||
sql += " AND s.QtyOnHand <> 0 ";
|
sql += " AND s.QtyOnHand <> 0 ";
|
||||||
}
|
}
|
||||||
sql += "ORDER BY l.PriorityNo DESC, M_AttributeSetInstance_ID";
|
sql += "ORDER BY l.PriorityNo DESC, DateMaterialPolicy ";
|
||||||
if (!FiFo)
|
if (!FiFo)
|
||||||
sql += " DESC";
|
sql += " DESC";
|
||||||
// All Attribute Set Instances
|
// All Attribute Set Instances
|
||||||
if (allAttributeInstances)
|
if (allAttributeInstances)
|
||||||
{
|
{
|
||||||
sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
||||||
+ "s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
+ " s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
||||||
+ "s.QtyOnHand,s.DateLastInventory,s.M_StorageOnHand_UU "
|
+ " s.QtyOnHand,s.DateLastInventory,s.M_StorageOnHand_UU,s.DateMaterialPolicy "
|
||||||
+ "FROM M_StorageOnHand s"
|
+ " FROM M_StorageOnHand s"
|
||||||
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID)"
|
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID)"
|
||||||
+ " LEFT OUTER JOIN M_AttributeSetInstance asi ON (s.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) ";
|
+ " LEFT OUTER JOIN M_AttributeSetInstance asi ON (s.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) ";
|
||||||
if (M_Locator_ID > 0)
|
if (M_Locator_ID > 0)
|
||||||
|
@ -259,22 +341,27 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
{
|
{
|
||||||
sql += " AND s.QtyOnHand <> 0 ";
|
sql += " AND s.QtyOnHand <> 0 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minGuaranteeDate != null)
|
if (minGuaranteeDate != null)
|
||||||
{
|
{
|
||||||
sql += "AND (asi.GuaranteeDate IS NULL OR asi.GuaranteeDate>?) ";
|
sql += "AND (asi.GuaranteeDate IS NULL OR asi.GuaranteeDate>?) ";
|
||||||
sql += "ORDER BY l.PriorityNo DESC, " +
|
}
|
||||||
"asi.GuaranteeDate, M_AttributeSetInstance_ID";
|
|
||||||
|
MProduct product = MProduct.get(Env.getCtx(), M_Product_ID);
|
||||||
|
|
||||||
|
if(product.isUseGuaranteeDateForMPolicy()){
|
||||||
|
sql += "ORDER BY l.PriorityNo DESC, asi.GuaranteeDate";
|
||||||
if (!FiFo)
|
if (!FiFo)
|
||||||
sql += " DESC";
|
sql += " DESC";
|
||||||
sql += ", s.QtyOnHand DESC";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sql += "ORDER BY l.PriorityNo DESC, l.M_Locator_ID, s.M_AttributeSetInstance_ID";
|
sql += "ORDER BY l.PriorityNo DESC, l.M_Locator_ID, s.DateMaterialPolicy";
|
||||||
if (!FiFo)
|
if (!FiFo)
|
||||||
sql += " DESC";
|
sql += " DESC";
|
||||||
sql += ", s.QtyOnHand DESC";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sql += ", s.QtyOnHand DESC";
|
||||||
}
|
}
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -295,7 +382,14 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
if(rs.getBigDecimal(11).signum() != 0)
|
if(rs.getBigDecimal(11).signum() != 0)
|
||||||
list.add (new MStorageOnHand (ctx, rs, trxName));
|
{
|
||||||
|
MStorageOnHand storage = new MStorageOnHand (ctx, rs, trxName);
|
||||||
|
if (!Util.isEmpty(trxName) && forUpdate)
|
||||||
|
{
|
||||||
|
DB.getDatabase().forUpdate(storage, timeout);
|
||||||
|
}
|
||||||
|
list.add (storage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -312,7 +406,168 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
return retValue;
|
return retValue;
|
||||||
} // getWarehouse
|
} // getWarehouse
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Storage Info for Warehouse or locator
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Warehouse_ID ignore if M_Locator_ID > 0
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance id, 0 to retrieve all instance
|
||||||
|
* @param minGuaranteeDate optional minimum guarantee date if all attribute instances
|
||||||
|
* @param FiFo first in-first-out
|
||||||
|
* @param M_Locator_ID optional locator id
|
||||||
|
* @param trxName transaction
|
||||||
|
* @return existing - ordered by location priority (desc) and/or guarantee date
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getWarehouseNegative (Properties ctx, int M_Warehouse_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
|
boolean FiFo, int M_Locator_ID, String trxName)
|
||||||
|
{
|
||||||
|
return getWarehouseNegative(ctx, M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, minGuaranteeDate, FiFo, M_Locator_ID, trxName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Storage Info for Warehouse or locator
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Warehouse_ID ignore if M_Locator_ID > 0
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance id, 0 to retrieve all instance
|
||||||
|
* @param minGuaranteeDate optional minimum guarantee date if all attribute instances
|
||||||
|
* @param FiFo first in-first-out
|
||||||
|
* @param M_Locator_ID optional locator id
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @return existing - ordered by location priority (desc) and/or guarantee date
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getWarehouseNegative (Properties ctx, int M_Warehouse_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
|
boolean FiFo, int M_Locator_ID, String trxName, boolean forUpdate)
|
||||||
|
{
|
||||||
|
return getWarehouseNegative(ctx, M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, minGuaranteeDate, FiFo, M_Locator_ID, trxName, forUpdate, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Storage Info for Warehouse or locator
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Warehouse_ID ignore if M_Locator_ID > 0
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance id, 0 to retrieve all instance
|
||||||
|
* @param minGuaranteeDate optional minimum guarantee date if all attribute instances
|
||||||
|
* @param FiFo first in-first-out
|
||||||
|
* @param M_Locator_ID optional locator id
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @param timeout
|
||||||
|
* @return existing - ordered by location priority (desc) and/or guarantee date
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand[] getWarehouseNegative (Properties ctx, int M_Warehouse_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID, Timestamp minGuaranteeDate,
|
||||||
|
boolean FiFo, int M_Locator_ID, String trxName, boolean forUpdate, int timeout)
|
||||||
|
{
|
||||||
|
if ((M_Warehouse_ID == 0 && M_Locator_ID == 0) || M_Product_ID == 0)
|
||||||
|
return new MStorageOnHand[0];
|
||||||
|
|
||||||
|
boolean allAttributeInstances = false;
|
||||||
|
if (M_AttributeSetInstance_ID == 0)
|
||||||
|
allAttributeInstances = true;
|
||||||
|
|
||||||
|
ArrayList<MStorageOnHand> list = new ArrayList<MStorageOnHand>();
|
||||||
|
// Specific Attribute Set Instance
|
||||||
|
String sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
||||||
|
+ "s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
||||||
|
+ "s.QtyOnHand,s.DateLastInventory,s.DateMaterialPolicy "
|
||||||
|
+ "FROM M_StorageOnHand s"
|
||||||
|
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID) ";
|
||||||
|
if (M_Locator_ID > 0)
|
||||||
|
sql += "WHERE l.M_Locator_ID = ?";
|
||||||
|
else
|
||||||
|
sql += "WHERE l.M_Warehouse_ID=?";
|
||||||
|
sql += " AND s.M_Product_ID=?"
|
||||||
|
+ " AND COALESCE(s.M_AttributeSetInstance_ID,0)=? "
|
||||||
|
+ " AND s.QtyOnHand < 0 ";
|
||||||
|
sql += "ORDER BY l.PriorityNo DESC, DateMaterialPolicy ";
|
||||||
|
if (!FiFo)
|
||||||
|
sql += " DESC";
|
||||||
|
// All Attribute Set Instances
|
||||||
|
if (allAttributeInstances)
|
||||||
|
{
|
||||||
|
sql = "SELECT s.M_Product_ID,s.M_Locator_ID,s.M_AttributeSetInstance_ID,"
|
||||||
|
+ "s.AD_Client_ID,s.AD_Org_ID,s.IsActive,s.Created,s.CreatedBy,s.Updated,s.UpdatedBy,"
|
||||||
|
+ "s.QtyOnHand,s.DateLastInventory,s.M_StorageOnHand_UU,s.DateMaterialPolicy "
|
||||||
|
+ "FROM M_StorageOnHand s"
|
||||||
|
+ " INNER JOIN M_Locator l ON (l.M_Locator_ID=s.M_Locator_ID)"
|
||||||
|
+ " LEFT OUTER JOIN M_AttributeSetInstance asi ON (s.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) ";
|
||||||
|
if (M_Locator_ID > 0)
|
||||||
|
sql += "WHERE l.M_Locator_ID = ?";
|
||||||
|
else
|
||||||
|
sql += "WHERE l.M_Warehouse_ID=?";
|
||||||
|
sql += " AND s.M_Product_ID=? "
|
||||||
|
+ " AND s.QtyOnHand < 0 ";
|
||||||
|
|
||||||
|
if (minGuaranteeDate != null)
|
||||||
|
{
|
||||||
|
sql += "AND (asi.GuaranteeDate IS NULL OR asi.GuaranteeDate>?) ";
|
||||||
|
}
|
||||||
|
|
||||||
|
MProduct product = MProduct.get(Env.getCtx(), M_Product_ID);
|
||||||
|
|
||||||
|
if(product.isUseGuaranteeDateForMPolicy()){
|
||||||
|
sql += "ORDER BY l.PriorityNo DESC, " +
|
||||||
|
"asi.GuaranteeDate";
|
||||||
|
if (!FiFo)
|
||||||
|
sql += " DESC";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sql += "ORDER BY l.PriorityNo DESC, l.M_Locator_ID, s.DateMaterialPolicy";
|
||||||
|
if (!FiFo)
|
||||||
|
sql += " DESC";
|
||||||
|
}
|
||||||
|
|
||||||
|
sql += ", s.QtyOnHand DESC";
|
||||||
|
}
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pstmt = DB.prepareStatement(sql, trxName);
|
||||||
|
pstmt.setInt(1, M_Locator_ID > 0 ? M_Locator_ID : M_Warehouse_ID);
|
||||||
|
pstmt.setInt(2, M_Product_ID);
|
||||||
|
if (!allAttributeInstances)
|
||||||
|
{
|
||||||
|
pstmt.setInt(3, M_AttributeSetInstance_ID);
|
||||||
|
}
|
||||||
|
else if (minGuaranteeDate != null)
|
||||||
|
{
|
||||||
|
pstmt.setTimestamp(3, minGuaranteeDate);
|
||||||
|
}
|
||||||
|
rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
if(rs.getBigDecimal(11).signum() != 0)
|
||||||
|
{
|
||||||
|
MStorageOnHand storage = new MStorageOnHand (ctx, rs, trxName);
|
||||||
|
if (!Util.isEmpty(trxName) && forUpdate)
|
||||||
|
{
|
||||||
|
DB.getDatabase().forUpdate(storage, timeout);
|
||||||
|
}
|
||||||
|
list.add(storage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
s_log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
DB.close(rs, pstmt);
|
||||||
|
rs = null; pstmt = null;
|
||||||
|
}
|
||||||
|
MStorageOnHand[] retValue = new MStorageOnHand[list.size()];
|
||||||
|
list.toArray(retValue);
|
||||||
|
return retValue;
|
||||||
|
} // getWarehouse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create or Get Storage Info
|
* Create or Get Storage Info
|
||||||
* @param ctx context
|
* @param ctx context
|
||||||
|
@ -323,22 +578,62 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
* @return existing/new or null
|
* @return existing/new or null
|
||||||
*/
|
*/
|
||||||
public static MStorageOnHand getCreate (Properties ctx, int M_Locator_ID,
|
public static MStorageOnHand getCreate (Properties ctx, int M_Locator_ID,
|
||||||
int M_Product_ID, int M_AttributeSetInstance_ID, String trxName)
|
int M_Product_ID, int M_AttributeSetInstance_ID,Timestamp dateMPolicy, String trxName)
|
||||||
|
{
|
||||||
|
return getCreate(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, dateMPolicy, trxName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create or Get Storage Info
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Locator_ID locator
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @return existing/new or null
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand getCreate (Properties ctx, int M_Locator_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID,Timestamp dateMPolicy, String trxName, boolean forUpdate)
|
||||||
|
{
|
||||||
|
return getCreate(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, dateMPolicy, trxName, forUpdate, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create or Get Storage Info
|
||||||
|
* @param ctx context
|
||||||
|
* @param M_Locator_ID locator
|
||||||
|
* @param M_Product_ID product
|
||||||
|
* @param M_AttributeSetInstance_ID instance
|
||||||
|
* @param trxName transaction
|
||||||
|
* @param forUpdate
|
||||||
|
* @param timeout
|
||||||
|
* @return existing/new or null
|
||||||
|
*/
|
||||||
|
public static MStorageOnHand getCreate (Properties ctx, int M_Locator_ID,
|
||||||
|
int M_Product_ID, int M_AttributeSetInstance_ID,Timestamp dateMPolicy, String trxName, boolean forUpdate, int timeout)
|
||||||
{
|
{
|
||||||
if (M_Locator_ID == 0)
|
if (M_Locator_ID == 0)
|
||||||
throw new IllegalArgumentException("M_Locator_ID=0");
|
throw new IllegalArgumentException("M_Locator_ID=0");
|
||||||
if (M_Product_ID == 0)
|
if (M_Product_ID == 0)
|
||||||
throw new IllegalArgumentException("M_Product_ID=0");
|
throw new IllegalArgumentException("M_Product_ID=0");
|
||||||
MStorageOnHand retValue = get(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, trxName);
|
if (dateMPolicy == null)
|
||||||
|
dateMPolicy = new Timestamp(new Date().getTime());
|
||||||
|
|
||||||
|
MStorageOnHand retValue = get(ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID,dateMPolicy, trxName);
|
||||||
if (retValue != null)
|
if (retValue != null)
|
||||||
|
{
|
||||||
|
if (forUpdate)
|
||||||
|
DB.getDatabase().forUpdate(retValue, timeout);
|
||||||
return retValue;
|
return retValue;
|
||||||
|
}
|
||||||
|
|
||||||
// Insert row based on locator
|
// Insert row based on locator
|
||||||
MLocator locator = new MLocator (ctx, M_Locator_ID, trxName);
|
MLocator locator = new MLocator (ctx, M_Locator_ID, trxName);
|
||||||
if (locator.get_ID() != M_Locator_ID)
|
if (locator.get_ID() != M_Locator_ID)
|
||||||
throw new IllegalArgumentException("Not found M_Locator_ID=" + M_Locator_ID);
|
throw new IllegalArgumentException("Not found M_Locator_ID=" + M_Locator_ID);
|
||||||
//
|
//
|
||||||
retValue = new MStorageOnHand (locator, M_Product_ID, M_AttributeSetInstance_ID);
|
retValue = new MStorageOnHand (locator, M_Product_ID, M_AttributeSetInstance_ID,dateMPolicy);
|
||||||
retValue.saveEx(trxName);
|
retValue.saveEx(trxName);
|
||||||
if (s_log.isLoggable(Level.FINE)) s_log.fine("New " + retValue);
|
if (s_log.isLoggable(Level.FINE)) s_log.fine("New " + retValue);
|
||||||
return retValue;
|
return retValue;
|
||||||
|
@ -360,14 +655,13 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
*/
|
*/
|
||||||
public static boolean add (Properties ctx, int M_Warehouse_ID, int M_Locator_ID,
|
public static boolean add (Properties ctx, int M_Warehouse_ID, int M_Locator_ID,
|
||||||
int M_Product_ID, int M_AttributeSetInstance_ID,
|
int M_Product_ID, int M_AttributeSetInstance_ID,
|
||||||
BigDecimal diffQtyOnHand, String trxName)
|
BigDecimal diffQtyOnHand,Timestamp dateMPolicy, String trxName)
|
||||||
{
|
{
|
||||||
if (diffQtyOnHand == null || diffQtyOnHand.signum() == 0)
|
if (diffQtyOnHand == null || diffQtyOnHand.signum() == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Get Storage
|
// Get Storage
|
||||||
MStorageOnHand storage = getCreate (ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, trxName);
|
MStorageOnHand storage = getCreate (ctx, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID,dateMPolicy, trxName, true, 120);
|
||||||
DB.getDatabase().forUpdate(storage, 120);
|
|
||||||
// Verify
|
// Verify
|
||||||
if (storage.getM_Locator_ID() != M_Locator_ID
|
if (storage.getM_Locator_ID() != M_Locator_ID
|
||||||
&& storage.getM_Product_ID() != M_Product_ID
|
&& storage.getM_Product_ID() != M_Product_ID
|
||||||
|
@ -481,13 +775,14 @@ public class MStorageOnHand extends X_M_StorageOnHand
|
||||||
* @param M_Product_ID product
|
* @param M_Product_ID product
|
||||||
* @param M_AttributeSetInstance_ID attribute
|
* @param M_AttributeSetInstance_ID attribute
|
||||||
*/
|
*/
|
||||||
private MStorageOnHand (MLocator locator, int M_Product_ID, int M_AttributeSetInstance_ID)
|
private MStorageOnHand (MLocator locator, int M_Product_ID, int M_AttributeSetInstance_ID,Timestamp dateMPolicy)
|
||||||
{
|
{
|
||||||
this (locator.getCtx(), 0, locator.get_TrxName());
|
this (locator.getCtx(), 0, locator.get_TrxName());
|
||||||
setClientOrg(locator);
|
setClientOrg(locator);
|
||||||
setM_Locator_ID (locator.getM_Locator_ID());
|
setM_Locator_ID (locator.getM_Locator_ID());
|
||||||
setM_Product_ID (M_Product_ID);
|
setM_Product_ID (M_Product_ID);
|
||||||
setM_AttributeSetInstance_ID (M_AttributeSetInstance_ID);
|
setM_AttributeSetInstance_ID (M_AttributeSetInstance_ID);
|
||||||
|
setDateMaterialPolicy(dateMPolicy);
|
||||||
} // MStorageOnHand
|
} // MStorageOnHand
|
||||||
|
|
||||||
/** Log */
|
/** Log */
|
||||||
|
|
|
@ -1331,6 +1331,8 @@ public abstract class PO
|
||||||
pstmt.setInt(i+1, ((Integer)m_IDs[i]).intValue());
|
pstmt.setInt(i+1, ((Integer)m_IDs[i]).intValue());
|
||||||
else if (oo instanceof Boolean)
|
else if (oo instanceof Boolean)
|
||||||
pstmt.setString(i+1, ((Boolean) m_IDs[i] ? "Y" : "N"));
|
pstmt.setString(i+1, ((Boolean) m_IDs[i] ? "Y" : "N"));
|
||||||
|
else if (oo instanceof Timestamp)
|
||||||
|
pstmt.setTimestamp(i+1, (Timestamp)m_IDs[i]);
|
||||||
else
|
else
|
||||||
pstmt.setString(i+1, m_IDs[i].toString());
|
pstmt.setString(i+1, m_IDs[i].toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -739,14 +739,36 @@ public class POInfo implements Serializable
|
||||||
* @return stringbuilder
|
* @return stringbuilder
|
||||||
*/
|
*/
|
||||||
public StringBuilder buildSelect()
|
public StringBuilder buildSelect()
|
||||||
|
{
|
||||||
|
return buildSelect(false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build select clause
|
||||||
|
* @param fullyQualified
|
||||||
|
* @param noVirtualColumn
|
||||||
|
* @return stringbuilder
|
||||||
|
*/
|
||||||
|
public StringBuilder buildSelect(boolean fullyQualified, boolean noVirtualColumn)
|
||||||
{
|
{
|
||||||
StringBuilder sql = new StringBuilder("SELECT ");
|
StringBuilder sql = new StringBuilder("SELECT ");
|
||||||
int size = getColumnCount();
|
int size = getColumnCount();
|
||||||
|
int count = 0;
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
if (i != 0)
|
boolean virtual = isVirtualColumn(i);
|
||||||
|
if (virtual && noVirtualColumn)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
count++;
|
||||||
|
if (count > 1)
|
||||||
sql.append(",");
|
sql.append(",");
|
||||||
sql.append(getColumnSQL(i)); // Normal and Virtual Column
|
String columnSQL = getColumnSQL(i);
|
||||||
|
if (fullyQualified && !virtual)
|
||||||
|
sql.append(getTableName()).append(".");
|
||||||
|
sql.append(columnSQL); // Normal and Virtual Column
|
||||||
|
if (fullyQualified && !virtual)
|
||||||
|
sql.append(" AS ").append(m_columns[i].ColumnName);
|
||||||
}
|
}
|
||||||
sql.append(" FROM ").append(getTableName());
|
sql.append(" FROM ").append(getTableName());
|
||||||
return sql;
|
return sql;
|
||||||
|
|
|
@ -78,6 +78,10 @@ public class Query
|
||||||
private boolean onlyActiveRecords = false;
|
private boolean onlyActiveRecords = false;
|
||||||
private boolean onlyClient_ID = false;
|
private boolean onlyClient_ID = false;
|
||||||
private int onlySelection_ID = -1;
|
private int onlySelection_ID = -1;
|
||||||
|
private boolean forUpdate = false;
|
||||||
|
private boolean noVirtualColumn = false;
|
||||||
|
private int queryTimeout = 0;
|
||||||
|
private List<String> joinClauseList = new ArrayList<String>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -214,6 +218,34 @@ public class Query
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add FOR UPDATE clause
|
||||||
|
* @param forUpdate
|
||||||
|
*/
|
||||||
|
public Query setForUpdate(boolean forUpdate)
|
||||||
|
{
|
||||||
|
this.forUpdate = forUpdate;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Query setNoVirtualColumn(boolean noVirtualColumn)
|
||||||
|
{
|
||||||
|
this.noVirtualColumn = noVirtualColumn;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Query setQueryTimeout(int seconds)
|
||||||
|
{
|
||||||
|
this.queryTimeout = seconds;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Query addJoinClause(String joinClause)
|
||||||
|
{
|
||||||
|
joinClauseList.add(joinClause);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a list of all po that match the query criteria.
|
* Return a list of all po that match the query criteria.
|
||||||
* @return List
|
* @return List
|
||||||
|
@ -352,6 +384,8 @@ public class Query
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder selectClause = new StringBuilder("SELECT ");
|
StringBuilder selectClause = new StringBuilder("SELECT ");
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
selectClause.append(table.getTableName()).append(".");
|
||||||
selectClause.append(keys[0]);
|
selectClause.append(keys[0]);
|
||||||
selectClause.append(" FROM ").append(table.getTableName());
|
selectClause.append(" FROM ").append(table.getTableName());
|
||||||
String sql = buildSQL(selectClause, true);
|
String sql = buildSQL(selectClause, true);
|
||||||
|
@ -561,6 +595,8 @@ public class Query
|
||||||
for (int i = 0; i < keys.length; i++) {
|
for (int i = 0; i < keys.length; i++) {
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
sqlBuffer.append(", ");
|
sqlBuffer.append(", ");
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
sqlBuffer.append(table.getTableName()).append(".");
|
||||||
sqlBuffer.append(keys[i]);
|
sqlBuffer.append(keys[i]);
|
||||||
}
|
}
|
||||||
sqlBuffer.append(" FROM ").append(table.getTableName());
|
sqlBuffer.append(" FROM ").append(table.getTableName());
|
||||||
|
@ -642,7 +678,14 @@ public class Query
|
||||||
{
|
{
|
||||||
throw new IllegalStateException("No POInfo found for AD_Table_ID="+table.getAD_Table_ID());
|
throw new IllegalStateException("No POInfo found for AD_Table_ID="+table.getAD_Table_ID());
|
||||||
}
|
}
|
||||||
selectClause = info.buildSelect();
|
selectClause = info.buildSelect(!joinClauseList.isEmpty(), noVirtualColumn);
|
||||||
|
}
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
{
|
||||||
|
for(String joinClause : joinClauseList)
|
||||||
|
{
|
||||||
|
selectClause.append(" ").append(joinClause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder whereBuffer = new StringBuilder();
|
StringBuilder whereBuffer = new StringBuilder();
|
||||||
|
@ -656,12 +699,16 @@ public class Query
|
||||||
{
|
{
|
||||||
if (whereBuffer.length() > 0)
|
if (whereBuffer.length() > 0)
|
||||||
whereBuffer.append(" AND ");
|
whereBuffer.append(" AND ");
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
whereBuffer.append(table.getTableName()).append(".");
|
||||||
whereBuffer.append("IsActive=?");
|
whereBuffer.append("IsActive=?");
|
||||||
}
|
}
|
||||||
if (this.onlyClient_ID) //red1
|
if (this.onlyClient_ID) //red1
|
||||||
{
|
{
|
||||||
if (whereBuffer.length() > 0)
|
if (whereBuffer.length() > 0)
|
||||||
whereBuffer.append(" AND ");
|
whereBuffer.append(" AND ");
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
whereBuffer.append(table.getTableName()).append(".");
|
||||||
whereBuffer.append("AD_Client_ID=?");
|
whereBuffer.append("AD_Client_ID=?");
|
||||||
}
|
}
|
||||||
if (this.onlySelection_ID > 0)
|
if (this.onlySelection_ID > 0)
|
||||||
|
@ -693,6 +740,8 @@ public class Query
|
||||||
MRole role = MRole.getDefault(this.ctx, false);
|
MRole role = MRole.getDefault(this.ctx, false);
|
||||||
sql = role.addAccessSQL(sql, table.getTableName(), applyAccessFilterFullyQualified, applyAccessFilterRW);
|
sql = role.addAccessSQL(sql, table.getTableName(), applyAccessFilterFullyQualified, applyAccessFilterRW);
|
||||||
}
|
}
|
||||||
|
if (forUpdate)
|
||||||
|
sql = sql + " FOR UPDATE";
|
||||||
if (log.isLoggable(Level.FINEST)) log.finest("TableName = "+table.getTableName()+"... SQL = " +sql); //red1 - to assist in debugging SQL
|
if (log.isLoggable(Level.FINEST)) log.finest("TableName = "+table.getTableName()+"... SQL = " +sql); //red1 - to assist in debugging SQL
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
@ -718,6 +767,10 @@ public class Query
|
||||||
DB.setParameter(pstmt, i++, this.onlySelection_ID);
|
DB.setParameter(pstmt, i++, this.onlySelection_ID);
|
||||||
if (log.isLoggable(Level.FINEST)) log.finest("Parameter Selection AD_PInstance_ID = "+this.onlySelection_ID);
|
if (log.isLoggable(Level.FINEST)) log.finest("Parameter Selection AD_PInstance_ID = "+this.onlySelection_ID);
|
||||||
}
|
}
|
||||||
|
if (queryTimeout > 0)
|
||||||
|
{
|
||||||
|
pstmt.setQueryTimeout(queryTimeout);
|
||||||
|
}
|
||||||
return pstmt.executeQuery();
|
return pstmt.executeQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -734,6 +787,8 @@ public class Query
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder selectClause = new StringBuilder("SELECT ");
|
StringBuilder selectClause = new StringBuilder("SELECT ");
|
||||||
|
if (!joinClauseList.isEmpty())
|
||||||
|
selectClause.append(table.getTableName()).append(".");
|
||||||
selectClause.append(keys[0]);
|
selectClause.append(keys[0]);
|
||||||
selectClause.append(" FROM ").append(table.getTableName());
|
selectClause.append(" FROM ").append(table.getTableName());
|
||||||
String sql = buildSQL(selectClause, true);
|
String sql = buildSQL(selectClause, true);
|
||||||
|
|
|
@ -495,4 +495,25 @@ public class X_M_AttributeSet extends PO implements I_M_AttributeSet, I_Persiste
|
||||||
{
|
{
|
||||||
return (String)get_Value(COLUMNNAME_SerNoCharSOverwrite);
|
return (String)get_Value(COLUMNNAME_SerNoCharSOverwrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Use Guarantee Date for Material Policy.
|
||||||
|
@param UseGuaranteeDateForMPolicy Use Guarantee Date for Material Policy */
|
||||||
|
public void setUseGuaranteeDateForMPolicy (boolean UseGuaranteeDateForMPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_UseGuaranteeDateForMPolicy, Boolean.valueOf(UseGuaranteeDateForMPolicy));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Use Guarantee Date for Material Policy.
|
||||||
|
@return Use Guarantee Date for Material Policy */
|
||||||
|
public boolean isUseGuaranteeDateForMPolicy ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_UseGuaranteeDateForMPolicy);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,7 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -74,6 +75,23 @@ public class X_M_InOutLineMA extends PO implements I_M_InOutLineMA, I_Persistent
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
@param DateMaterialPolicy
|
||||||
|
Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DateMaterialPolicy, DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
@return Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy ()
|
||||||
|
{
|
||||||
|
return (Timestamp)get_Value(COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -32,7 +33,7 @@ public class X_M_InventoryLineMA extends PO implements I_M_InventoryLineMA, I_Pe
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20130626L;
|
private static final long serialVersionUID = 20130716L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_M_InventoryLineMA (Properties ctx, int M_InventoryLineMA_ID, String trxName)
|
public X_M_InventoryLineMA (Properties ctx, int M_InventoryLineMA_ID, String trxName)
|
||||||
|
@ -74,6 +75,23 @@ public class X_M_InventoryLineMA extends PO implements I_M_InventoryLineMA, I_Pe
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
@param DateMaterialPolicy
|
||||||
|
Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DateMaterialPolicy, DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
@return Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy ()
|
||||||
|
{
|
||||||
|
return (Timestamp)get_Value(COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -32,7 +33,7 @@ public class X_M_MovementLineMA extends PO implements I_M_MovementLineMA, I_Pers
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20130626L;
|
private static final long serialVersionUID = 20130716L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_M_MovementLineMA (Properties ctx, int M_MovementLineMA_ID, String trxName)
|
public X_M_MovementLineMA (Properties ctx, int M_MovementLineMA_ID, String trxName)
|
||||||
|
@ -73,6 +74,23 @@ public class X_M_MovementLineMA extends PO implements I_M_MovementLineMA, I_Pers
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
@param DateMaterialPolicy
|
||||||
|
Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DateMaterialPolicy, DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
@return Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy ()
|
||||||
|
{
|
||||||
|
return (Timestamp)get_Value(COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.compiere.model;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -32,7 +33,7 @@ public class X_M_ProductionLineMA extends PO implements I_M_ProductionLineMA, I_
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20130626L;
|
private static final long serialVersionUID = 20130717L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_M_ProductionLineMA (Properties ctx, int M_ProductionLineMA_ID, String trxName)
|
public X_M_ProductionLineMA (Properties ctx, int M_ProductionLineMA_ID, String trxName)
|
||||||
|
@ -74,6 +75,23 @@ public class X_M_ProductionLineMA extends PO implements I_M_ProductionLineMA, I_
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
@param DateMaterialPolicy
|
||||||
|
Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DateMaterialPolicy, DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
@return Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy ()
|
||||||
|
{
|
||||||
|
return (Timestamp)get_Value(COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
||||||
|
|
|
@ -92,6 +92,23 @@ public class X_M_StorageOnHand extends PO implements I_M_StorageOnHand, I_Persis
|
||||||
return (Timestamp)get_Value(COLUMNNAME_DateLastInventory);
|
return (Timestamp)get_Value(COLUMNNAME_DateLastInventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Date Material Policy.
|
||||||
|
@param DateMaterialPolicy
|
||||||
|
Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public void setDateMaterialPolicy (Timestamp DateMaterialPolicy)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DateMaterialPolicy, DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Date Material Policy.
|
||||||
|
@return Time used for LIFO and FIFO Material Policy
|
||||||
|
*/
|
||||||
|
public Timestamp getDateMaterialPolicy ()
|
||||||
|
{
|
||||||
|
return (Timestamp)get_Value(COLUMNNAME_DateMaterialPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
public I_M_AttributeSetInstance getM_AttributeSetInstance() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
return (I_M_AttributeSetInstance)MTable.get(getCtx(), I_M_AttributeSetInstance.Table_Name)
|
||||||
|
|
|
@ -19,8 +19,10 @@ package org.compiere.util;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.font.TextAttribute;
|
import java.awt.font.TextAttribute;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.text.AttributedCharacterIterator;
|
import java.text.AttributedCharacterIterator;
|
||||||
import java.text.AttributedString;
|
import java.text.AttributedString;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -682,4 +684,13 @@ public class Util
|
||||||
/* */
|
/* */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Timestamp removeTime(Timestamp ts) {
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTime(ts);
|
||||||
|
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
cal.set(Calendar.MINUTE, 0);
|
||||||
|
cal.set(Calendar.SECOND, 0);
|
||||||
|
cal.set(Calendar.MILLISECOND, 0);
|
||||||
|
return new Timestamp(cal.getTimeInMillis());
|
||||||
|
}
|
||||||
} // Util
|
} // Util
|
||||||
|
|
|
@ -880,7 +880,7 @@ public class MDDOrder extends X_DD_Order implements DocAction
|
||||||
if (!MStorageOnHand.add(getCtx(), locator_to.getM_Warehouse_ID(), locator_to.getM_Locator_ID(),
|
if (!MStorageOnHand.add(getCtx(), locator_to.getM_Warehouse_ID(), locator_to.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
line.getM_AttributeSetInstance_ID(),
|
line.getM_AttributeSetInstance_ID(),
|
||||||
Env.ZERO, get_TrxName()))
|
Env.ZERO,null, get_TrxName()))
|
||||||
{
|
{
|
||||||
throw new AdempiereException();
|
throw new AdempiereException();
|
||||||
}
|
}
|
||||||
|
@ -888,7 +888,7 @@ public class MDDOrder extends X_DD_Order implements DocAction
|
||||||
if (!MStorageOnHand.add(getCtx(), locator_from.getM_Warehouse_ID(), locator_from.getM_Locator_ID(),
|
if (!MStorageOnHand.add(getCtx(), locator_from.getM_Warehouse_ID(), locator_from.getM_Locator_ID(),
|
||||||
line.getM_Product_ID(),
|
line.getM_Product_ID(),
|
||||||
line.getM_AttributeSetInstanceTo_ID(),
|
line.getM_AttributeSetInstanceTo_ID(),
|
||||||
Env.ZERO, get_TrxName()))
|
Env.ZERO,null, get_TrxName()))
|
||||||
{
|
{
|
||||||
throw new AdempiereException();
|
throw new AdempiereException();
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class MStorageTest extends AdempiereTestCase
|
||||||
loc.saveEx();
|
loc.saveEx();
|
||||||
//
|
//
|
||||||
BigDecimal targetQty = BigDecimal.valueOf(qtyOnHand).setScale(12, BigDecimal.ROUND_HALF_UP);
|
BigDecimal targetQty = BigDecimal.valueOf(qtyOnHand).setScale(12, BigDecimal.ROUND_HALF_UP);
|
||||||
MStorageOnHand s1 = MStorageOnHand.getCreate(getCtx(), loc.get_ID(), product_id, 0, getTrxName());
|
MStorageOnHand s1 = MStorageOnHand.getCreate(getCtx(), loc.get_ID(), product_id, 0,null, getTrxName());
|
||||||
s1.setQtyOnHand(targetQty);
|
s1.setQtyOnHand(targetQty);
|
||||||
s1.saveEx();
|
s1.saveEx();
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue