REVERTING REVISION of [ FR 2432892 ] Re-org of migration directory

This commit is contained in:
Redhuan D. Oon 2008-12-17 15:54:23 +00:00
parent 64d00586f2
commit 17143131bf
26 changed files with 1484 additions and 0 deletions

View File

@ -0,0 +1,145 @@
-- ADD C_AcctSchema.IsAllowNegativePosting
ALTER TABLE C_ACCTSCHEMA ADD isallownegativeposting CHAR(1) DEFAULT 'Y' CHECK (isallownegativeposting IN ('Y','N'));
INSERT INTO AD_ELEMENT
(ad_org_id, ad_element_id, columnname,
created, createdby,
description, entitytype, isactive,
NAME, printname,
updated, ad_client_id, updatedby
)
VALUES (0, 50065, 'IsAllowNegativePosting',
TO_DATE ('2007-04-03 18:17:38', 'YYYY-MM-DD HH24:MI:SS'), 100,
'Allow to post negative accounting values', 'D', 'Y',
'Allow Negative Posting', 'Allow Negative Posting',
TO_DATE ('2007-04-03 18:17:38', 'YYYY-MM-DD HH24:MI:SS'), 0, 100
);
INSERT INTO AD_COLUMN
(ad_org_id, ad_element_id, ad_reference_id, ad_table_id,
columnname,
created, createdby,
defaultvalue, description, entitytype, fieldlength, isactive,
isalwaysupdateable, isencrypted, isidentifier, iskey,
ismandatory, isparent, isselectioncolumn, issyncdatabase,
istranslated, isupdateable, NAME, seqno,
updated, updatedby,
VERSION, ad_client_id, ad_column_id
)
VALUES (0, 50065, 20, 265,
'IsAllowNegativePosting',
TO_DATE ('2007-04-03 18:20:00', 'YYYY-MM-DD HH24:MI:SS'), 100,
'Y', 'Allow to post negative accounting values', 'D', 1, 'Y',
'N', 'N', 'N', 'N',
'N', 'N', 'N', 'N',
'N', 'Y', 'Allow Negative Posting', 0,
TO_DATE ('2007-04-03 18:20:00', 'YYYY-MM-DD HH24:MI:SS'), 100,
0, 0, 50210
);
INSERT INTO AD_FIELD
(ad_column_id, ad_org_id, ad_tab_id,
created, createdby,
description, displaylength, entitytype, isactive,
iscentrallymaintained, isdisplayed, isencrypted, isfieldonly,
isheading, isreadonly, issameline, NAME,
updated, ad_client_id,
updatedby, ad_field_id
)
VALUES (50210, 0, 199,
TO_DATE ('2007-04-03 18:25:16', 'YYYY-MM-DD HH24:MI:SS'), 100,
'Allow to post negative accounting values', 1, 'D', 'Y',
'Y', 'Y', 'N', 'N',
'N', 'N', 'N', 'Allow Negative Posting',
TO_DATE ('2007-04-03 18:25:16', 'YYYY-MM-DD HH24:MI:SS'), 0,
100, 50180
);
UPDATE AD_FIELD
SET seqno = 260,
updated = TO_DATE ('2007-04-03 18:26:28', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_field_id = 12522;
UPDATE AD_FIELD
SET issameline = 'Y',
seqno = 250,
updated = TO_DATE ('2007-04-03 18:31:50', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_field_id = 50180;
-- update sequences
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_element_id) + 1
FROM AD_ELEMENT
WHERE ad_element_id < 1000000)
WHERE NAME = 'AD_Element';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM AD_COLUMN
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM AD_FIELD
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
-- insert translation tables
INSERT INTO AD_ELEMENT_TRL
(ad_element_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, printname,
description, HELP, po_name, po_printname, po_description,
po_help, istranslated)
SELECT e.ad_element_id, l.AD_LANGUAGE, e.ad_client_id, e.ad_org_id,
e.isactive, e.created, e.createdby, e.updated, e.updatedby, e.NAME,
e.printname, e.description, e.HELP, e.po_name, e.po_printname,
e.po_description, e.po_help, 'N' istranslated
FROM AD_ELEMENT e, AD_LANGUAGE l
WHERE e.ad_element_id = 50065
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_ELEMENT_TRL et
WHERE et.ad_element_id = e.ad_element_id
AND et.AD_LANGUAGE = l.AD_LANGUAGE);
INSERT INTO AD_COLUMN_TRL
(ad_column_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, istranslated)
SELECT c.ad_column_id, l.AD_LANGUAGE, c.ad_client_id, c.ad_org_id,
c.isactive, c.created, c.createdby, c.updated, c.updatedby, c.NAME,
'N' istranslated
FROM AD_COLUMN c, AD_LANGUAGE l
WHERE c.ad_column_id = 50210
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_COLUMN_TRL ct
WHERE ct.ad_column_id = c.ad_column_id
AND ct.AD_LANGUAGE = l.AD_LANGUAGE);
INSERT INTO AD_FIELD_TRL
(ad_field_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, description, HELP,
istranslated)
SELECT f.ad_field_id, l.AD_LANGUAGE, f.ad_client_id, f.ad_org_id,
f.isactive, f.created, f.createdby, f.updated, f.updatedby, f.NAME,
f.description, f.HELP, 'N' istranslated
FROM AD_FIELD f, AD_LANGUAGE l
WHERE f.ad_field_id = 50180
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_FIELD_TRL ft
WHERE ft.ad_field_id = f.ad_field_id
AND ft.AD_LANGUAGE = l.AD_LANGUAGE);
COMMIT ;

View File

@ -0,0 +1,5 @@
-- Fix I_Product.X12DE355 FieldLength:
ALTER TABLE I_Product MODIFY X12DE355 NVARCHAR2(4);
UPDATE AD_Column SET FieldLength=4 WHERE AD_Column_ID=7862;
COMMIT;

View File

