-- -- Create SQL Java Functions (Derby) -- -- Author + Copyright 1999-2005 Jorg Janke -- 09-28-2006 Jinglun Zhang modified from sqlj/oracle, ignore drop errors -- -- load sqlj.jar to Derby Call SQLJ.REMOVE_JAR ('adempiere_sqlj',0); Call SQLJ.INSTALL_JAR ('c:\adempiere\adempiere-all2\sqlj\sqlj.jar', 'adempiere_sqlj', 0); call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','ADEMPIERE.adempiere_sqlj'); -- drop/create functions DROP FUNCTION adempiereVersion; CREATE FUNCTION adempiereVersion() RETURNS VARCHAR(255) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getVersion'; DROP FUNCTION adempiereProperties; CREATE FUNCTION adempiereProperties() RETURNS VARCHAR(1022) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getProperties'; DROP FUNCTION adempiereProperty; CREATE FUNCTION adempiereProperty(p_key VARCHAR(255)) RETURNS VARCHAR(1022) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getProperty'; -- Product -- DROP FUNCTION productAttribute; CREATE FUNCTION productAttribute (M_AttributeSetInstance_ID int) RETURNS VARCHAR(255) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.attributeName'; DROP FUNCTION bomPriceLimit; CREATE FUNCTION bomPriceLimit (M_Product_ID int, M_PriceList_Version_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomPriceLimit'; DROP FUNCTION bomPriceList; CREATE FUNCTION bomPriceList (M_Product_ID int, M_PriceList_Version_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomPriceList'; DROP FUNCTION bomPriceStd; CREATE FUNCTION bomPriceStd (M_Product_ID int, M_PriceList_Version_ID int) RETURNS Decimal(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomPriceStd'; DROP FUNCTION bomQtyAvailable; CREATE FUNCTION bomQtyAvailable (M_Product_ID int, M_Warehouse_ID int, M_Locator_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomQtyAvailable'; DROP FUNCTION bomQtyOnHand; CREATE FUNCTION bomQtyOnHand (M_Product_ID int, M_Warehouse_ID int, M_Locator_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomQtyOnHand'; DROP FUNCTION bomQtyOrdered; CREATE FUNCTION bomQtyOrdered (M_Product_ID int, M_Warehouse_ID int, M_Locator_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomQtyOrdered'; DROP FUNCTION bomQtyReserved; CREATE FUNCTION bomQtyReserved (M_Product_ID int, M_Warehouse_ID int, M_Locator_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Product.bomQtyReserved'; -- Currency -- DROP FUNCTION currencyBase; CREATE FUNCTION currencyBase (Amount DECIMAL(31,5), C_CurrencyFrom_ID int, ConversionDate TIMESTAMP, AD_Client_ID int, AD_Org_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Currency.base'; DROP FUNCTION currencyConvert; --CREATE FUNCTION currencyConvert (Amount DOUBLE, C_CurrencyFrom_ID int, -- C_CurrencyTo_ID int, -- ConversionDate TIMESTAMP, C_ConversionType_ID int, AD_Client_ID int, AD_Org_ID int) -- RETURNS DOUBLE CREATE FUNCTION currencyConvert (Amount DECIMAL(31,5), C_CurrencyFrom_ID int, C_CurrencyTo_ID int, ConversionDate TIMESTAMP, C_ConversionType_ID int, AD_Client_ID int, AD_Org_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Currency.convert'; DROP FUNCTION currencyRate; CREATE FUNCTION currencyRate (C_CurrencyFrom_ID int, C_CurrencyTo_ID int, ConversionDate TIMESTAMP, C_ConversionType_ID int, AD_Client_ID int, AD_Org_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Currency.rate'; DROP FUNCTION currencyRound; CREATE FUNCTION currencyRound (Amt DECIMAL(31,5), C_CurrencyTo_ID int, IsCosting VARCHAR(2)) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Currency.round'; -- BPartner -- DROP FUNCTION bpartnerRemitLocation; CREATE FUNCTION bpartnerRemitLocation (p_C_BPartner_ID int) RETURNS int PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.BPartner.remitLocation'; -- Invoice -- DROP FUNCTION invoiceOpen; CREATE FUNCTION invoiceOpen (p_C_Invoice_ID int, p_C_InvoicePaySchedule_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Invoice.open'; DROP FUNCTION invoicePaid; CREATE FUNCTION invoicePaid (p_C_Invoice_ID int, p_C_Currency_ID int, p_MultiplierAP int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Invoice.paid'; DROP FUNCTION invoiceDiscount; CREATE FUNCTION invoiceDiscount (p_C_Invoice_ID int, p_PayDate TIMESTAMP, p_C_InvoicePaySchedule_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Invoice.discount'; -- Payment Term -- DROP FUNCTION paymentTermDueDays; CREATE FUNCTION paymentTermDueDays (p_C_PaymentTerm_ID int, p_DocDate TIMESTAMP, p_PayDate TIMESTAMP) RETURNS int PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.PaymentTerm.dueDays'; DROP FUNCTION paymentTermDiscount; CREATE FUNCTION paymentTermDiscount (p_Amount DECIMAL(31,5), p_C_Currency_ID int, p_C_PaymentTerm_ID int, p_DocDate TIMESTAMP, p_PayDate TIMESTAMP) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.PaymentTerm.discount'; DROP FUNCTION paymentTermDueDate; CREATE FUNCTION paymentTermDueDate (p_C_PaymentTerm_ID int, p_DocDate TIMESTAMP) RETURNS TIMESTAMP PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.PaymentTerm.dueDate'; -- Payment -- DROP FUNCTION paymentAllocated; CREATE FUNCTION paymentAllocated (p_C_Payment_ID int, p_C_Currency_ID int) RETURNS DECIMAL(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Payment.allocated'; DROP FUNCTION paymentAvailable; CREATE FUNCTION paymentAvailable (p_C_Payment_ID int) RETURNS Decimal(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Payment.available'; -- Account -- DROP FUNCTION acctBalance; CREATE FUNCTION acctBalance (p_Account_ID int, p_AmtDr Decimal(31,5), p_AmtCr Decimal(31,5)) RETURNS Decimal(31,5) PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Account.balance'; -- General -- --BEGIN -- dbms_java.grant_permission('ADEMPIERE','SYS:java.util.PropertyPermission', '*', 'read,write'); --END; -- Get Character at Position DROP FUNCTION charAt; CREATE FUNCTION charAt ( p_string VARCHAR(2046), p_pos int ) RETURNS CHAR PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.charAt'; -- GetDate DROP FUNCTION getdate; CREATE FUNCTION getdate() RETURNS TIMESTAMP PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getDate'; -- First Of DD/DY/MM/Q DROP FUNCTION firstOf; CREATE FUNCTION firstOf ( p_date TIMESTAMP, p_datePart VARCHAR(26) ) RETURNS TIMESTAMP PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.firstOf'; -- Add Number of Days DROP FUNCTION addDays; CREATE FUNCTION addDays ( p_date TIMESTAMP, p_days int ) RETURNS TIMESTAMP PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.addDays'; -- Difference in Days DROP FUNCTION getDaysBetween; CREATE FUNCTION getDaysBetween ( p_date1 TIMESTAMP, p_date2 TIMESTAMP ) RETURNS int PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getDaysBetween'; -- Truncate Date DROP FUNCTION trunc; CREATE FUNCTION trunc ( p_dateTime TIMESTAMP ) RETURNS TIMESTAMP PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.trunc'; -- convert number to chars DROP FUNCTION getChars; CREATE FUNCTION getChars ( p_number DECIMAL(31,5) ) RETURNS VARCHAR(38) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'org.compiere.sqlj.Adempiere.getChars'; SELECT adempiereVersion(), adempiereProperty('java.vendor'), getdate() FROM sysibm.sysdummy1;