Merge with c7817574afdfe577790aaa5144f192cf953dcda4

This commit is contained in:
Elaine Tan 2012-11-08 18:28:56 +08:00
commit ad5d338dfd
35 changed files with 613 additions and 297 deletions

View File

@ -1,12 +1,12 @@
CREATE OR REPLACE PROCEDURE C_Order_DrillDown CREATE OR REPLACE PROCEDURE C_ORDER_DRILLDOWN
( (
PInstance_ID IN NUMBER PInstance_ID IN NUMBER
) )
/****************************************************************************** /******************************************************************************
* ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA * ** Compiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA
* Open Source Software Provided "AS IS" without warranty or liability * Open Source Software Provided "AS IS" without warranty or liability
* When you use any parts (changed or unchanged), add "Powered by Adempiere" to * When you use any parts (changed or unchanged), add "Powered by Compiere" to
* your product name; See license details http://www.adempiere.org/license.html * your product name; See license details http://www.compiere.org/license.html
****************************************************************************** ******************************************************************************
* List Orders with their Shipments and Invoices * List Orders with their Shipments and Invoices
* Spool to T_Spool * Spool to T_Spool
@ -58,7 +58,7 @@ BEGIN
-- Order Info -- Order Info
FOR o IN Cur_Order LOOP FOR o IN Cur_Order LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
o.Name || ' ' || o.DocumentNo || ': @DocStatus@=' || o.DocStatus o.Name || ' ' || o.DocumentNo || ': @DocStatus@=' || o.DocStatus
|| ', @DocAction@=' || o.DocAction || ', @Processed@=' || o.Processed); || ', @DocAction@=' || o.DocAction || ', @Processed@=' || o.Processed);
@ -71,7 +71,7 @@ BEGIN
ORDER BY Line; ORDER BY Line;
BEGIN BEGIN
FOR ol IN Cur_OrderLine LOOP FOR ol IN Cur_OrderLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyOrdered@=' || ol.QtyOrdered || ', @QtyReserved@=' || ol.QtyReserved ' @QtyOrdered@=' || ol.QtyOrdered || ', @QtyReserved@=' || ol.QtyReserved
|| ', @QtyDelivered@=' || ol.QtyDelivered || ', @QtyInvoiced@=' || ol.QtyInvoiced || ', @QtyDelivered@=' || ol.QtyDelivered || ', @QtyInvoiced@=' || ol.QtyInvoiced
|| ' - Wh=' || ol.M_Warehouse_ID || ' - Wh=' || ol.M_Warehouse_ID
@ -88,7 +88,7 @@ BEGIN
AND s.C_DocType_ID=d.C_DocType_ID; AND s.C_DocType_ID=d.C_DocType_ID;
BEGIN BEGIN
FOR s IN Cur_InOut LOOP FOR s IN Cur_InOut LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
'> ' || s.Name || ' ' || s.DocumentNo || ': @DocStatus@=' || s.DocStatus '> ' || s.Name || ' ' || s.DocumentNo || ': @DocStatus@=' || s.DocStatus
|| ', @Processed@=' || s.Processed || ', Wh=' || s.M_Warehouse_ID); || ', @Processed@=' || s.Processed || ', Wh=' || s.M_Warehouse_ID);
@ -101,7 +101,7 @@ BEGIN
ORDER BY Line; ORDER BY Line;
BEGIN BEGIN
FOR sl IN Cur_InOutLine LOOP FOR sl IN Cur_InOutLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyDelivered@=' || sl.MovementQty || ', Prd=' || sl.M_Product_ID); ' @QtyDelivered@=' || sl.MovementQty || ', Prd=' || sl.M_Product_ID);
END LOOP; END LOOP;
END; -- Shipment Lines END; -- Shipment Lines
@ -121,7 +121,7 @@ BEGIN
BEGIN BEGIN
FOR i IN Cur_Invoice LOOP FOR i IN Cur_Invoice LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
'> ' || i.Name || ' ' || i.DocumentNo || ': @DocStatus@=' || i.DocStatus '> ' || i.Name || ' ' || i.DocumentNo || ': @DocStatus@=' || i.DocStatus
|| ', @Processed@=' || i.Processed); || ', @Processed@=' || i.Processed);
@ -134,7 +134,7 @@ BEGIN
ORDER BY Line; ORDER BY Line;
BEGIN BEGIN
FOR il IN Cur_InvoiceLine LOOP FOR il IN Cur_InvoiceLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyInvoiced@=' || il.QtyInvoiced || ', Prd=' || il.M_Product_ID); ' @QtyInvoiced@=' || il.QtyInvoiced || ', Prd=' || il.M_Product_ID);
END LOOP; END LOOP;
END; -- Invoice Lines END; -- Invoice Lines

View File

@ -1,3 +1,6 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- Oct 22, 2012 3:47:39 PM SGT -- Oct 22, 2012 3:47:39 PM SGT
-- IDEMPIERE-462 Ticket #1001503: Credit Cards Online -- IDEMPIERE-462 Ticket #1001503: Credit Cards Online
INSERT INTO AD_Table (IsSecurityEnabled,AccessLevel,LoadSeq,AD_Table_ID,IsHighVolume,IsView,IsChangeLog,EntityType,ReplicationType,AD_Table_UU,IsCentrallyMaintained,IsDeleteable,TableName,Description,Name,AD_Client_ID,IsActive,AD_Org_ID,Updated,CreatedBy,UpdatedBy,Created) VALUES ('N','1',105,200031,'N','N','N','D','L','32bb4613-d058-44fb-9e5c-01f060281cc9','Y','Y','C_PaymentTransaction','Payment Transaction','Payment Transaction',0,'Y',0,TO_DATE('2012-10-22 15:47:37','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2012-10-22 15:47:37','YYYY-MM-DD HH24:MI:SS')) INSERT INTO AD_Table (IsSecurityEnabled,AccessLevel,LoadSeq,AD_Table_ID,IsHighVolume,IsView,IsChangeLog,EntityType,ReplicationType,AD_Table_UU,IsCentrallyMaintained,IsDeleteable,TableName,Description,Name,AD_Client_ID,IsActive,AD_Org_ID,Updated,CreatedBy,UpdatedBy,Created) VALUES ('N','1',105,200031,'N','N','N','D','L','32bb4613-d058-44fb-9e5c-01f060281cc9','Y','Y','C_PaymentTransaction','Payment Transaction','Payment Transaction',0,'Y',0,TO_DATE('2012-10-22 15:47:37','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2012-10-22 15:47:37','YYYY-MM-DD HH24:MI:SS'))
@ -1287,7 +1290,86 @@ UPDATE AD_Column SET EntityType='D',Updated=TO_DATE('2012-10-22 15:56:20','YYYY-
-- Oct 22, 2012 3:56:35 PM SGT -- Oct 22, 2012 3:56:35 PM SGT
-- IDEMPIERE-462 Ticket #1001503: Credit Cards Online -- IDEMPIERE-462 Ticket #1001503: Credit Cards Online
CREATE TABLE C_PaymentTransaction (A_City NVARCHAR2(60) DEFAULT NULL , A_Country NVARCHAR2(40) DEFAULT NULL , A_EMail NVARCHAR2(60) DEFAULT NULL , A_Ident_DL NVARCHAR2(20) DEFAULT NULL , A_Ident_SSN NVARCHAR2(20) DEFAULT NULL , A_Name NVARCHAR2(60) DEFAULT NULL , A_State NVARCHAR2(40) DEFAULT NULL , A_Street NVARCHAR2(60) DEFAULT NULL , A_Zip NVARCHAR2(20) DEFAULT NULL , AccountNo NVARCHAR2(20) DEFAULT NULL , AD_Client_ID NUMBER(10) NOT NULL, AD_Org_ID NUMBER(10) NOT NULL, AD_OrgTrx_ID NUMBER(10) DEFAULT NULL , C_Activity_ID NUMBER(10) DEFAULT NULL , C_BankAccount_ID NUMBER(10) DEFAULT NULL , C_BP_BankAccount_ID NUMBER(10) DEFAULT NULL , C_BPartner_ID NUMBER(10) NOT NULL, C_Campaign_ID NUMBER(10) DEFAULT NULL , C_CashBook_ID NUMBER(10) DEFAULT NULL , C_Charge_ID NUMBER(10) DEFAULT NULL , C_ConversionType_ID NUMBER(10) DEFAULT NULL , C_Currency_ID NUMBER(10) NOT NULL, C_DocType_ID NUMBER(10) NOT NULL, C_Invoice_ID NUMBER(10) DEFAULT NULL , C_Order_ID NUMBER(10) DEFAULT NULL , C_Payment_ID NUMBER(10) DEFAULT NULL , C_PaymentBatch_ID NUMBER(10) DEFAULT NULL , C_PaymentProcessor_ID NUMBER(10) DEFAULT NULL , C_PaymentTransaction_ID NUMBER(10) NOT NULL, C_PaymentTransaction_UU NVARCHAR2(36) DEFAULT NULL , C_POSTenderType_ID NUMBER(10) DEFAULT NULL , C_Project_ID NUMBER(10) DEFAULT NULL , CheckNo NVARCHAR2(20) DEFAULT NULL , Created DATE NOT NULL, CreatedBy NUMBER(10) NOT NULL, CreditCardExpMM NUMBER(10) DEFAULT 1, CreditCardExpYY NUMBER(10) DEFAULT 03, CreditCardNumber NVARCHAR2(20) DEFAULT NULL , CreditCardType CHAR(1) DEFAULT 'M', CreditCardVV NVARCHAR2(4) DEFAULT NULL , CustomerAddressID NVARCHAR2(60) DEFAULT NULL , CustomerPaymentProfileID NVARCHAR2(60) DEFAULT NULL , CustomerProfileID NVARCHAR2(60) DEFAULT NULL , DateTrx DATE NOT NULL, Description NVARCHAR2(255) DEFAULT NULL , IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL, IsApproved CHAR(1) DEFAULT 'N' CHECK (IsApproved IN ('Y','N')) NOT NULL, IsDelayedCapture CHAR(1) CHECK (IsDelayedCapture IN ('Y','N')) NOT NULL, IsOnline CHAR(1) CHECK (IsOnline IN ('Y','N')) NOT NULL, IsReceipt CHAR(1) CHECK (IsReceipt IN ('Y','N')) NOT NULL, IsSelfService CHAR(1) CHECK (IsSelfService IN ('Y','N')) NOT NULL, IsVoided CHAR(1) DEFAULT 'N' CHECK (IsVoided IN ('Y','N')) NOT NULL, Micr NVARCHAR2(20) DEFAULT NULL , Orig_TrxID NVARCHAR2(20) DEFAULT NULL , PayAmt NUMBER DEFAULT 0 NOT NULL, PONum NVARCHAR2(60) DEFAULT NULL , R_AuthCode NVARCHAR2(20) DEFAULT NULL , R_AvsAddr CHAR(1) DEFAULT NULL , R_AvsZip CHAR(1) DEFAULT NULL , R_CVV2Match CHAR(1) DEFAULT NULL CHECK (R_CVV2Match IN ('Y','N')), R_Info NVARCHAR2(2000) DEFAULT NULL , R_PnRef NVARCHAR2(20) DEFAULT NULL , R_RespMsg NVARCHAR2(60) DEFAULT NULL , R_Result NVARCHAR2(20) DEFAULT NULL , R_VoidMsg NVARCHAR2(255) DEFAULT NULL , Ref_PaymentTransaction_ID NUMBER(10) DEFAULT NULL , RoutingNo NVARCHAR2(20) DEFAULT NULL , TaxAmt NUMBER DEFAULT NULL , TenderType CHAR(1) DEFAULT 'K' NOT NULL, TrxType CHAR(1) DEFAULT 'S' NOT NULL, Updated DATE NOT NULL, UpdatedBy NUMBER(10) NOT NULL, User1_ID NUMBER(10) DEFAULT NULL , User2_ID NUMBER(10) DEFAULT NULL , VoiceAuthCode NVARCHAR2(20) DEFAULT NULL , VoidIt CHAR(1) DEFAULT NULL , CONSTRAINT C_PaymentTransaction_Key PRIMARY KEY (C_PaymentTransaction_ID)) CREATE TABLE c_paymenttransaction
(
a_city NVARCHAR2(60) DEFAULT NULL,
a_country NVARCHAR2(40) DEFAULT NULL,
a_email NVARCHAR2(60) DEFAULT NULL,
a_ident_dl NVARCHAR2(20) DEFAULT NULL,
a_ident_ssn NVARCHAR2(20) DEFAULT NULL,
a_name NVARCHAR2(60) DEFAULT NULL,
a_state NVARCHAR2(40) DEFAULT NULL,
a_street NVARCHAR2(60) DEFAULT NULL,
a_zip NVARCHAR2(20) DEFAULT NULL,
accountno NVARCHAR2(20) DEFAULT NULL,
ad_client_id NUMBER(10) NOT NULL,
ad_org_id NUMBER(10) NOT NULL,
ad_orgtrx_id NUMBER(10) DEFAULT NULL,
c_activity_id NUMBER(10) DEFAULT NULL,
c_bankaccount_id NUMBER(10) DEFAULT NULL,
c_bp_bankaccount_id NUMBER(10) DEFAULT NULL,
c_bpartner_id NUMBER(10) NOT NULL,
c_campaign_id NUMBER(10) DEFAULT NULL,
c_cashbook_id NUMBER(10) DEFAULT NULL,
c_charge_id NUMBER(10) DEFAULT NULL,
c_conversiontype_id NUMBER(10) DEFAULT NULL,
c_currency_id NUMBER(10) NOT NULL,
c_doctype_id NUMBER(10) NOT NULL,
c_invoice_id NUMBER(10) DEFAULT NULL,
c_order_id NUMBER(10) DEFAULT NULL,
c_payment_id NUMBER(10) DEFAULT NULL,
c_paymentbatch_id NUMBER(10) DEFAULT NULL,
c_paymentprocessor_id NUMBER(10) DEFAULT NULL,
c_paymenttransaction_id NUMBER(10) NOT NULL,
c_paymenttransaction_uu NVARCHAR2(36) DEFAULT NULL,
c_postendertype_id NUMBER(10) DEFAULT NULL,
c_project_id NUMBER(10) DEFAULT NULL,
checkno NVARCHAR2(20) DEFAULT NULL,
created DATE NOT NULL,
createdby NUMBER(10) NOT NULL,
creditcardexpmm NUMBER(10) DEFAULT 1,
creditcardexpyy NUMBER(10) DEFAULT 03,
creditcardnumber NVARCHAR2(20) DEFAULT NULL,
creditcardtype CHAR(1) DEFAULT 'M',
creditcardvv NVARCHAR2(4) DEFAULT NULL,
customeraddressid NVARCHAR2(60) DEFAULT NULL,
customerpaymentprofileid NVARCHAR2(60) DEFAULT NULL,
customerprofileid NVARCHAR2(60) DEFAULT NULL,
datetrx DATE NOT NULL,
description NVARCHAR2(255) DEFAULT NULL,
isactive CHAR(1) DEFAULT 'Y' CHECK (isactive IN ('Y', 'N')) NOT NULL,
isapproved CHAR(1) DEFAULT 'N' CHECK (isapproved IN ('Y', 'N')) NOT NULL,
isdelayedcapture CHAR(1) CHECK (isdelayedcapture IN ('Y', 'N')) NOT NULL,
isonline CHAR(1) CHECK (isonline IN ('Y', 'N')) NOT NULL,
isreceipt CHAR(1) CHECK (isreceipt IN ('Y', 'N')) NOT NULL,
isselfservice CHAR(1) CHECK (isselfservice IN ('Y', 'N')) NOT NULL,
isvoided CHAR(1) DEFAULT 'N' CHECK (isvoided IN ('Y', 'N')) NOT NULL,
micr NVARCHAR2(20) DEFAULT NULL,
orig_trxid NVARCHAR2(20) DEFAULT NULL,
payamt NUMBER DEFAULT 0 NOT NULL,
ponum NVARCHAR2(60) DEFAULT NULL,
r_authcode NVARCHAR2(20) DEFAULT NULL,
r_avsaddr CHAR(1) DEFAULT NULL,
r_avszip CHAR(1) DEFAULT NULL,
r_cvv2match CHAR(1) DEFAULT NULL CHECK (r_cvv2match IN ('Y', 'N')),
r_info NVARCHAR2(2000) DEFAULT NULL,
r_pnref NVARCHAR2(20) DEFAULT NULL,
r_respmsg NVARCHAR2(60) DEFAULT NULL,
r_result NVARCHAR2(20) DEFAULT NULL,
r_voidmsg NVARCHAR2(255) DEFAULT NULL,
ref_paymenttransaction_id NUMBER(10) DEFAULT NULL,
routingno NVARCHAR2(20) DEFAULT NULL,
taxamt NUMBER DEFAULT NULL,
tendertype CHAR(1) DEFAULT 'K' NOT NULL,
trxtype CHAR(1) DEFAULT 'S' NOT NULL,
updated DATE NOT NULL,
updatedby NUMBER(10) NOT NULL,
user1_id NUMBER(10) DEFAULT NULL,
user2_id NUMBER(10) DEFAULT NULL,
voiceauthcode NVARCHAR2(20) DEFAULT NULL,
voidit CHAR(1) DEFAULT NULL,
CONSTRAINT c_paymenttransaction_key PRIMARY KEY (c_paymenttransaction_id)
)
; ;
-- Oct 22, 2012 3:57:37 PM SGT -- Oct 22, 2012 3:57:37 PM SGT

View File

@ -0,0 +1,177 @@
CREATE OR REPLACE PROCEDURE C_ORDER_DRILLDOWN
(
PInstance_ID IN NUMBER
)
/******************************************************************************
* ** Compiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA
* Open Source Software Provided "AS IS" without warranty or liability
* When you use any parts (changed or unchanged), add "Powered by Compiere" to
* your product name; See license details http://www.compiere.org/license.html
******************************************************************************
* List Orders with their Shipments and Invoices
* Spool to T_Spool
*/
AS
ResultStr VARCHAR2(2000);
Message VARCHAR2(2000);
Record_ID NUMBER;
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
C_Order_ID NUMBER;
--
CURSOR Cur_Order IS
SELECT o.C_Order_ID, d.Name, o.DocumentNo, o.DocStatus, o.DocAction, o.Processed
FROM C_Order o, C_DocType d
WHERE o.C_Order_ID=C_Order_ID
AND o.C_DocType_ID=d.C_DocType_ID
ORDER BY o.DocumentNo DESC;
BEGIN
-- No locking or Updating
-- Get Parameters
ResultStr := 'ReadingParameters';
FOR p IN Cur_Parameter (PInstance_ID) LOOP
Record_ID := p.Record_ID;
IF (p.ParameterName = 'C_Order_ID') THEN
C_Order_ID := p.P_Number;
DBMS_OUTPUT.PUT_LINE(' C_Order_ID=' || C_Order_ID);
ELSE
DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName);
END IF;
END LOOP; -- Get Parameter
DBMS_OUTPUT.PUT_LINE(' Record_ID=' || Record_ID);
IF (C_Order_ID IS NULL) THEN
C_Order_ID := Record_ID;
END IF;
-- Should be nothing there
DELETE T_Spool
WHERE AD_PInstance_ID=PInstance_ID;
-- Order Info
FOR o IN Cur_Order LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
o.Name || ' ' || o.DocumentNo || ': @DocStatus@=' || o.DocStatus
|| ', @DocAction@=' || o.DocAction || ', @Processed@=' || o.Processed);
-- Order Lines
DECLARE
CURSOR Cur_OrderLine IS
SELECT *
FROM C_OrderLine
WHERE C_Order_ID=o.C_Order_ID
ORDER BY Line;
BEGIN
FOR ol IN Cur_OrderLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyOrdered@=' || ol.QtyOrdered || ', @QtyReserved@=' || ol.QtyReserved
|| ', @QtyDelivered@=' || ol.QtyDelivered || ', @QtyInvoiced@=' || ol.QtyInvoiced
|| ' - Wh=' || ol.M_Warehouse_ID
|| ', Prd=' || ol.M_Product_ID);
END LOOP;
END;
-- Shipment
DECLARE
CURSOR Cur_InOut IS
SELECT s.M_InOut_ID, d.Name, s.DocumentNo, s.DocStatus, s.Processed, s.M_Warehouse_ID
FROM M_InOut s, C_DocType d
WHERE s.C_Order_ID = o.C_Order_ID
AND s.C_DocType_ID=d.C_DocType_ID;
BEGIN
FOR s IN Cur_InOut LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
'> ' || s.Name || ' ' || s.DocumentNo || ': @DocStatus@=' || s.DocStatus
|| ', @Processed@=' || s.Processed || ', Wh=' || s.M_Warehouse_ID);
-- Shipment Lines
DECLARE
CURSOR Cur_InOutLine IS
SELECT *
FROM M_InOutLine
WHERE M_InOut_ID=s.M_InOut_ID
ORDER BY Line;
BEGIN
FOR sl IN Cur_InOutLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyDelivered@=' || sl.MovementQty || ', Prd=' || sl.M_Product_ID);
END LOOP;
END; -- Shipment Lines
END LOOP; -- Shipments
END; -- Shipment
-- Invoice
DECLARE
CURSOR Cur_Invoice IS
SELECT i.C_Invoice_ID, d.Name, i.DocumentNo, i.DocStatus, i.Processed
FROM C_Invoice i, C_DocType d
WHERE i.C_DocType_ID=d.C_DocType_ID
AND EXISTS (SELECT * FROM C_InvoiceLine l, C_OrderLine ol
WHERE i.C_Invoice_ID = l.C_Invoice_ID
AND l.C_OrderLine_ID = ol.C_OrderLine_ID
AND ol.C_Order_ID=o.C_Order_ID);
BEGIN
FOR i IN Cur_Invoice LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
'> ' || i.Name || ' ' || i.DocumentNo || ': @DocStatus@=' || i.DocStatus
|| ', @Processed@=' || i.Processed);
-- Invoice Lines
DECLARE
CURSOR Cur_InvoiceLine IS
SELECT *
FROM C_InvoiceLine
WHERE C_Invoice_ID=i.C_Invoice_ID
ORDER BY Line;
BEGIN
FOR il IN Cur_InvoiceLine LOOP
INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, nextidfunc(1173, 'N'),
' @QtyInvoiced@=' || il.QtyInvoiced || ', Prd=' || il.M_Product_ID);
END LOOP;
END; -- Invoice Lines
END LOOP; -- Invoices
END; -- Invoice
END LOOP; -- Order
<<FINISH_PROCESS>>
-- Update AD_PInstance
DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || Message);
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 C_Order_DrillDown;
/
SELECT register_migration_script('201211070846_IDEMPIERE-422.sql') FROM dual
;

