diff --git a/db/ddlutils/oracle/functions/ProductAttribute.sql b/db/ddlutils/oracle/functions/ProductAttribute.sql index 9c1536b7ef..7538f1902d 100644 --- a/db/ddlutils/oracle/functions/ProductAttribute.sql +++ b/db/ddlutils/oracle/functions/ProductAttribute.sql @@ -52,8 +52,8 @@ BEGIN -- Get Product Attribute Set Instance IF (p_M_AttributeSetInstance_ID > 0) THEN SELECT asi.Lot, asi.SerNo, asi.GuaranteeDate, - COALESCE(a.SerNoCharSOverwrite, TO_NCHAR('#')), COALESCE(a.SerNoCharEOverwrite, TO_NCHAR('')), - COALESCE(a.LotCharSOverwrite, to_nchar(chr(49835))), COALESCE(a.LotCharEOverwrite, to_nchar(chr(49851))) + COALESCE(a.SerNoCharSOverwrite, TO_CHAR('#')), COALESCE(a.SerNoCharEOverwrite, TO_CHAR('')), + COALESCE(a.LotCharSOverwrite, TO_CHAR(CHR(49835))), COALESCE(a.LotCharEOverwrite, TO_CHAR(CHR(49851))) INTO v_Lot, v_SerNo, v_GuaranteeDate, v_SerNoStart, v_SerNoEnd, v_LotStart, v_LotEnd FROM M_AttributeSetInstance asi diff --git a/migration/i8.1z/oracle/202011120940_IDEMPIERE-3862.sql b/migration/i8.1z/oracle/202011120940_IDEMPIERE-3862.sql new file mode 100644 index 0000000000..8cce0dd03c --- /dev/null +++ b/migration/i8.1z/oracle/202011120940_IDEMPIERE-3862.sql @@ -0,0 +1,93 @@ +-- IDEMPIERE-3862 ORACLE - Update datatype NVARCHAR2 to VARCHAR2 +-- Four NCHAR columns changed to CHAR +ALTER TABLE M_ATTRIBUTESET MODIFY (LOTCHAREOVERWRITE CHAR(1 CHAR), LOTCHARSOVERWRITE CHAR(1 CHAR), SERNOCHAREOVERWRITE CHAR(1 CHAR), SERNOCHARSOVERWRITE CHAR(1 CHAR)) +; + +CREATE OR REPLACE FUNCTION productAttribute +( + p_M_AttributeSetInstance_ID IN NUMBER +) +RETURN VARCHAR2 +/************************************************************************* + * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. + ************************************************************************* + * $Id: M_Attribute_Name.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ + *** + * Title: Return Instance Attribute Info + * Description: + * + * Test: + SELECT M_Attribute_Name (M_AttributeSetInstance_ID) + FROM M_InOutLine WHERE M_AttributeSetInstance_ID > 0 + -- + SELECT p.Name + FROM C_InvoiceLine il LEFT OUTER JOIN M_Product p ON (il.M_Product_ID=p.M_Product_ID); + SELECT p.Name || M_Attribute_Name (il.M_AttributeSetInstance_ID) + FROM C_InvoiceLine il LEFT OUTER JOIN M_Product p ON (il.M_Product_ID=p.M_Product_ID); + + ************************************************************************/ +AS + v_Name VARCHAR2(2000) := NULL; + v_NameAdd VARCHAR2(2000) := ''; + -- + v_Lot M_AttributeSetInstance.Lot%TYPE; + v_LotStart M_AttributeSet.LotCharSOverwrite%TYPE; + v_LotEnd M_AttributeSet.LotCharEOverwrite%TYPE; + v_SerNo M_AttributeSetInstance.SerNo%TYPE; + v_SerNoStart M_AttributeSet.SerNoCharSOverwrite%TYPE; + v_SerNoEnd M_AttributeSet.SerNoCharEOverwrite%TYPE; + v_GuaranteeDate M_AttributeSetInstance.GuaranteeDate%TYPE; + -- + CURSOR CUR_Attributes IS + SELECT ai.Value, a.Name + FROM M_AttributeInstance ai + INNER JOIN M_Attribute a ON (ai.M_Attribute_ID=a.M_Attribute_ID AND a.IsInstanceAttribute='Y') + WHERE ai.M_AttributeSetInstance_ID=p_M_AttributeSetInstance_ID; + +BEGIN +/* -- Get Product Name + SELECT Name + INTO v_Name + FROM M_Product WHERE M_Product_ID=p_M_Product_ID; +*/ + -- Get Product Attribute Set Instance + IF (p_M_AttributeSetInstance_ID > 0) THEN + SELECT asi.Lot, asi.SerNo, asi.GuaranteeDate, + COALESCE(a.SerNoCharSOverwrite, TO_CHAR('#')), COALESCE(a.SerNoCharEOverwrite, TO_CHAR('')), + COALESCE(a.LotCharSOverwrite, TO_CHAR(CHR(49835))), COALESCE(a.LotCharEOverwrite, TO_CHAR(CHR(49851))) + INTO v_Lot, v_SerNo, v_GuaranteeDate, + v_SerNoStart, v_SerNoEnd, v_LotStart, v_LotEnd + FROM M_AttributeSetInstance asi + INNER JOIN M_AttributeSet a ON (asi.M_AttributeSet_ID=a.M_AttributeSet_ID) + WHERE asi.M_AttributeSetInstance_ID=p_M_AttributeSetInstance_ID; + -- + IF (v_SerNo IS NOT NULL) THEN + v_NameAdd := v_NameAdd || v_SerNoStart || v_SerNo || v_SerNoEnd || ' '; + END IF; + IF (v_Lot IS NOT NULL) THEN + v_NameAdd := v_NameAdd || v_LotStart || v_Lot || v_LotEnd || ' '; + END IF; + IF (v_GuaranteeDate IS NOT NULL) THEN + v_NameAdd := v_NameAdd || v_GuaranteeDate || ' '; + END IF; + -- + FOR a IN CUR_Attributes LOOP + v_NameAdd := v_NameAdd || a.Name || ':' || a.Value || ' '; + END LOOP; + -- + IF (LENGTH(v_NameAdd) > 0) THEN + v_Name := v_Name || ' (' || TRIM(v_NameAdd) || ')'; + END IF; + END IF; + + RETURN v_Name; +END productAttribute; +/ + +SELECT register_migration_script('202011120940_IDEMPIERE-3862.sql') FROM dual +; + diff --git a/migration/i8.1z/postgresql/202011120940_IDEMPIERE-3862.sql b/migration/i8.1z/postgresql/202011120940_IDEMPIERE-3862.sql new file mode 100644 index 0000000000..d90a12d0bd --- /dev/null +++ b/migration/i8.1z/postgresql/202011120940_IDEMPIERE-3862.sql @@ -0,0 +1,5 @@ +-- Placeholder, this is just for oracle + +SELECT register_migration_script('202011120940_IDEMPIERE-3862.sql') FROM dual +; +