1 CREATE OR REPLACE FUNCTION postCCcashReceipt(pCCpay INTEGER,
3 pdoctype TEXT DEFAULT NULL,
4 pamount NUMERIC DEFAULT NULL) RETURNS INTEGER AS
6 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple.
7 -- See www.xtuple.com/CPAL for the full text of the software license.
10 _bankaccnt_id INTEGER;
20 JOIN custinfo ON ccpay_cust_id = cust_id
21 WHERE (ccpay_id = pCCpay);
24 RAISE EXCEPTION 'Cannot find the Credit Card transaction information [xtuple: postCCcashReceipt, -11, %]',
28 IF (pamount IS NOT NULL) THEN
29 _c.ccpay_amount = pamount;
32 SELECT bankaccnt_id, bankaccnt_accnt_id INTO _bankaccnt_id, _realaccnt
34 JOIN bankaccnt ON (ccbank_bankaccnt_id=bankaccnt_id)
35 WHERE (ccbank_ccard_type=_c.ccpay_card_type);
37 IF (_bankaccnt_id IS NULL) THEN
38 RAISE EXCEPTION 'Cannot find the default Bank Account for this Credit Card [xtuple: postCCcredit, -1, %]',
42 _ccOrderDesc := (_c.ccpay_card_type || '-' || _c.ccpay_order_number::TEXT ||
43 '-' || _c.ccpay_order_number_seq::TEXT);
45 _journal := fetchJournalNumber('C/R');
47 IF (pdoctype = 'cashrcpt') THEN
48 IF (COALESCE(pdocid, -1) < 0) THEN
49 INSERT INTO cashrcpt (
50 cashrcpt_cust_id, cashrcpt_amount, cashrcpt_curr_id,
51 cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_notes,
52 cashrcpt_distdate, cashrcpt_bankaccnt_id,
53 cashrcpt_usecustdeposit
55 _c.ccpay_cust_id, _c.ccpay_amount, _c.ccpay_curr_id,
56 _c.ccpay_card_type, _c.ccpay_r_ordernum, _ccOrderDesc,
57 CURRENT_DATE, _bankaccnt_id,
58 fetchMetricBool('EnableCustomerDeposits'))
59 RETURNING cashrcpt_id INTO _return;
62 SET cashrcpt_cust_id=_c.ccpay_cust_id,
63 cashrcpt_amount=_c.ccpay_amount,
64 cashrcpt_curr_id=_c.ccpay_curr_id,
65 cashrcpt_fundstype=_c.ccpay_card_type,
66 cashrcpt_docnumber=_c.ccpay_r_ordernum,
67 cashrcpt_notes=_ccOrderDesc,
68 cashrcpt_distdate=CURRENT_DATE,
69 cashrcpt_bankaccnt_id=_bankaccnt_id
70 WHERE (cashrcpt_id=pdocid);
74 ELSIF (pdoctype = 'cohead') THEN
75 SELECT createARCreditMemo(NULL, _c.ccpay_cust_id,
76 fetchArMemoNumber(), cohead_number,
77 CURRENT_DATE, _c.ccpay_amount,
78 'Unapplied from ' || _ccOrderDesc,
81 cohead_salesrep_id, NULL,
82 _journal, _c.ccpay_curr_id,
83 NULL, pCCpay) INTO _aropenid
85 WHERE cohead_id = pdocid;
86 IF (COALESCE(_aropenid, -1) < 0) THEN -- coalesce handles not-found case
87 RAISE EXCEPTION '[xtuple: createARCreditMemo, %]', _aropenid;
90 INSERT INTO payaropen (payaropen_ccpay_id, payaropen_aropen_id,
91 payaropen_amount, payaropen_curr_id)
92 VALUES (pccpay, _aropenid,
93 _c.ccpay_amount, _c.ccpay_curr_id);
94 INSERT INTO aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id,
95 aropenalloc_amount, aropenalloc_curr_id)
96 VALUES (_aropenid, 'S', pdocid,
97 _c.ccpay_amount, _c.ccpay_curr_id);
101 PERFORM insertGLTransaction(_journal, 'A/R', 'CR', _ccOrderDesc,
102 ('Cash Receipt from Credit Card ' || _c.cust_name),
103 findPrepaidAccount(_c.ccpay_cust_id),
106 ROUND(currToBase(_c.ccpay_curr_id,
108 _c.ccpay_transaction_datetime::DATE),2),
113 $$ LANGUAGE 'plpgsql';