View File

@ -0,0 +1,5 @@
-- just for oracle
SELECT register_migration_script('201211070846_IDEMPIERE-422.sql') FROM dual
;

View File

@ -289,6 +289,6 @@ Import-Package: com.sun.mail.auth;version="1.4.5",
Eclipse-BuddyPolicy: registered Eclipse-BuddyPolicy: registered
Eclipse-ExtensibleAPI: true Eclipse-ExtensibleAPI: true
Bundle-Activator: org.adempiere.base.BaseActivator Bundle-Activator: org.adempiere.base.BaseActivator
Service-Component: OSGI-INF/eventmanager.xml, OSGI-INF/dslocator.xml, OSGI-INF/extensionlocator.xml, OSGI-INF/serverbean.xml, OSGI-INF/statusbean.xml Service-Component: OSGI-INF/eventmanager.xml, OSGI-INF/dslocator.xml, OSGI-INF/extensionlocator.xml, OSGI-INF/serverbean.xml, OSGI-INF/statusbean.xml, OSGI-INF/defaultmodelfactory.xml, OSGI-INF/defaultdocfactory.xml
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.equinox.app;bundle-version="1.3.1" Require-Bundle: org.eclipse.equinox.app;bundle-version="1.3.1"

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.doc.factory">
<implementation class="org.adempiere.base.DefaultDocumentFactory"/>
<service>
<provide interface="org.adempiere.base.IDocFactory"/>
</service>
<property name="gaap" type="String" value="*"/>
</scr:component>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.model.factory">
<implementation class="org.adempiere.base.DefaultModelFactory"/>
<service>
<provide interface="org.adempiere.base.IModelFactory"/>
</service>
</scr:component>