@ -0,0 +1,52 @@
ALTER TABLE C_CHARGE_ACCT DROP CONSTRAINT CCHRAGE_CCHARGEACCT;
ALTER TABLE C_CHARGE_ACCT ADD CONSTRAINT CCHRAGE_CCHARGEACCT
FOREIGN KEY (C_CHARGE_ID) REFERENCES C_CHARGE(C_CHARGE_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE A_ASSET_ACCT DROP CONSTRAINT AASSET_AASSETACCT;
ALTER TABLE A_ASSET_ACCT ADD CONSTRAINT AASSET_AASSETACCT
FOREIGN KEY (A_ASSET_ID) REFERENCES A_ASSET(A_ASSET_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE A_ASSET_GROUP_ACCT DROP CONSTRAINT AASSETGROUP_AASSETGROUPACCT;
ALTER TABLE A_ASSET_GROUP_ACCT ADD CONSTRAINT AASSETGROUP_AASSETGROUPACCT
FOREIGN KEY (A_ASSET_GROUP_ID) REFERENCES A_ASSET_GROUP (A_ASSET_GROUP_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_BANKACCOUNT_ACCT DROP CONSTRAINT CBANKACCOUNT_CBANKACCTACCT;
ALTER TABLE C_BANKACCOUNT_ACCT ADD CONSTRAINT CBANKACCOUNT_CBANKACCTACCT
FOREIGN KEY (C_BANKACCOUNT_ID) REFERENCES C_BANKACCOUNT (C_BANKACCOUNT_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_BP_GROUP_ACCT DROP CONSTRAINT CBPGROUP_CBPGROUPACCT;
ALTER TABLE C_BP_GROUP_ACCT ADD CONSTRAINT CBPGROUP_CBPGROUPACCT
FOREIGN KEY (C_BP_GROUP_ID) REFERENCES C_BP_GROUP (C_BP_GROUP_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_INTERORG_ACCT DROP CONSTRAINT ADORG_CINTERORGACCT;
ALTER TABLE C_INTERORG_ACCT ADD CONSTRAINT ADORG_CINTERORGACCT
FOREIGN KEY (AD_ORG_ID) REFERENCES AD_ORG (AD_ORG_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_INTERORG_ACCT DROP CONSTRAINT ADORGTO_CINTERORGACCT;
ALTER TABLE C_INTERORG_ACCT ADD CONSTRAINT ADORGTO_CINTERORGACCT
FOREIGN KEY (AD_ORGTO_ID) REFERENCES AD_ORG (AD_ORG_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_CURRENCY_ACCT DROP CONSTRAINT CACCTSCHEMA_CCURRENCYACCT;
ALTER TABLE C_CURRENCY_ACCT ADD CONSTRAINT CACCTSCHEMA_CCURRENCYACCT
FOREIGN KEY (C_ACCTSCHEMA_ID) REFERENCES C_ACCTSCHEMA (C_ACCTSCHEMA_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;
ALTER TABLE C_CURRENCY_ACCT DROP CONSTRAINT CCURRENCY_CCURRENCYACCT;
ALTER TABLE C_CURRENCY_ACCT ADD CONSTRAINT CCURRENCY_CCURRENCYACCT
FOREIGN KEY (C_CURRENCY_ID) REFERENCES C_CURRENCY (C_CURRENCY_ID)
ON DELETE CASCADE
ENABLE NOVALIDATE;

View File

@ -0,0 +1,5 @@
UPDATE AD_FIELD
SET issameline = 'N'
WHERE ad_field_id = 2204;
COMMIT;

View File

@ -0,0 +1,7 @@
UPDATE AD_COLUMN
SET ad_reference_value_id = 182,
updated = TO_DATE ('2007-04-22 23:11:58', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_column_id = 7968;
COMMIT;

View File

@ -0,0 +1,102 @@
INSERT INTO ad_element
(ad_element_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
columnname, entitytype, NAME,
printname
)
VALUES (50070, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'M_Product_Category_Parent_ID', 'D', 'Parent Product Category',
'Parent Product Category'
);
INSERT INTO ad_column
(ad_column_id, ad_client_id, ad_org_id, isactive,
created,
updated, createdby,
updatedby, name, description, help, version,
entitytype, columnname, ad_table_id, ad_reference_id,
ad_reference_value_id,
fieldlength, iskey, isparent, ismandatory, isupdateable,
isidentifier, seqno, istranslated, isencrypted,
isselectioncolumn, ad_element_id, callout, issyncdatabase,
isalwaysupdateable
)
VALUES (50211, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'),
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
100, 'Parent Product Category', 'Parent Product Category', 'The parent product category is used to build a category tree.', 1,
'D', 'M_Product_Category_Parent_ID', 209, 18,
163,
22, 'N', 'N', 'N', 'Y',
'N', 0, 'N', 'N',
'N', 50070, 'org.compiere.model.CalloutProductCategory.testForLoop', 'N',
'N'
);
INSERT INTO ad_field
(ad_field_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
name, description, iscentrallymaintained, seqno, ad_tab_id,
ad_column_id, isdisplayed, displaylength, isreadonly,
issameline, isheading, isfieldonly, isencrypted, entitytype
)
VALUES (50181, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'Parent Product Category', 'Parent Product Category', 'Y', 60, 189,
50211, 'Y', 22, 'N',
'N', 'N', 'N', 'N', 'D'
);
INSERT INTO ad_message
(ad_message_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
value, msgtext, msgtype
)
VALUES (50014, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'ProductCategoryLoopDetected',
'A loop in the product category tree has been detected - the old value will be restored','E'
);
COMMIT ;
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_element_id) + 1
FROM ad_element
WHERE ad_element_id < 1000000)
WHERE NAME = 'AD_Element';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM ad_column
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM ad_field
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_message_id) + 1
FROM ad_message
WHERE ad_message_id < 1000000)
WHERE NAME = 'AD_Message';
ALTER TABLE M_Product_Category ADD M_Product_Category_Parent_ID NUMBER(10,0);
ALTER TABLE M_Product_Category ADD CONSTRAINT MProductCat_ParentCat FOREIGN KEY (M_Product_Category_Parent_ID)
REFERENCES M_Product_Category (M_Product_Category_ID);
UPDATE AD_Column SET IsSelectionColumn='Y' WHERE AD_Column_ID=2012;
COMMIT ;

View File

@ -0,0 +1,53 @@
-- juddm BugFix:(Country Changes)
--add Serbian currency
INSERT INTO C_CURRENCY
(c_currency_id, ad_client_id, ad_org_id, isactive, created,
createdby, updated, updatedby, iso_code, cursymbol,
description, stdprecision, costingprecision, iseuro, isemumember
)
VALUES (347, 0, 0, 'Y', TO_DATE ('2003-08-06', 'YYYY-MM-DD'),
0, TO_DATE ('2000-01-02', 'YYYY-MM-DD'), 0, 'RSD', 'RSD',
'Serbian Dinar', 2, 4, 'N', 'N'
);
-- add country Serbia
INSERT INTO C_COUNTRY
(c_country_id, ad_client_id, ad_org_id, isactive, created,
createdby, updated, updatedby, NAME, description,
countrycode, hasregion, displaysequence, haspostal_add,
c_currency_id, isaddresslinesreverse, isaddresslineslocalreverse
)
VALUES (349, 0, 0, 'Y', TO_DATE ('2003-03-09', 'YYYY-MM-DD'),
0, TO_DATE ('2000-01-02', 'YYYY-MM-DD'), 0, 'Serbia', 'Serbia',
'RS', 'N', '@C@, @P@', 'N',
347, 'N', 'N'
);
-- add country Montenegro
INSERT INTO C_COUNTRY
(c_country_id, ad_client_id, ad_org_id, isactive, created,
createdby, updated, updatedby, NAME,
description, countrycode, hasregion, displaysequence,
haspostal_add, c_currency_id, isaddresslinesreverse,
isaddresslineslocalreverse
)
VALUES (350, 0, 0, 'Y', TO_DATE ('2003-03-09', 'YYYY-MM-DD'),
0, TO_DATE ('2000-01-02', 'YYYY-MM-DD'), 0, 'Montenegro',
'Montenegro', 'ME', 'N', '@C@, @P@',
'N', 102, 'N',
'N'
);
-- deactivate Yugoslavia
UPDATE C_COUNTRY
SET isactive = 'N'
WHERE c_country_id = 346;
-- deactivate Yugoslavia currency
UPDATE C_CURRENCY
SET isactive = 'N'
WHERE c_currency_id = 314;
COMMIT ;

View File

@ -0,0 +1,79 @@
ALTER TABLE AD_PACKAGE_EXP_DETAIL ADD ad_val_rule_id NUMBER(10);
INSERT INTO AD_COLUMN
(ad_column_id, ad_client_id, ad_org_id, isactive,
created,
updated, createdby,
updatedby, NAME, description,
HELP,
VERSION, entitytype, columnname, ad_table_id, ad_reference_id,
fieldlength, iskey, isparent, ismandatory, isupdateable,
isidentifier, seqno, istranslated, isencrypted,
isselectioncolumn, ad_element_id, issyncdatabase,
isalwaysupdateable
)
VALUES (50212, 0, 0, 'Y',
TO_DATE ('04/26/2007 03:24:26', 'MM/DD/YYYY HH24:MI:SS'),
TO_DATE ('04/26/2007 03:24:26', 'MM/DD/YYYY HH24:MI:SS'), 100,
100, 'Dynamic Validation', 'Dynamic Validation Rule',
'These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',
0, 'D', 'AD_Val_Rule_ID', 50006, 18,
22, 'N', 'N', 'N', 'Y',
'N', 0, 'N', 'N',
'N', 139, 'N',
'N'
);
INSERT INTO AD_FIELD
(ad_field_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
NAME, description,
HELP,
iscentrallymaintained, ad_tab_id, ad_column_id, isdisplayed,
displaylogic, displaylength, isreadonly, seqno, issameline,
isheading, isfieldonly, isencrypted, entitytype
)
VALUES (50182, 0, 0, 'Y',
TO_DATE ('04/26/2007 03:28:08', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/26/2007 03:30:25', 'MM/DD/YYYY HH24:MI:SS'), 100,
'Dynamic Validation', 'Dynamic Validation Rule',
'These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',
'Y', 50006, 50212, 'Y',
'@Type@=''V''', 22, 'N', 245, 'N',
'N', 'N', 'N', 'D'
);
INSERT INTO AD_REF_LIST
(ad_ref_list_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
VALUE, NAME, ad_reference_id, entitytype
)
VALUES (50041, 0, 0, 'Y',
TO_DATE ('04/26/2007 03:33:05', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/26/2007 03:33:05', 'MM/DD/YYYY HH24:MI:SS'), 100,
'V', 'Dynamic Validation Rule', 50004, 'D'
);
COMMIT ;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM AD_COLUMN
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM AD_FIELD
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_ref_list_id) + 1
FROM AD_REF_LIST
WHERE ad_ref_list_id < 1000000)
WHERE NAME = 'AD_Ref_List';
COMMIT ;

View File

@ -0,0 +1,23 @@
-- Bug Fix
-- http://sourceforge.net/tracker/index.php?func=detail&aid=1707995&group_id=176962&atid=879332
SET DEFINE OFF;
SET SQLBLANKLINES OFF;
INSERT INTO AD_VAL_RULE (ad_val_rule_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, NAME, description,
TYPE, code, entitytype )
VALUES(271, 0, 0, 'Y', TO_DATE('2007-04-26','YYYY-MM-DD'), 100, TO_DATE('2007-04-26','YYYY-MM-DD'), 100, 'M_PriceList is SO/PO', 'Limits the Sales & Purchase Order window to the correct price lsits',
'S', '(M_PriceList.IsSOPriceList = ''Y'' AND ''@IsSOTrx@''=''Y'') OR (M_PriceList.IsSOPriceList = ''N'' AND ''@IsSOTrx@''=''N'')', 'D');
UPDATE AD_COLUMN SET ad_val_rule_id = 271 WHERE ad_column_id = 2204;
COMMIT;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_val_rule_id) + 1
FROM AD_VAL_RULE
WHERE ad_val_rule_id < 1000000)
WHERE NAME = 'AD_Val_Rule';
COMMIT;

View File

@ -0,0 +1,18 @@
-- Feature Request - Allow rounding up of price list (schema) to nearest 5 or 9 unit of currency
-- http://sourceforge.net/tracker/index.php?func=detail&aid=1708139&group_id=176962&atid=879335
INSERT INTO AD_REF_LIST
(ad_ref_list_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby,
value, name, description, ad_reference_id, validfrom, validto, entitytype )
VALUES (50042, 0, 0, 'Y', TO_DATE('2007-04-26','YYYY-MM-DD'),100, TO_DATE('2007-04-26','YYYY-MM-DD'), 100,
9, 'Ending in 9/5', 'The price ends in either a 5 or 9 whole unit',155,NULL,NULL,'D');
COMMIT;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_ref_list_id) + 1
FROM AD_REF_LIST
WHERE ad_ref_list_id < 1000000)
WHERE NAME = 'AD_Ref_List';
COMMIT;

View File

@ -0,0 +1,8 @@
-- equivalent cleaner code
UPDATE AD_VAL_RULE
SET code = 'M_PriceList.IsSOPriceList = ''@IsSOTrx@'''
WHERE ad_val_rule_id = 271;
COMMIT;

View File

@ -0,0 +1,389 @@
CREATE OR REPLACE
PROCEDURE "M_PRICELIST_CREATE"
(
PInstance_ID IN NUMBER
)
AS
/*************************************************************************
* The contents of this file are subject to the Compiere License. You may
* obtain a copy of the License at http://www.compiere.org/license.html
* Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the License for details. Code: Compiere ERP+CRM
* Copyright (C) 1999-2003 Jorg Janke, ComPiere, Inc. All Rights Reserved.
*************************************************************************
* $Id: M_PriceList_Create.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
***
* Title: Create Pricelist
* Description:
* Create PriceList by copying purchase prices (M_Product_PO)
* and applying product category discounts (M_CategoryDiscount)
* Carlos Ruiz - globalqss - Make T_Selection tables permanent
************************************************************************/
-- Logistice
ResultStr VARCHAR2(2000);
Message VARCHAR2(2000) := '';
NoRate EXCEPTION;
-- Parameter
CURSOR Cur_Parameter (PInstance NUMBER) IS
SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date
FROM AD_PInstance i, AD_PInstance_Para p
WHERE i.AD_PInstance_ID=PInstance
AND i.AD_PInstance_ID=p.AD_PInstance_ID(+)
ORDER BY p.SeqNo;
-- Parameter Variables
p_PriceList_Version_ID NUMBER;
p_DeleteOld CHAR(1) := 'N';
--
v_Currency_ID NUMBER;
v_Client_ID NUMBER;
v_Org_ID NUMBER;
v_UpdatedBy NUMBER;
v_StdPrecision NUMBER;
v_DiscountSchema_ID NUMBER;
v_PriceList_Version_Base_ID NUMBER;
--
v_NextNo NUMBER := 0;
-- Get PL Parameter
CURSOR Cur_DiscountLine (DiscountSchema_ID NUMBER) IS
SELECT *
FROM M_DiscountSchemaLine
WHERE M_DiscountSchema_ID=DiscountSchema_ID
AND IsActive='Y'
ORDER BY SeqNo;
BEGIN
-- Update AD_PInstance
DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing');
ResultStr := 'PInstanceNotFound';
UPDATE AD_PInstance
SET Created = SysDate,
IsProcessing = 'Y'
WHERE AD_PInstance_ID=PInstance_ID;
COMMIT;
-- Get Parameters
ResultStr := 'ReadingParameters';
FOR p IN Cur_Parameter (PInstance_ID) LOOP
p_PriceList_Version_ID := p.Record_ID;
IF (p.ParameterName = 'DeleteOld') THEN
p_DeleteOld := p.P_String;
DBMS_OUTPUT.PUT_LINE(' DeleteOld=' || p_DeleteOld);
ELSE
DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName);
END IF;
END LOOP; -- Get Parameter
DBMS_OUTPUT.PUT_LINE(' PriceList_Version_ID=' || p_PriceList_Version_ID);
-- Checking Prerequisites
-- -- PO Prices must exists
ResultStr := 'CorrectingProductPO';
DBMS_OUTPUT.PUT_LINE(ResultStr);
UPDATE M_Product_PO
SET PriceList = 0
WHERE PriceList IS NULL;
UPDATE M_Product_PO
SET PriceLastPO = 0
WHERE PriceLastPO IS NULL;
UPDATE M_Product_PO
SET PricePO = PriceLastPO
WHERE (PricePO IS NULL OR PricePO = 0) AND PriceLastPO <> 0;
UPDATE M_Product_PO
SET PricePO = 0
WHERE PricePO IS NULL;
-- Set default current vendor
UPDATE M_Product_PO p
SET IsCurrentVendor = 'Y'
WHERE IsCurrentVendor = 'N'
AND NOT EXISTS
(SELECT pp.M_Product_ID FROM M_Product_PO pp
WHERE pp.M_Product_ID=p.M_Product_ID
GROUP BY pp.M_Product_ID HAVING COUNT(*) > 1);
COMMIT;
/**
* Make sure that we have only one active product
*/
ResultStr := 'CorrectingDuplicates';
DBMS_OUTPUT.PUT_LINE(ResultStr);
DECLARE
-- All duplicate products
CURSOR Cur_Duplicates IS
SELECT DISTINCT M_Product_ID
FROM M_Product_PO po
WHERE IsCurrentVendor='Y' AND IsActive='Y'
AND EXISTS ( SELECT M_Product_ID FROM M_Product_PO x
WHERE x.M_Product_ID=po.M_Product_ID
GROUP BY M_Product_ID HAVING COUNT(*) > 1 )
ORDER BY 1;
-- All vendors of Product - expensive first
CURSOR Cur_Vendors (Product_ID NUMBER) IS
SELECT M_Product_ID, C_BPartner_ID
FROM M_Product_PO
WHERE IsCurrentVendor='Y' AND IsActive='Y'
AND M_Product_ID=Product_ID
ORDER BY PriceList DESC;
--
Product_ID NUMBER;
BPartner_ID NUMBER;
BEGIN
FOR dupl IN Cur_Duplicates LOOP
OPEN Cur_Vendors (dupl.M_Product_ID);
FETCH Cur_Vendors INTO Product_ID, BPartner_ID; -- Leave First
LOOP
FETCH Cur_Vendors INTO Product_ID, BPartner_ID; -- Get Record ID
EXIT WHEN Cur_Vendors%NOTFOUND;
--
DBMS_OUTPUT.PUT_LINE(' Record: ' || Product_ID || ' / ' || BPartner_ID);
UPDATE M_Product_PO
SET IsCurrentVendor='N'
WHERE M_Product_ID=Product_ID AND C_BPartner_ID=BPartner_ID;
END LOOP;
CLOSE Cur_Vendors;
END LOOP;
COMMIT;
END;
/** Delete Old Data */
ResultStr := 'DeletingOld';
IF (p_DeleteOld = 'Y') THEN
DELETE M_ProductPrice
WHERE M_PriceList_Version_ID = p_PriceList_Version_ID;
Message := '@Deleted@=' || SQL%ROWCOUNT || ' - ';
DBMS_OUTPUT.PUT_LINE(Message);
END IF;
-- Get PriceList Info
ResultStr := 'GetPLInfo';
DBMS_OUTPUT.PUT_LINE(ResultStr);
SELECT p.C_Currency_ID, c.StdPrecision,
v.AD_Client_ID, v.AD_Org_ID, v.UpdatedBy,
v.M_DiscountSchema_ID, M_PriceList_Version_Base_ID
INTO v_Currency_ID, v_StdPrecision,
v_Client_ID, v_Org_ID, v_UpdatedBy,
v_DiscountSchema_ID, v_PriceList_Version_Base_ID
FROM M_PriceList p, M_PriceList_Version v, C_Currency c
WHERE p.M_PriceList_ID=v.M_PriceList_ID
AND p.C_Currency_ID=c.C_Currency_ID
AND v.M_PriceList_Version_ID=p_PriceList_Version_ID;
/**
* For All Discount Lines in Sequence
*/
FOR dl IN Cur_DiscountLine (v_DiscountSchema_ID) LOOP
ResultStr := 'Parameter Seq=' || dl.SeqNo;
-- DBMS_OUTPUT.PUT_LINE(ResultStr);
-- Clear Temporary Table
DELETE FROM T_Selection WHERE AD_PInstance_ID = PInstance_ID;
-- -----------------------------------
-- Create Selection in temporary table
-- -----------------------------------
IF (v_PriceList_Version_Base_ID IS NULL) THEN
-- Create Selection from M_Product_PO
INSERT INTO T_Selection (AD_PInstance_ID, T_Selection_ID)
SELECT DISTINCT PInstance_ID, po.M_Product_ID
FROM M_Product p, M_Product_PO po
WHERE p.M_Product_ID=po.M_Product_ID
AND (p.AD_Client_ID=v_Client_ID OR p.AD_Client_ID=0)
AND p.IsActive='Y' AND po.IsActive='Y' AND po.IsCurrentVendor='Y'
-- Optional Restrictions
AND (dl.M_Product_Category_ID IS NULL OR p.M_Product_Category_ID IN (
SELECT M_Product_Category_ID FROM M_Product_Category
START WITH M_Product_Category_ID=dl.M_Product_Category_ID
CONNECT BY M_Product_Category_Parent_ID = PRIOR M_Product_Category_ID
))
AND (dl.C_BPartner_ID IS NULL OR po.C_BPartner_ID=dl.C_BPartner_ID)
AND (dl.M_Product_ID IS NULL OR p.M_Product_ID=dl.M_Product_ID);
ELSE
-- Create Selection from existing PriceList
INSERT INTO T_Selection (AD_PInstance_ID, T_Selection_ID)
SELECT DISTINCT PInstance_ID, p.M_Product_ID
FROM M_Product p, M_ProductPrice pp
WHERE p.M_Product_ID=pp.M_Product_ID
AND pp.M_PriceList_Version_ID=v_PriceList_Version_Base_ID
AND p.IsActive='Y' AND pp.IsActive='Y'
-- Optional Restrictions
AND (dl.M_Product_Category_ID IS NULL OR p.M_Product_Category_ID IN (
SELECT M_Product_Category_ID FROM M_Product_Category
START WITH M_Product_Category_ID=dl.M_Product_Category_ID
CONNECT BY M_Product_Category_Parent_ID = PRIOR M_Product_Category_ID
))
AND (dl.C_BPartner_ID IS NULL OR EXISTS
(SELECT * FROM M_Product_PO po WHERE po.M_Product_ID=p.M_Product_ID AND po.C_BPartner_ID=dl.C_BPartner_ID))
AND (dl.M_Product_ID IS NULL OR p.M_Product_ID=dl.M_Product_ID);
END IF;
Message := Message || '@Selected@=' || SQL%ROWCOUNT;
-- DBMS_OUTPUT.PUT_LINE(Message);
-- Delete Prices in Selection, so that we can insert
IF (v_PriceList_Version_Base_ID IS NULL
OR v_PriceList_Version_Base_ID <> p_PriceList_Version_ID) THEN
ResultStr := ResultStr || ', Delete';
DELETE M_ProductPrice pp
WHERE pp.M_PriceList_Version_ID = p_PriceList_Version_ID
AND EXISTS (SELECT * FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID
AND s.AD_PInstance_ID = PInstance_ID);
Message := ', @Deleted@=' || SQL%ROWCOUNT;
END IF;
-- --------------------
-- Copy (Insert) Prices
-- --------------------
IF (v_PriceList_Version_Base_ID = p_PriceList_Version_ID) THEN
-- We have Prices already
NULL;
ELSIF (v_PriceList_Version_Base_ID IS NULL) THEN
-- Copy and Convert from Product_PO
ResultStr := ResultStr || ',Copy_PO';
INSERT INTO M_ProductPrice
(M_PriceList_Version_ID, M_Product_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
PriceList, PriceStd, PriceLimit)
SELECT
p_PriceList_Version_ID, po.M_Product_ID,
v_Client_ID, v_Org_ID, 'Y', SysDate, v_UpdatedBy, SysDate, v_UpdatedBy,
-- Price List
COALESCE(currencyConvert(po.PriceList,
po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0),
-- Price Std
COALESCE(currencyConvert(po.PriceList,
po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0),
-- Price Limit
COALESCE(currencyConvert(po.PricePO,
po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0)
FROM M_Product_PO po
WHERE EXISTS (SELECT * FROM T_Selection s WHERE po.M_Product_ID=s.T_Selection_ID
AND s.AD_PInstance_ID = PInstance_ID)
AND po.IsCurrentVendor='Y' AND po.IsActive='Y';
ELSE
-- Copy and Convert from other PriceList_Version
ResultStr := ResultStr || ',Copy_PL';
INSERT INTO M_ProductPrice
(M_PriceList_Version_ID, M_Product_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
PriceList, PriceStd, PriceLimit)
SELECT
p_PriceList_Version_ID, pp.M_Product_ID,
v_Client_ID, v_Org_ID, 'Y', SysDate, v_UpdatedBy, SysDate, v_UpdatedBy,
-- Price List
COALESCE(currencyConvert(pp.PriceList,
pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0),
-- Price Std
COALESCE(currencyConvert(pp.PriceStd,
pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0),
-- Price Limit
COALESCE(currencyConvert(pp.PriceLimit,
pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0)
FROM M_ProductPrice pp
INNER JOIN M_PriceList_Version plv ON (pp.M_PriceList_Version_ID=plv.M_PriceList_Version_ID)
INNER JOIN M_PriceList pl ON (plv.M_PriceList_ID=pl.M_PriceList_ID)
WHERE pp.M_PriceList_Version_ID=v_PriceList_Version_Base_ID
AND EXISTS (SELECT * FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID
AND s.AD_PInstance_ID = PInstance_ID)
AND pp.IsActive='Y';
END IF;
Message := Message || ', @Inserted@=' || SQL%ROWCOUNT;
-- -----------
-- Calculation
-- -----------
ResultStr := ResultStr || ',Calc';
UPDATE M_ProductPrice p
SET PriceList = (DECODE(dl.List_Base, 'S', PriceStd, 'X', PriceLimit, PriceList)
+ dl.List_AddAmt) * (1 - dl.List_Discount/100),
PriceStd = (DECODE(dl.Std_Base, 'L', PriceList, 'X', PriceLimit, PriceStd)
+ dl.Std_AddAmt) * (1 - dl.Std_Discount/100),
PriceLimit = (DECODE(dl.Limit_Base, 'L', PriceList, 'S', PriceStd, PriceLimit)
+ dl.Limit_AddAmt) * (1 - dl.Limit_Discount/100)
WHERE M_PriceList_Version_ID=p_PriceList_Version_ID
AND EXISTS (SELECT * FROM T_Selection s
WHERE s.T_Selection_ID=p.M_Product_ID
AND s.AD_PInstance_ID = PInstance_ID);
-- --------
-- Rounding (AD_Reference_ID=155)
-- --------
ResultStr := ResultStr || ',Round';
UPDATE M_ProductPrice p
SET PriceList = DECODE(dl.List_Rounding,
'N', PriceList,
'0', ROUND(PriceList, 0), -- Even .00
'D', ROUND(PriceList, 1), -- Dime .10
'T', ROUND(PriceList, -1), -- Ten 10.00
'5', ROUND(PriceList*20,0)/20, -- Nickle .05
'Q', ROUND(PriceList*4,0)/4, -- Quarter .25
ROUND(PriceList, v_StdPrecision)),-- Currency
PriceStd = DECODE(dl.Std_Rounding,
'N', PriceStd,
'0', ROUND(PriceStd, 0), -- Even .00
'D', ROUND(PriceStd, 1), -- Dime .10
'T', ROUND(PriceStd, -1), -- Ten 10.00
'5', ROUND(PriceStd*20,0)/20, -- Nickle .05
'Q', ROUND(PriceStd*4,0)/4, -- Quarter .25
ROUND(PriceStd, v_StdPrecision)), -- Currency
PriceLimit = DECODE(dl.Limit_Rounding,
'N', PriceLimit,
'0', ROUND(PriceLimit, 0), -- Even .00
'D', ROUND(PriceLimit, 1), -- Dime .10
'T', ROUND(PriceLimit, -1), -- Ten 10.00
'5', ROUND(PriceLimit*20,0)/20, -- Nickle .05
'Q', ROUND(PriceLimit*4,0)/4, -- Quarter .25
ROUND(PriceLimit, v_StdPrecision))-- Currency
WHERE M_PriceList_Version_ID=p_PriceList_Version_ID
AND EXISTS (SELECT * FROM T_Selection s
WHERE s.T_Selection_ID=p.M_Product_ID
AND s.AD_PInstance_ID = PInstance_ID);
Message := Message || ', @Updated@=' || SQL%ROWCOUNT;
-- Fixed Price overwrite
ResultStr := ResultStr || ',Fix';
UPDATE M_ProductPrice p
SET PriceList = DECODE(dl.List_Base, 'F', dl.List_Fixed, PriceList),
PriceStd = DECODE(dl.Std_Base, 'F', dl.Std_Fixed, PriceStd),
PriceLimit = DECODE(dl.Limit_Base, 'F', dl.Limit_Fixed, PriceLimit)
WHERE M_PriceList_Version_ID=p_PriceList_Version_ID
AND EXISTS (SELECT * FROM T_Selection s
WHERE s.T_Selection_ID=p.M_Product_ID
AND s.AD_PInstance_ID = PInstance_ID);
-- Log Info
INSERT INTO AD_PInstance_Log (AD_PInstance_ID, Log_ID, P_ID, P_NUMBER, P_MSG)
VALUES (PInstance_ID, v_NextNo, null, dl.SeqNo, Message);
--
v_NextNo := v_NextNo + 1;
Message := '';
END LOOP; -- For all DiscountLines
-- Delete Temporary Selection
DELETE FROM T_Selection WHERE AD_PInstance_ID = PInstance_ID;
<<FINISH_PROCESS>>
-- Update AD_PInstance
DBMS_OUTPUT.PUT_LINE(Message);
DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished');
UPDATE AD_PInstance
SET Updated = SysDate,
IsProcessing = 'N',
Result = 1, -- success
ErrorMsg = Message
WHERE AD_PInstance_ID=PInstance_ID;
COMMIT;
RETURN;
EXCEPTION
WHEN OTHERS THEN
ResultStr := ResultStr || ':' || SQLERRM || ' ' || Message;
DBMS_OUTPUT.PUT_LINE(ResultStr);
UPDATE AD_PInstance
SET Updated = SysDate,
IsProcessing = 'N',
Result = 0, -- failure
ErrorMsg = ResultStr
WHERE AD_PInstance_ID=PInstance_ID;
COMMIT;
RETURN;
END M_PriceList_Create;

View File

@ -0,0 +1,6 @@
UPDATE AD_SYSTEM
SET releaseno = '320',
VERSION = '2007-05-01'
WHERE ad_system_id = 0 AND ad_client_id = 0;
COMMIT ;

View File

@ -0,0 +1,148 @@
-- ADD C_AcctSchema.IsAllowNegativePosting - postgres script
ALTER TABLE C_ACCTSCHEMA ADD COLUMN IsAllowNegativePosting CHAR(1) DEFAULT 'Y' CHECK (IsAllowNegativePosting IN ('Y','N'));
INSERT INTO AD_ELEMENT
(ad_org_id, ad_element_id, columnname,
created,
createdby, description, entitytype, isactive,
NAME, printname,
updated,
ad_client_id, updatedby
)
VALUES (0, 50065, 'IsAllowNegativePosting',
TO_TIMESTAMP ('2007-04-03 18:17:38', 'YYYY-MM-DD HH24:MI:SS'),
100, 'Allow to post negative accounting values', 'D', 'Y',
'Allow Negative Posting', 'Allow Negative Posting',
TO_TIMESTAMP ('2007-04-03 18:17:38', 'YYYY-MM-DD HH24:MI:SS'),
0, 100
);
INSERT INTO AD_COLUMN
(ad_org_id, ad_element_id, ad_reference_id, ad_table_id,
columnname,
created,
createdby, defaultvalue, description, entitytype, fieldlength,
isactive, isalwaysupdateable, isencrypted, isidentifier, iskey,
ismandatory, isparent, isselectioncolumn, issyncdatabase,
istranslated, isupdateable, NAME, seqno,
updated,
updatedby, VERSION, ad_client_id, ad_column_id
)
VALUES (0, 50065, 20, 265,
'IsAllowNegativePosting',
TO_TIMESTAMP ('2007-04-03 18:20:00', 'YYYY-MM-DD HH24:MI:SS'),
100, 'Y', 'Allow to post negative accounting values', 'D', 1,
'Y', 'N', 'N', 'N', 'N',
'N', 'N', 'N', 'N',
'N', 'Y', 'Allow Negative Posting', 0,
TO_TIMESTAMP ('2007-04-03 18:20:00', 'YYYY-MM-DD HH24:MI:SS'),
100, 0, 0, 50210
);
INSERT INTO AD_FIELD
(ad_column_id, ad_org_id, ad_tab_id,
created,
createdby, description, displaylength, entitytype, isactive,
iscentrallymaintained, isdisplayed, isencrypted, isfieldonly,
isheading, isreadonly, issameline, NAME,
updated,
ad_client_id, updatedby, ad_field_id
)
VALUES (50210, 0, 199,
TO_TIMESTAMP ('2007-04-03 18:25:16', 'YYYY-MM-DD HH24:MI:SS'),
100, 'Allow to post negative accounting values', 1, 'D', 'Y',
'Y', 'Y', 'N', 'N',
'N', 'N', 'N', 'Allow Negative Posting',
TO_TIMESTAMP ('2007-04-03 18:25:16', 'YYYY-MM-DD HH24:MI:SS'),
0, 100, 50180
);
UPDATE AD_FIELD
SET seqno = 260,
updated = TO_TIMESTAMP ('2007-04-03 18:26:28', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_field_id = 12522;
UPDATE AD_FIELD
SET issameline = 'Y',
seqno = 250,
updated = TO_TIMESTAMP ('2007-04-03 18:31:50', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_field_id = 50180;
-- update sequences
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_element_id) + 1
FROM AD_ELEMENT
WHERE ad_element_id < 1000000)
WHERE NAME = 'AD_Element';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM AD_COLUMN
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM AD_FIELD
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
-- insert translation tables
INSERT INTO AD_ELEMENT_TRL
(ad_element_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, printname,
description, HELP, po_name, po_printname, po_description,
po_help, istranslated)
SELECT e.ad_element_id, l.AD_LANGUAGE, e.ad_client_id, e.ad_org_id,
e.isactive, e.created, e.createdby, e.updated, e.updatedby, e.NAME,
e.printname, e.description, e.HELP, e.po_name, e.po_printname,
e.po_description, e.po_help, 'N'
FROM AD_ELEMENT e, AD_LANGUAGE l
WHERE e.ad_element_id = 50065
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_ELEMENT_TRL et
WHERE et.ad_element_id = e.ad_element_id
AND et.AD_LANGUAGE = l.AD_LANGUAGE);
INSERT INTO AD_COLUMN_TRL
(ad_column_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, istranslated)
SELECT c.ad_column_id, l.AD_LANGUAGE, c.ad_client_id, c.ad_org_id,
c.isactive, c.created, c.createdby, c.updated, c.updatedby, c.NAME,
'N'
FROM AD_COLUMN c, AD_LANGUAGE l
WHERE c.ad_column_id = 50210
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_COLUMN_TRL ct
WHERE ct.ad_column_id = c.ad_column_id
AND ct.AD_LANGUAGE = l.AD_LANGUAGE);
INSERT INTO AD_FIELD_TRL
(ad_field_id, AD_LANGUAGE, ad_client_id, ad_org_id, isactive,
created, createdby, updated, updatedby, NAME, description, HELP,
istranslated)
SELECT f.ad_field_id, l.AD_LANGUAGE, f.ad_client_id, f.ad_org_id,
f.isactive, f.created, f.createdby, f.updated, f.updatedby, f.NAME,
f.description, f.HELP, 'N'
FROM AD_FIELD f, AD_LANGUAGE l
WHERE f.ad_field_id = 50180
AND l.issystemlanguage = 'Y'
AND l.isbaselanguage = 'N'
AND NOT EXISTS (
SELECT 1
FROM AD_FIELD_TRL ft
WHERE ft.ad_field_id = f.ad_field_id
AND ft.AD_LANGUAGE = l.AD_LANGUAGE);
COMMIT ;

View File

@ -0,0 +1,4 @@
-- Fix I_Product.X12DE355 FieldLength:
ALTER TABLE i_product ALTER x12de355 TYPE character varying(4);
UPDATE AD_Column SET FieldLength=4 WHERE AD_Column_ID=7862;
COMMIT;

View File

@ -0,0 +1,52 @@
ALTER TABLE C_CHARGE_ACCT DROP CONSTRAINT CCHRAGE_CCHARGEACCT;
ALTER TABLE C_CHARGE_ACCT ADD CONSTRAINT CCHRAGE_CCHARGEACCT
FOREIGN KEY (C_CHARGE_ID) REFERENCES C_CHARGE(C_CHARGE_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE A_ASSET_ACCT DROP CONSTRAINT AASSET_AASSETACCT;
ALTER TABLE A_ASSET_ACCT ADD CONSTRAINT AASSET_AASSETACCT
FOREIGN KEY (A_ASSET_ID) REFERENCES A_ASSET(A_ASSET_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE A_ASSET_GROUP_ACCT DROP CONSTRAINT AASSETGROUP_AASSETGROUPACCT;
ALTER TABLE A_ASSET_GROUP_ACCT ADD CONSTRAINT AASSETGROUP_AASSETGROUPACCT
FOREIGN KEY (A_ASSET_GROUP_ID) REFERENCES A_ASSET_GROUP (A_ASSET_GROUP_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_BANKACCOUNT_ACCT DROP CONSTRAINT CBANKACCOUNT_CBANKACCTACCT;
ALTER TABLE C_BANKACCOUNT_ACCT ADD CONSTRAINT CBANKACCOUNT_CBANKACCTACCT
FOREIGN KEY (C_BANKACCOUNT_ID) REFERENCES C_BANKACCOUNT (C_BANKACCOUNT_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_BP_GROUP_ACCT DROP CONSTRAINT CBPGROUP_CBPGROUPACCT;
ALTER TABLE C_BP_GROUP_ACCT ADD CONSTRAINT CBPGROUP_CBPGROUPACCT
FOREIGN KEY (C_BP_GROUP_ID) REFERENCES C_BP_GROUP (C_BP_GROUP_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_INTERORG_ACCT DROP CONSTRAINT ADORG_CINTERORGACCT;
ALTER TABLE C_INTERORG_ACCT ADD CONSTRAINT ADORG_CINTERORGACCT
FOREIGN KEY (AD_ORG_ID) REFERENCES AD_ORG (AD_ORG_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_INTERORG_ACCT DROP CONSTRAINT ADORGTO_CINTERORGACCT;
ALTER TABLE C_INTERORG_ACCT ADD CONSTRAINT ADORGTO_CINTERORGACCT
FOREIGN KEY (AD_ORGTO_ID) REFERENCES AD_ORG (AD_ORG_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_CURRENCY_ACCT DROP CONSTRAINT CACCTSCHEMA_CCURRENCYACCT;
ALTER TABLE C_CURRENCY_ACCT ADD CONSTRAINT CACCTSCHEMA_CCURRENCYACCT
FOREIGN KEY (C_ACCTSCHEMA_ID) REFERENCES C_ACCTSCHEMA (C_ACCTSCHEMA_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE C_CURRENCY_ACCT DROP CONSTRAINT CCURRENCY_CCURRENCYACCT;
ALTER TABLE C_CURRENCY_ACCT ADD CONSTRAINT CCURRENCY_CCURRENCYACCT
FOREIGN KEY (C_CURRENCY_ID) REFERENCES C_CURRENCY (C_CURRENCY_ID)
ON DELETE CASCADE
DEFERRABLE INITIALLY DEFERRED;

View File

@ -0,0 +1,5 @@
UPDATE AD_FIELD
SET issameline = 'N'
WHERE ad_field_id = 2204;
COMMIT;

View File

@ -0,0 +1,7 @@
UPDATE AD_COLUMN
SET ad_reference_value_id = 182,
updated = TO_TIMESTAMP ('2007-04-22 23:11:58', 'YYYY-MM-DD HH24:MI:SS'),
updatedby = 100
WHERE ad_column_id = 7968;
COMMIT;

View File

@ -0,0 +1,102 @@
INSERT INTO ad_element
(ad_element_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
columnname, entitytype, NAME,
printname
)
VALUES (50070, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'M_Product_Category_Parent_ID', 'D', 'Parent Product Category',
'Parent Product Category'
);
INSERT INTO ad_column
(ad_column_id, ad_client_id, ad_org_id, isactive,
created,
updated, createdby,
updatedby, name, description, help, version,
entitytype, columnname, ad_table_id, ad_reference_id,
ad_reference_value_id,
fieldlength, iskey, isparent, ismandatory, isupdateable,
isidentifier, seqno, istranslated, isencrypted,
isselectioncolumn, ad_element_id, callout, issyncdatabase,
isalwaysupdateable
)
VALUES (50211, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'),
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
100, 'Parent Product Category', 'Parent Product Category', 'The parent product category is used to build a category tree.', 1,
'D', 'M_Product_Category_Parent_ID', 209, 18,
163,
22, 'N', 'N', 'N', 'Y',
'N', 0, 'N', 'N',
'N', 50070, 'org.compiere.model.CalloutProductCategory.testForLoop', 'N',
'N'
);
INSERT INTO ad_field
(ad_field_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
name, description, iscentrallymaintained, seqno, ad_tab_id,
ad_column_id, isdisplayed, displaylength, isreadonly,
issameline, isheading, isfieldonly, isencrypted, entitytype
)
VALUES (50181, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'Parent Product Category', 'Parent Product Category', 'Y', 60, 189,
50211, 'Y', 22, 'N',
'N', 'N', 'N', 'N', 'D'
);
INSERT INTO ad_message
(ad_message_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
value, msgtext, msgtype
)
VALUES (50014, 0, 0, 'Y',
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
TO_DATE ('04/24/2007 12:30:00', 'MM/DD/YYYY HH24:MI:SS'), 100,
'ProductCategoryLoopDetected',
'A loop in the product category tree has been detected - the old value will be restored','E'
);
COMMIT ;
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_element_id) + 1
FROM ad_element
WHERE ad_element_id < 1000000)
WHERE NAME = 'AD_Element';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM ad_column
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM ad_field
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
UPDATE ad_sequence
SET currentnextsys = (SELECT MAX (ad_message_id) + 1
FROM ad_message
WHERE ad_message_id < 1000000)
WHERE NAME = 'AD_Message';
ALTER TABLE M_Product_Category ADD M_Product_Category_Parent_ID NUMERIC(10);
ALTER TABLE M_Product_Category ADD CONSTRAINT MProductCat_ParentCat FOREIGN KEY (M_Product_Category_Parent_ID)
REFERENCES M_Product_Category (M_Product_Category_ID);
UPDATE AD_Column SET IsSelectionColumn='Y' WHERE AD_Column_ID=2012;
COMMIT ;

View File

@ -0,0 +1,32 @@
-- juddm BugFix:(Country Changes)
--add Serbian currency
INSERT INTO C_CURRENCY
(C_CURRENCY_ID, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, ISO_CODE,
CURSYMBOL, DESCRIPTION, STDPRECISION, COSTINGPRECISION, ISEURO, ISEMUMEMBER)
VALUES(347, 0, 0, 'Y', TO_TIMESTAMP('2003-08-06','YYYY-MM-DD'),0, TO_TIMESTAMP('2000-01-02','YYYY-MM-DD'), 0, 'RSD',
'RSD', 'Serbian Dinar', 2, 4, 'N', 'N');
-- add country Serbia
INSERT INTO C_COUNTRY
(C_COUNTRY_ID, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY,
NAME, DESCRIPTION, COUNTRYCODE, HASREGION, DISPLAYSEQUENCE, HASPOSTAL_ADD, C_CURRENCY_ID,
ISADDRESSLINESREVERSE, ISADDRESSLINESLOCALREVERSE)
VALUES (349, 0, 0, 'Y', TO_TIMESTAMP('2003-03-09', 'YYYY-MM-DD'), 0, TO_TIMESTAMP('2000-01-02','YYYY-MM-DD'), 0,
'Serbia', 'Serbia', 'RS', 'N', '@C@, @P@', 'N', 347, 'N', 'N');
-- add country Montenegro
INSERT INTO C_COUNTRY
(C_COUNTRY_ID, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY,
NAME, DESCRIPTION, COUNTRYCODE, HASREGION, DISPLAYSEQUENCE, HASPOSTAL_ADD, C_CURRENCY_ID,
ISADDRESSLINESREVERSE, ISADDRESSLINESLOCALREVERSE)
VALUES (350, 0, 0, 'Y', TO_TIMESTAMP('2003-03-09','YYYY-MM-DD'), 0, TO_TIMESTAMP('2000-01-02','YYYY-MM-DD'), 0,
'Montenegro', 'Montenegro', 'ME', 'N', '@C@, @P@', 'N', 102, 'N', 'N');
-- deactivate Yugoslavia
UPDATE C_COUNTRY SET ISACTIVE = 'N' WHERE C_COUNTRY_ID=346;
-- deactivate Yugoslavia currency
UPDATE C_CURRENCY SET ISACTIVE = 'N' WHERE C_CURRENCY_ID = 314;
COMMIT;

View File

@ -0,0 +1,79 @@
ALTER TABLE AD_PACKAGE_EXP_DETAIL ADD ad_val_rule_id NUMERIC(10);
INSERT INTO AD_COLUMN
(ad_column_id, ad_client_id, ad_org_id, isactive,
created,
updated, createdby,
updatedby, NAME, description,
HELP,
VERSION, entitytype, columnname, ad_table_id, ad_reference_id,
fieldlength, iskey, isparent, ismandatory, isupdateable,
isidentifier, seqno, istranslated, isencrypted,
isselectioncolumn, ad_element_id, issyncdatabase,
isalwaysupdateable
)
VALUES (50212, 0, 0, 'Y',
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'),
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
100, 'Dynamic Validation', 'Dynamic Validation Rule',
'These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',
0, 'D', 'AD_Val_Rule_ID', 50006, 18,
22, 'N', 'N', 'N', 'Y',
'N', 0, 'N', 'N',
'N', 139, 'N',
'N'
);
INSERT INTO AD_FIELD
(ad_field_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
NAME, description,
HELP,
iscentrallymaintained, ad_tab_id, ad_column_id, isdisplayed,
displaylogic, displaylength, isreadonly, seqno, issameline,
isheading, isfieldonly, isencrypted, entitytype
)
VALUES (50182, 0, 0, 'Y',
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
'Dynamic Validation', 'Dynamic Validation Rule',
'These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',
'Y', 50006, 50212, 'Y',
'@Type@=''V''', 22, 'N', 245, 'N',
'N', 'N', 'N', 'D'
);
INSERT INTO AD_REF_LIST
(ad_ref_list_id, ad_client_id, ad_org_id, isactive,
created, createdby,
updated, updatedby,
VALUE, NAME, ad_reference_id, entitytype
)
VALUES (50041, 0, 0, 'Y',
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
'V', 'Dynamic Validation Rule', 50004, 'D'
);
COMMIT ;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_column_id) + 1
FROM AD_COLUMN
WHERE ad_column_id < 1000000)
WHERE NAME = 'AD_Column';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_field_id) + 1
FROM AD_FIELD
WHERE ad_field_id < 1000000)
WHERE NAME = 'AD_Field';
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_ref_list_id) + 1
FROM AD_REF_LIST
WHERE ad_ref_list_id < 1000000)
WHERE NAME = 'AD_Ref_List';
COMMIT ;

View File

@ -0,0 +1,20 @@
-- Bug Fix
-- http://sourceforge.net/tracker/index.php?func=detail&aid=1707995&group_id=176962&atid=879332
INSERT INTO AD_VAL_RULE (ad_val_rule_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, name, description,
type, code, entitytype )
VALUES(271, 0, 0, 'Y', TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100, TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100, 'M_PriceList is SO/PO', 'Limits the Sales & Purchase Order window to the correct price lsits',
'S', '(M_PriceList.IsSOPriceList = ''Y'' AND ''@IsSOTrx@''=''Y'') OR (M_PriceList.IsSOPriceList = ''N'' AND ''@IsSOTrx@''=''N'')', 'D');
UPDATE AD_COLUMN set ad_val_rule_id = 271 where ad_column_id = 2204;
COMMIT;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_val_rule_id) + 1
FROM AD_VAL_RULE
WHERE ad_val_rule_id < 1000000)
WHERE NAME = 'AD_Val_Rule';
COMMIT;

View File

@ -0,0 +1,18 @@
-- Feature Request - Allow rounding up of price list (schema) to nearest 5 or 9 unit of currency
-- http://sourceforge.net/tracker/index.php?func=detail&aid=1708139&group_id=176962&atid=879335
INSERT INTO AD_REF_LIST
(ad_ref_list_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby,
value, name, description, ad_reference_id, validfrom, validto, entitytype )
VALUES (50042, 0, 0, 'Y', TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'),100, TO_TIMESTAMP('2007-04-26','YYYY-MM-DD'), 100,
9, 'Ending in 9/5', 'The price ends in either a 5 or 9 whole unit',155,NULL,NULL,'D');
COMMIT;
UPDATE AD_SEQUENCE
SET currentnextsys = (SELECT MAX (ad_ref_list_id) + 1
FROM AD_REF_LIST
WHERE ad_ref_list_id < 1000000)
WHERE NAME = 'AD_Ref_List';
COMMIT;

View File

@ -0,0 +1,8 @@
-- equivalent cleaner code
UPDATE AD_VAL_RULE
SET code = 'M_PriceList.IsSOPriceList = ''@IsSOTrx@'''
WHERE ad_val_rule_id = 271;
COMMIT;

View File

@ -0,0 +1,111 @@
create or replace function altercolumn(tablename name, columnname name, datatype name,
nullclause varchar, defaultclause varchar) returns void as $$
declare
command text;
viewtext text[];
viewname name[];
dropviews name[];
i int;
j int;
v record;
sqltype text;
sqltype_short text;
typename name;
begin
if datatype is not null then
select pg_type.typname, format_type(pg_type.oid, pg_attribute.atttypmod)
into typename, sqltype
from pg_class, pg_attribute, pg_type
where relname = lower(tablename)
and relkind = 'r'
and pg_class.oid = pg_attribute.attrelid
and attname = lower(columnname)
and atttypid = pg_type.oid;
sqltype_short := sqltype;
if typename = 'numeric' then
sqltype_short := replace(sqltype, ',0', '');
elsif strpos(sqltype,'character varying') = 1 then
sqltype_short := replace(sqltype, 'character varying', 'varchar');
elsif sqltype = 'timestamp without time zone' then
sqltype_short := 'timestamp';
end if;
if lower(datatype) <> sqltype and lower(datatype) <> sqltype_short then
i := 0;
for v in select a.relname, a.oid
from pg_class a, pg_depend b, pg_depend c, pg_class d, pg_attribute e
where a.oid = b.refobjid
and b.objid = c.objid
and b.refobjid <> c.refobjid
and b.deptype = 'n'
and c.refobjid = d.oid
and d.relname = lower(tablename)
and d.relkind = 'r'
and d.oid = e.attrelid
and e.attname = lower(columnname)
and c.refobjsubid = e.attnum
and a.relkind = 'v'
loop
i := i + 1;
viewtext[i] := pg_get_viewdef(v.oid);
viewname[i] := v.relname;
end loop;
if i > 0 then
begin
for j in 1 .. i loop
command := 'drop view ' || viewname[j];
execute command;
dropviews[j] := viewname[j];
end loop;
exception
when others then
i := array_upper(dropviews, 1);
if i > 0 then
for j in 1 .. i loop
command := 'create or replace view ' || dropviews[j] || ' as ' || viewtext[j];
execute command;
end loop;
end if;
raise exception 'Failed to recreate dependent view';
end;
end if;
command := 'alter table ' || lower(tablename) || ' alter column ' || lower(columnname) || ' type ' || lower(datatype);
execute command;
i := array_upper(dropviews, 1);
if i > 0 then
for j in 1 .. i loop
command := 'create or replace view ' || dropviews[j] || ' as ' || viewtext[j];
execute command;
end loop;
end if;
end if;
end if;
if defaultclause is not null then
if lower(defaultclause) = 'null' then
command := 'alter table ' || lower(tablename) || ' alter column ' || lower(columnname) || ' drop default ';
else
command := 'alter table ' || lower(tablename) || ' alter column ' || lower(columnname) || ' set default ''' || defaultclause || '''';
end if;
execute command;
end if;
if nullclause is not null then
if lower(nullclause) = 'not null' then
command := 'alter table ' || lower(tablename) || ' alter column ' || lower(columnname) || ' set not null';
execute command;
elsif lower(nullclause) = 'null' then
command := 'alter table ' || lower(tablename) || ' alter column ' || lower(columnname) || ' drop not null';
execute command;
end if;
end if;
end;
$$ language plpgsql;
create table t_alter_column
( tablename name, columnname name, datatype name, nullclause varchar(10), defaultclause varchar(200));
create rule alter_column_rule as on insert to t_alter_column
do instead select altercolumn(new.tablename, new.columnname, new.datatype, new.nullclause,
new.defaultclause);

View File

@ -0,0 +1,6 @@
UPDATE AD_SYSTEM
SET releaseno = '320',
VERSION = '2007-05-01'
WHERE ad_system_id = 0 AND ad_client_id = 0;
COMMIT ;