79 lines
2.7 KiB
MySQL
79 lines
2.7 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`(vDated DATE, vCompensationAccount VARCHAR(10) , vBankFk VARCHAR(10), vConcept VARCHAR(255), vAmount DECIMAL(10,2), vCompanyFk INT, vOriginalAccount VARCHAR(10))
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Compensa un pago o un recibo insertando en contabilidad
|
||
|
*
|
||
|
* @param vDated fecha en la cual se anota
|
||
|
* @param vCompensationAccount cuenta contable contra la que se compensa
|
||
|
* @param vBankFk banco de la compensacion
|
||
|
* @param vConcept descripcion
|
||
|
* @param vAmount cantidad que se compensa
|
||
|
* @param vCompany empresa
|
||
|
* @param vOriginalAccount cuenta contable desde la cual se compensa
|
||
|
*
|
||
|
*/
|
||
|
DECLARE vNewBookEntry INT;
|
||
|
DECLARE vIsClientCompensation INT;
|
||
|
DECLARE vClientFk INT;
|
||
|
DECLARE vSupplierFk INT;
|
||
|
DECLARE vIsOriginalAClient BOOL;
|
||
|
DECLARE vPayMethodCompensation INT;
|
||
|
|
||
|
CALL ledger_next(vNewBookEntry);
|
||
|
|
||
|
SELECT COUNT(id) INTO vIsOriginalAClient FROM client WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci;
|
||
|
|
||
|
SELECT id, COUNT(id) INTO vClientFk, vIsClientCompensation
|
||
|
FROM client
|
||
|
WHERE accountingAccount LIKE vCompensationAccount COLLATE utf8_general_ci;
|
||
|
|
||
|
SET @vAmount1:= 0.0;
|
||
|
SET @vAmount2:= 0.0;
|
||
|
|
||
|
INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id)
|
||
|
VALUES ( vNewBookEntry,
|
||
|
vDated,
|
||
|
vOriginalAccount,
|
||
|
vCompensationAccount,
|
||
|
vConcept,
|
||
|
@vAmount1:= IF(
|
||
|
(vIsOriginalAClient AND vAmount > 0) OR
|
||
|
(NOT vIsOriginalAClient AND vAmount < 0),
|
||
|
0,
|
||
|
ABS(vAmount)
|
||
|
),
|
||
|
@vAmount2:= IF(@vAmount1,
|
||
|
0,
|
||
|
ABS(vAmount)
|
||
|
),
|
||
|
vCompanyFk
|
||
|
),
|
||
|
( vNewBookEntry,
|
||
|
vDated,
|
||
|
vCompensationAccount,
|
||
|
vOriginalAccount,
|
||
|
vConcept,
|
||
|
@vAmount2,
|
||
|
@vAmount1,
|
||
|
vCompanyFk);
|
||
|
|
||
|
IF vIsClientCompensation THEN
|
||
|
IF vIsOriginalAClient THEN
|
||
|
SET vAmount = -vAmount;
|
||
|
END IF;
|
||
|
INSERT INTO receipt(invoiceFk, amountPaid, payed, bankFk, companyFk, clientFk, isConciliate)
|
||
|
VALUES (vConcept, vAmount, vDated, vBankFk, vCompanyFk, vClientFk, TRUE);
|
||
|
ELSE
|
||
|
IF NOT vIsOriginalAClient THEN
|
||
|
SET vAmount = -vAmount;
|
||
|
END IF;
|
||
|
SELECT id INTO vSupplierFk FROM supplier WHERE `account` LIKE vCompensationAccount COLLATE utf8_general_ci;
|
||
|
SELECT id INTO vPayMethodCompensation FROM payMethod WHERE `code` = 'compensation';
|
||
|
|
||
|
INSERT INTO payment (received, dueDated, supplierFk, amount, bankFk, payMethodFk, concept, companyFk, isConciliated)
|
||
|
VALUES(vDated, vDated, vSupplierFk, vAmount, vBankFk, vPayMethodCompensation, vConcept, vCompanyFk, TRUE);
|
||
|
END IF;
|
||
|
END$$
|
||
|
DELIMITER ;
|