View File

@ -20,7 +20,9 @@ bin.includes = META-INF/,\
OSGI-INF/dslocator.xml,\ OSGI-INF/dslocator.xml,\
OSGI-INF/extensionlocator.xml,\ OSGI-INF/extensionlocator.xml,\
OSGI-INF/serverbean.xml,\ OSGI-INF/serverbean.xml,\
OSGI-INF/statusbean.xml OSGI-INF/statusbean.xml,\
OSGI-INF/defaultmodelfactory.xml,\
OSGI-INF/defaultdocfactory.xml
output.base.jar = build/ output.base.jar = build/
src.includes = schema/ src.includes = schema/
source.base.jar = src/ source.base.jar = src/

View File

@ -15,25 +15,6 @@
<extension-point id="org.adempiere.base.IGridTabImporter" name="Grid data import extension" schema="schema/org.adempiere.base.IGridTabImporter.exsd"/> <extension-point id="org.adempiere.base.IGridTabImporter" name="Grid data import extension" schema="schema/org.adempiere.base.IGridTabImporter.exsd"/>
<extension-point id="org.compiere.model.PaymentProcessor" name="Payment Processor" schema="schema/org.compiere.model.PaymentProcessor.exsd"/> <extension-point id="org.compiere.model.PaymentProcessor" name="Payment Processor" schema="schema/org.compiere.model.PaymentProcessor.exsd"/>
<extension-point id="org.compiere.model.Callout" name="Callout" schema="schema/org.compiere.model.Callout.exsd"/> <extension-point id="org.compiere.model.Callout" name="Callout" schema="schema/org.compiere.model.Callout.exsd"/>
<extension
id="org.adempiere.base.DefaultModelFactory"
name="Default model factory"
point="org.adempiere.base.IModelFactory">
<factory
class="org.adempiere.base.DefaultModelFactory"
priority="0">
</factory>
</extension>
<extension
id="org.adempiere.base.DefaultDocFactory"
name="Default Document Factory"
point="org.adempiere.base.IDocFactory">
<factory
class="org.adempiere.base.DefaultDocumentFactory"
gaap="*"
priority="0">
</factory>
</extension>
<extension <extension
id="org.adempiere.impexp.GridTabXlsExporter" id="org.adempiere.impexp.GridTabXlsExporter"
name="Grid data excel exporter" name="Grid data excel exporter"

View File

@ -22,8 +22,6 @@ import java.util.List;
import org.adempiere.base.Service; import org.adempiere.base.Service;
import org.adempiere.base.ServiceQuery; import org.adempiere.base.ServiceQuery;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
/** /**
* General Database Constants and Utilities * General Database Constants and Utilities
@ -67,14 +65,11 @@ public class Database
public static String[] getDatabaseNames() public static String[] getDatabaseNames()
{ {
List<String> names = new ArrayList<String>(); List<String> names = new ArrayList<String>();
IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(AdempiereDatabase.class.getName()); List<AdempiereDatabase> services = Service.locator().list(AdempiereDatabase.class).getServices();
for(IConfigurationElement element : elements) for (AdempiereDatabase db : services) {
{ names.add(db.getName());
String type = element.getAttribute("id");
names.add(type);
} }
String[] nameArray = names.toArray(new String[0]); return names.toArray(new String[0]);
return nameArray;
} }
/** /**

View File

@ -1773,6 +1773,32 @@ public class MInvoice extends X_C_Invoice implements DocAction
{ {
MInvoiceLine line = lines[i]; MInvoiceLine line = lines[i];
// Matching - Inv-Shipment
if (!isSOTrx()
&& line.getM_InOutLine_ID() != 0
&& line.getM_Product_ID() != 0
&& !isReversal())
{
MInOutLine receiptLine = new MInOutLine (getCtx(),line.getM_InOutLine_ID(), get_TrxName());
BigDecimal matchQty = line.getQtyInvoiced();
if (receiptLine.getMovementQty().compareTo(matchQty) < 0)
matchQty = receiptLine.getMovementQty();
MMatchInv inv = new MMatchInv(line, getDateInvoiced(), matchQty);
boolean isNewMatchInv = false;
if (inv.get_ID() == 0)
isNewMatchInv = true;
if (!inv.save(get_TrxName()))
{
m_processMsg = CLogger.retrieveErrorString("Could not create Invoice Matching");
return DocAction.STATUS_Invalid;
}
matchInv++;
if (isNewMatchInv)
addDocsPostProcess(inv);
}
// Update Order Line // Update Order Line
MOrderLine ol = null; MOrderLine ol = null;
if (line.getC_OrderLine_ID() != 0) if (line.getC_OrderLine_ID() != 0)
@ -1826,33 +1852,7 @@ public class MInvoice extends X_C_Invoice implements DocAction
return DocAction.STATUS_Invalid; return DocAction.STATUS_Invalid;
} }
} }
// //
// Matching - Inv-Shipment
if (!isSOTrx()
&& line.getM_InOutLine_ID() != 0
&& line.getM_Product_ID() != 0
&& !isReversal())
{
MInOutLine receiptLine = new MInOutLine (getCtx(),line.getM_InOutLine_ID(), get_TrxName());
BigDecimal matchQty = line.getQtyInvoiced();
if (receiptLine.getMovementQty().compareTo(matchQty) < 0)
matchQty = receiptLine.getMovementQty();
MMatchInv inv = new MMatchInv(line, getDateInvoiced(), matchQty);
boolean isNewMatchInv = false;
if (inv.get_ID() == 0)
isNewMatchInv = true;
if (!inv.save(get_TrxName()))
{
m_processMsg = CLogger.retrieveErrorString("Could not create Invoice Matching");
return DocAction.STATUS_Invalid;
}
matchInv++;
if (isNewMatchInv)
addDocsPostProcess(inv);
}
} // for all lines } // for all lines
if (matchInv > 0) if (matchInv > 0)
info.append(" @M_MatchInv_ID@#").append(matchInv).append(" "); info.append(" @M_MatchInv_ID@#").append(matchInv).append(" ");

View File

@ -536,6 +536,7 @@ public class Trx implements VetoableChangeListener
* *
* @param trxName transaction name (if null, a new transaction will be created) * @param trxName transaction name (if null, a new transaction will be created)
* @param r runnable object * @param r runnable object
* @throws RuntimeException or {@link AdempiereException}
*/ */
public static void run(String trxName, TrxRunnable r) public static void run(String trxName, TrxRunnable r)
{ {

View File

@ -20,6 +20,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.pde.PluginNature</nature> <nature>org.eclipse.pde.PluginNature</nature>

View File

@ -9,3 +9,4 @@ Require-Bundle: org.adempiere.server;bundle-version="1.0.0",
org.adempiere.base;bundle-version="1.0.0" org.adempiere.base;bundle-version="1.0.0"
Import-Package: javax.jms;version="1.1.0", Import-Package: javax.jms;version="1.1.0",
org.apache.activemq org.apache.activemq
Service-Component: OSGI-INF/serverfactory.xml

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.replication.server.factory">
<implementation class="org.adempiere.server.rpl.imp.ReplicationServerFactory"/>
<service>
<provide interface="org.adempiere.server.IServerFactory"/>
</service>
</scr:component>

View File

@ -1,5 +1,6 @@
source.. = src/
output.. = bin/ output.. = bin/
bin.includes = META-INF/,\ bin.includes = META-INF/,\
.,\ .,\
plugin.xml plugin.xml,\
OSGI-INF/serverfactory.xml
source.. = src/

View File

@ -1,11 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?> <?eclipse version="3.4"?>
<plugin> <plugin>
<extension
point="org.adempiere.server.IServerFactory">
<factory
class="org.adempiere.server.rpl.imp.ReplicationServerFactory">
</factory>
</extension>
</plugin> </plugin>

View File

@ -13,59 +13,21 @@
*****************************************************************************/ *****************************************************************************/
package org.adempiere.ui.zk.example.action; package org.adempiere.ui.zk.example.action;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.adempiere.base.IGridTabExporter;
import org.adempiere.base.Service;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.webui.action.IAction; import org.adempiere.webui.action.IAction;
import org.adempiere.webui.adwindow.ADWindow; import org.adempiere.webui.adwindow.ADWindow;
import org.adempiere.webui.adwindow.AbstractADWindowContent; import org.adempiere.webui.adwindow.ADWindowContent;
import org.adempiere.webui.adwindow.IADTabbox;
import org.adempiere.webui.adwindow.IADTabpanel;
import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.Window;
import org.adempiere.webui.window.FDialog; import org.adempiere.webui.window.FDialog;
import org.compiere.model.GridTab;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.zkoss.util.media.AMedia;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Div;
import org.zkoss.zul.Filedownload;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Vbox;
/** /**
* @author hengsin * @author hengsin
* *
*/ */
public class ExportAction implements IAction, EventListener<Event> { public class ExportAction implements IAction {
private AbstractADWindowContent panel;
private Map<String, IGridTabExporter> exporterMap = null;
private Map<String, String> extensionMap = null;
private Window winExportFile = null;
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
private Listbox cboType = new Listbox();
private Checkbox chkCurrentRow = new Checkbox();
/** /**
* * default constructor
*/ */
public ExportAction() { public ExportAction() {
} }
@ -76,143 +38,20 @@ public class ExportAction implements IAction, EventListener<Event> {
@Override @Override
public void execute(Object target) { public void execute(Object target) {
ADWindow adwindow = (ADWindow) target; ADWindow adwindow = (ADWindow) target;
panel = adwindow.getADWindowContent(); ADWindowContent panel = adwindow.getADWindowContent();
if (!MRole.getDefault().isCanExport()) { if (!MRole.getDefault().isCanExport()) {
FDialog.error(panel.getWindowNo(), "AccessTableNoView"); FDialog.error(panel.getWindowNo(), "AccessTableNoView");
return; return;
} }
doExport(); doExport(panel);
} }
private void doExport() { private void doExport(ADWindowContent panel) {
exporterMap = new HashMap<String, IGridTabExporter>(); ExportWindow window = new ExportWindow();
extensionMap = new HashMap<String, String>(); window.init(panel);
List<IGridTabExporter> exporterList = Service.locator().list(IGridTabExporter.class).getServices();
for(IGridTabExporter exporter : exporterList) AEnv.showWindow(window);
{ }
String extension = exporter.getFileExtension();
if (!extensionMap.containsKey(extension))
{
extensionMap.put(extension, exporter.getFileExtensionLabel());
exporterMap.put(extension, exporter);
}
}
if(winExportFile == null)
{
winExportFile = new Window();
winExportFile.setTitle(Msg.getMsg(Env.getCtx(), "Export") + ": " + panel.getActiveGridTab().getName());
winExportFile.setWidth("450px");
winExportFile.setClosable(true);
winExportFile.setBorder("normal");
winExportFile.setStyle("position:absolute");
cboType.setMold("select");
cboType.getItems().clear();
for(Map.Entry<String, String> entry : extensionMap.entrySet())
{
cboType.appendItem(entry.getKey() + " - " + entry.getValue(), entry.getKey());
}
cboType.setSelectedIndex(0);
Vbox vb = new Vbox();
vb.setWidth("100%");
winExportFile.appendChild(vb);
Hbox hb = new Hbox();
Div div = new Div();
div.setAlign("right");
div.appendChild(new Label("Files of Type: "));
hb.appendChild(div);
hb.appendChild(cboType);
cboType.setWidth("100%");
vb.appendChild(hb);
hb = new Hbox();
chkCurrentRow.setLabel(Msg.getMsg(Env.getCtx(), "ExportCurrentRowOnly"));
chkCurrentRow.setSelected(true);
hb.appendChild(chkCurrentRow);
vb.appendChild(hb);
vb.appendChild(confirmPanel);
confirmPanel.addActionListener(this);
}
winExportFile.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
AEnv.showWindow(winExportFile);
}
@Override
public void onEvent(Event event) throws Exception {
if(event.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
winExportFile.onClose();
else if(event.getTarget().getId().equals(ConfirmPanel.A_OK))
exportFile();
}
private void exportFile() {
try {
ListItem li = cboType.getSelectedItem();
if(li == null || li.getValue() == null)
{
FDialog.error(0, winExportFile, "FileInvalidExtension");
return;
}
String ext = li.getValue().toString();
IGridTabExporter exporter = exporterMap.get(ext);
if (exporter == null)
{
FDialog.error(0, winExportFile, "FileInvalidExtension");
return;
}
boolean currentRowOnly = chkCurrentRow.isSelected();
File file = File.createTempFile("Export", "."+ext);
IADTabbox adTab = panel.getADTab();
int selected = adTab.getSelectedIndex();
int tabLevel = panel.getActiveGridTab().getTabLevel();
Set<String> tables = new HashSet<String>();
List<GridTab> childs = new ArrayList<GridTab>();
List<GridTab> includedList = panel.getActiveGridTab().getIncludedTabs();
for(GridTab included : includedList)
{
String tableName = included.getTableName();
if (tables.contains(tableName))
continue;
tables.add(tableName);
childs.add(included);
}
for(int i = selected+1; i < adTab.getTabCount(); i++)
{
IADTabpanel adTabPanel = adTab.getADTabpanel(i);
if (adTabPanel.getGridTab().isSortTab())
continue;
if (adTabPanel.getGridTab().getTabLevel() <= tabLevel)
break;
String tableName = adTabPanel.getGridTab().getTableName();
if (tables.contains(tableName))
continue;
tables.add(tableName);
childs.add(adTabPanel.getGridTab());
}
exporter.export(panel.getActiveGridTab(), childs, currentRowOnly, file);
winExportFile.onClose();
winExportFile = null;
AMedia media = null;
media = new AMedia(panel.getActiveGridTab().getName() + "." + ext, null, exporter.getContentType(), file, true);
Filedownload.save(media, panel.getActiveGridTab().getName() + "." + ext);
} catch (Exception e) {
throw new AdempiereException(e);
} finally {
if (winExportFile != null)
winExportFile.onClose();
}
}
} }

View File

@ -0,0 +1,188 @@
/**
*
*/
package org.adempiere.ui.zk.example.action;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.adempiere.base.IGridTabExporter;
import org.adempiere.base.Service;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.webui.adwindow.ADWindowContent;
import org.adempiere.webui.adwindow.IADTabbox;
import org.adempiere.webui.adwindow.IADTabpanel;
import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.Window;
import org.adempiere.webui.window.FDialog;
import org.compiere.model.GridTab;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.zkoss.util.media.AMedia;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Div;
import org.zkoss.zul.Filedownload;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Vbox;
/**
* @author hengsin
*
*/
public class ExportWindow extends Window implements EventListener<Event> {
/**
* generated serial id
*/
private static final long serialVersionUID = -4465587396361021680L;
private Map<String, IGridTabExporter> exporterMap = null;
private Map<String, String> extensionMap = null;
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
private Listbox cboType = new Listbox();
private Checkbox chkCurrentRow = new Checkbox();
private ADWindowContent panel;
/**
*
*/
public ExportWindow() {
}
public void init(ADWindowContent panel) {
this.panel = panel;
exporterMap = new HashMap<String, IGridTabExporter>();
extensionMap = new HashMap<String, String>();
List<IGridTabExporter> exporterList = Service.locator().list(IGridTabExporter.class).getServices();
for(IGridTabExporter exporter : exporterList)
{
String extension = exporter.getFileExtension();
if (!extensionMap.containsKey(extension))
{
extensionMap.put(extension, exporter.getFileExtensionLabel());
exporterMap.put(extension, exporter);
}
}
setTitle(Msg.getMsg(Env.getCtx(), "Export") + ": " + panel.getActiveGridTab().getName());
setWidth("450px");
setClosable(true);
setBorder("normal");
setStyle("position:absolute");
cboType.setMold("select");
cboType.getItems().clear();
for(Map.Entry<String, String> entry : extensionMap.entrySet())
{
cboType.appendItem(entry.getKey() + " - " + entry.getValue(), entry.getKey());
}
cboType.setSelectedIndex(0);
Vbox vb = new Vbox();
vb.setWidth("100%");
appendChild(vb);
Hbox hb = new Hbox();
Div div = new Div();
div.setStyle("float: right");
div.appendChild(new Label("Files of Type: "));
hb.appendChild(div);
hb.appendChild(cboType);
cboType.setWidth("100%");
vb.appendChild(hb);
hb = new Hbox();
chkCurrentRow.setLabel(Msg.getMsg(Env.getCtx(), "ExportCurrentRowOnly"));
chkCurrentRow.setSelected(true);
hb.appendChild(chkCurrentRow);
vb.appendChild(hb);
vb.appendChild(confirmPanel);
confirmPanel.addActionListener(this);
setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
}
@Override
public void onEvent(Event event) throws Exception {
if(event.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
onClose();
else if(event.getTarget().getId().equals(ConfirmPanel.A_OK))
exportFile();
}
private void exportFile() {
try {
ListItem li = cboType.getSelectedItem();
if(li == null || li.getValue() == null)
{
FDialog.error(0, this, "FileInvalidExtension");
return;
}
String ext = li.getValue().toString();
IGridTabExporter exporter = exporterMap.get(ext);
if (exporter == null)
{
FDialog.error(0, this, "FileInvalidExtension");
return;
}
boolean currentRowOnly = chkCurrentRow.isSelected();
File file = File.createTempFile("Export", "."+ext);
IADTabbox adTab = panel.getADTab();
int selected = adTab.getSelectedIndex();
int tabLevel = panel.getActiveGridTab().getTabLevel();
Set<String> tables = new HashSet<String>();
List<GridTab> childs = new ArrayList<GridTab>();
List<GridTab> includedList = panel.getActiveGridTab().getIncludedTabs();
for(GridTab included : includedList)
{
String tableName = included.getTableName();
if (tables.contains(tableName))
continue;
tables.add(tableName);
childs.add(included);
}
for(int i = selected+1; i < adTab.getTabCount(); i++)
{
IADTabpanel adTabPanel = adTab.getADTabpanel(i);
if (adTabPanel.getGridTab().isSortTab())
continue;
if (adTabPanel.getGridTab().getTabLevel() <= tabLevel)
break;
String tableName = adTabPanel.getGridTab().getTableName();
if (tables.contains(tableName))
continue;
tables.add(tableName);
childs.add(adTabPanel.getGridTab());
}
exporter.export(panel.getActiveGridTab(), childs, currentRowOnly, file);
onClose();
AMedia media = null;
media = new AMedia(panel.getActiveGridTab().getName() + "." + ext, null, exporter.getContentType(), file, true);
Filedownload.save(media, panel.getActiveGridTab().getName() + "." + ext);
} catch (Exception e) {
throw new AdempiereException(e);
} finally {
onClose();
}
}
}

View File

@ -14,9 +14,14 @@
package org.adempiere.webui.action; package org.adempiere.webui.action;
/** /**
* Custom UI action provided through OSGi service. Implementation must be thread safe.
* @author hengsin * @author hengsin
* *
*/ */
public interface IAction { public interface IAction {
/**
*
* @param target
*/
public void execute(Object target); public void execute(Object target);
} }

View File

@ -45,7 +45,6 @@ import org.adempiere.webui.apps.form.WCreateFromFactory;
import org.adempiere.webui.apps.form.WCreateFromWindow; import org.adempiere.webui.apps.form.WCreateFromWindow;
import org.adempiere.webui.apps.form.WPayment; import org.adempiere.webui.apps.form.WPayment;
import org.adempiere.webui.component.Listbox; import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ToolBarButton;
import org.adempiere.webui.component.Window; import org.adempiere.webui.component.Window;
import org.adempiere.webui.editor.IProcessButton; import org.adempiere.webui.editor.IProcessButton;
import org.adempiere.webui.editor.WButtonEditor; import org.adempiere.webui.editor.WButtonEditor;
@ -107,6 +106,7 @@ import org.zkoss.zul.Hbox;
import org.zkoss.zul.Listitem; import org.zkoss.zul.Listitem;
import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menuitem;
import org.zkoss.zul.Menupopup; import org.zkoss.zul.Menupopup;
import org.zkoss.zul.Window.Mode;
/** /**
* *
@ -948,7 +948,9 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
{ {
ProcessModalDialog dialog = (ProcessModalDialog) event.getTarget(); ProcessModalDialog dialog = (ProcessModalDialog) event.getTarget();
onModalClose(dialog.getProcessInfo()); onModalClose(dialog.getProcessInfo());
String s = breadCrumb.getStatusLine();
onRefresh(true, false); onRefresh(true, false);
breadCrumb.setStatusLine(s);
} }
else if (ADTabpanel.ON_DYNAMIC_DISPLAY_EVENT.equals(event.getName())) else if (ADTabpanel.ON_DYNAMIC_DISPLAY_EVENT.equals(event.getName()))
{ {
@ -1617,7 +1619,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
@Override @Override
public void onCallback(Boolean result) { public void onCallback(Boolean result) {
onRefresh(false, false); onRefresh(true, false);
} }
}); });
@ -2273,7 +2275,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
@Override @Override
public void onCallback(Boolean result) { public void onCallback(Boolean result) {
onRefresh(false, false); onRefresh(true, false);
} }
}); });
@ -2331,7 +2333,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
@Override @Override
public void onEvent(Event event) throws Exception { public void onEvent(Event event) throws Exception {
if (!window.isCancel()) { if (!window.isCancel()) {
adtabPanel.getGridTab().dataRefresh(); onRefresh(true, false);
} }
} }
}); });
@ -2403,7 +2405,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
if (error != null) if (error != null)
breadCrumb.setStatusLine(error, true); breadCrumb.setStatusLine(error, true);
onRefresh(false, false); onRefresh(true, false);
} }
} }
}); });
@ -2468,10 +2470,18 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
pi.setAD_Client_ID (Env.getAD_Client_ID(ctx)); pi.setAD_Client_ID (Env.getAD_Client_ID(ctx));
ADForm form = ADForm.openForm(adFormID); ADForm form = ADForm.openForm(adFormID);
form.setProcessInfo(pi); form.setProcessInfo(pi);
Mode mode = form.getWindowMode();
form.setAttribute(Window.MODE_KEY, form.getWindowMode()); form.setAttribute(Window.MODE_KEY, form.getWindowMode());
form.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT); form.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT);
if (mode == Mode.HIGHLIGHTED || mode == Mode.MODAL) {
form.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
onRefresh(true, false);
}
});
}
SessionManager.getAppDesktop().showWindow(form); SessionManager.getAppDesktop().showWindow(form);
onRefresh(false, false);
} }
else else
{ {
@ -2487,7 +2497,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
} }
else else
{ {
onRefresh(false, false); onRefresh(true, false);
} }
} }
} }

View File

@ -52,9 +52,8 @@ import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Center;
import org.zkoss.zul.Space; import org.zkoss.zul.Space;
import org.zkoss.zul.Vlayout;
public class WCreateFromShipmentUI extends CreateFromShipment implements EventListener<Event>, ValueChangeListener public class WCreateFromShipmentUI extends CreateFromShipment implements EventListener<Event>, ValueChangeListener
{ {
@ -152,29 +151,26 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
sameWarehouseCb.setTooltiptext(Msg.getMsg(Env.getCtx(), "FromSameWarehouseOnly", false)); sameWarehouseCb.setTooltiptext(Msg.getMsg(Env.getCtx(), "FromSameWarehouseOnly", false));
upcLabel.setText(Msg.getElement(Env.getCtx(), "UPC", false)); upcLabel.setText(Msg.getElement(Env.getCtx(), "UPC", false));
Borderlayout parameterLayout = new Borderlayout(); Vlayout vlayout = new Vlayout();
parameterLayout.setHeight("110px"); vlayout.setVflex("1");
parameterLayout.setWidth("100%"); vlayout.setWidth("100%");
Panel parameterPanel = window.getParameterPanel(); Panel parameterPanel = window.getParameterPanel();
parameterPanel.appendChild(parameterLayout); parameterPanel.appendChild(vlayout);
Grid parameterStdLayout = GridFactory.newGridLayout(); Grid parameterStdLayout = GridFactory.newGridLayout();
Panel parameterStdPanel = new Panel(); vlayout.appendChild(parameterStdLayout);
parameterStdPanel.appendChild(parameterStdLayout);
Center center = new Center();
parameterLayout.appendChild(center);
center.appendChild(parameterStdPanel);
parameterStdPanel.appendChild(parameterStdLayout);
Rows rows = (Rows) parameterStdLayout.newRows(); Rows rows = (Rows) parameterStdLayout.newRows();
Row row = rows.newRow(); Row row = rows.newRow();
row.appendChild(bPartnerLabel.rightAlign()); row.appendChild(bPartnerLabel.rightAlign());
if (bPartnerField != null) if (bPartnerField != null) {
row.appendChild(bPartnerField.getComponent()); row.appendChild(bPartnerField.getComponent());
bPartnerField.fillHorizontal();
}
if (! isRMAWindow) { if (! isRMAWindow) {
row.appendChild(orderLabel.rightAlign()); row.appendChild(orderLabel.rightAlign());
row.appendChild(orderField); row.appendChild(orderField);
orderField.setHflex("1");
} }
row = rows.newRow(); row = rows.newRow();
@ -182,7 +178,8 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
row.appendChild(locatorField.getComponent()); row.appendChild(locatorField.getComponent());
if (! isRMAWindow) { if (! isRMAWindow) {
row.appendChild(invoiceLabel.rightAlign()); row.appendChild(invoiceLabel.rightAlign());
row.appendChild(invoiceField); row.appendChild(invoiceField);
invoiceField.setHflex("1");
} }
row = rows.newRow(); row = rows.newRow();
@ -196,6 +193,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
// Add RMA document selection to panel // Add RMA document selection to panel
row.appendChild(rmaLabel.rightAlign()); row.appendChild(rmaLabel.rightAlign());
row.appendChild(rmaField); row.appendChild(rmaField);
rmaField.setHflex("1");
} }
} }

View File

@ -31,7 +31,6 @@ import org.compiere.util.Trx;
import org.compiere.util.TrxRunnable; import org.compiere.util.TrxRunnable;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Borderlayout; import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Center; import org.zkoss.zul.Center;
import org.zkoss.zul.North; import org.zkoss.zul.North;
@ -125,12 +124,10 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
{ {
public void run(String trxName) public void run(String trxName)
{ {
if (save(trxName)) save(trxName);
{
dispose();
}
} }
}); });
dispose();
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -415,7 +415,7 @@ public class WMatch extends Match
else if (e.getTarget() == bProcess) else if (e.getTarget() == bProcess)
{ {
//cmd_process(); //cmd_process();
cmd_process(xMatchedTable, xMatchedToTable, matchMode.getSelectedIndex(), matchFrom.getSelectedIndex(), matchTo.getSelectedItem(), m_xMatched); cmd_process(xMatchedTable, xMatchedToTable, matchMode.getSelectedIndex(), matchFrom.getSelectedIndex(), matchTo.getSelectedItem().getLabel(), m_xMatched);
xMatchedTable = (WListbox) cmd_search(xMatchedTable, matchFrom.getSelectedIndex(), (String)matchTo.getSelectedItem().getLabel(), product, vendor, from, to, matchMode.getSelectedIndex() == MODE_MATCHED); xMatchedTable = (WListbox) cmd_search(xMatchedTable, matchFrom.getSelectedIndex(), (String)matchTo.getSelectedItem().getLabel(), product, vendor, from, to, matchMode.getSelectedIndex() == MODE_MATCHED);
xMatched.setValue(Env.ZERO); xMatched.setValue(Env.ZERO);
// Status Info // Status Info

View File

@ -659,10 +659,9 @@ public abstract class CreateFromShipment extends CreateFrom
} }
// Set locator // Set locator
iol.setM_Locator_ID(M_Locator_ID); iol.setM_Locator_ID(M_Locator_ID);
if (!iol.save()) iol.saveEx();
log.log(Level.SEVERE, "Line NOT created #" + i);
// Create Invoice Line Link // Create Invoice Line Link
else if (il != null) if (il != null)
{ {
il.setM_InOutLine_ID(iol.getM_InOutLine_ID()); il.setM_InOutLine_ID(iol.getM_InOutLine_ID());
il.saveEx(); il.saveEx();

View File

@ -20,6 +20,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.pde.PluginNature</nature> <nature>org.eclipse.pde.PluginNature</nature>

View File

@ -13,4 +13,5 @@ Bundle-ClassPath: .,
Import-Package: org.osgi.framework Import-Package: org.osgi.framework
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-Activator: org.adempiere.db.oracle.OracleBundleActivator Bundle-Activator: org.adempiere.db.oracle.OracleBundleActivator
Service-Component: OSGI-INF/oracleprovider.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.oracle.provider">
<implementation class="org.compiere.db.DB_Oracle"/>
<service>
<provide interface="org.compiere.db.AdempiereDatabase"/>
</service>
<property name="id" type="String" value="Oracle"/>
</scr:component>

View File

@ -1,9 +1,9 @@
source.. = src/
output.. = bin/ output.. = bin/
bin.includes = META-INF/,\ bin.includes = META-INF/,\
.,\ .,\
plugin.xml,\ plugin.xml,\
ojdbc6.jar,\ ojdbc6.jar,\
c3p0-0.9.1.2.jar,\ c3p0-0.9.1.2.jar,\
c3p0-oracle-thin-extras-0.9.1.2.jar c3p0-oracle-thin-extras-0.9.1.2.jar,\
OSGI-INF/oracleprovider.xml
source.. = src/ source.. = src/

View File

@ -1,13 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?> <?eclipse version="3.4"?>
<plugin> <plugin>
<extension
point="org.compiere.db.AdempiereDatabase">
<database
class="org.compiere.db.DB_Oracle"
id="Oracle">
</database>
</extension>
<extension <extension
id="org.adempiere.db.config.ConfigOracle" id="org.adempiere.db.config.ConfigOracle"
name="Oracle Database Configuration" name="Oracle Database Configuration"

View File

@ -20,6 +20,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.pde.PluginNature</nature> <nature>org.eclipse.pde.PluginNature</nature>

View File

@ -14,3 +14,4 @@ Import-Package: junit.framework;version="3.8.2",
org.osgi.framework org.osgi.framework
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-Activator: org.adempiere.db.postgresql.PostgreSQLBundleActivator Bundle-Activator: org.adempiere.db.postgresql.PostgreSQLBundleActivator
Service-Component: OSGI-INF/pgprovider.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.postgresql.provider">
<implementation class="org.compiere.db.DB_PostgreSQL"/>
<service>
<provide interface="org.compiere.db.AdempiereDatabase"/>
</service>
<property name="id" type="String" value="PostgreSQL"/>
</scr:component>

View File

@ -1,8 +1,8 @@
source.. = src/
output.. = bin/ output.. = bin/
bin.includes = META-INF/,\ bin.includes = META-INF/,\
.,\ .,\
postgresql.jar,\ postgresql.jar,\
plugin.xml,\ plugin.xml,\
c3p0-0.9.1.2.jar c3p0-0.9.1.2.jar,\
OSGI-INF/pgprovider.xml
source.. = src/ source.. = src/

View File

@ -1,13 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?> <?eclipse version="3.4"?>
<plugin> <plugin>
<extension
point="org.compiere.db.AdempiereDatabase">
<database
class="org.compiere.db.DB_PostgreSQL"
id="PostgreSQL">
</database>
</extension>
<extension <extension
id="org.adempiere.db.postgresql.config.ConfigPostgreSQL" id="org.adempiere.db.postgresql.config.ConfigPostgreSQL"
name="PostgreSQL Database Configuration" name="PostgreSQL Database Configuration"