110 lines
2.7 KiB
SQL
110 lines
2.7 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`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 vCompanyFk 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_nextTx(YEAR(vDated), 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
|
|
SET invoiceFk = vConcept,
|
|
amountPaid = vAmount,
|
|
payed = vDated,
|
|
bankFk = vBankFk,
|
|
companyFk = vCompanyFk,
|
|
clientFk = vClientFk,
|
|
isConciliate = 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
|
|
SET received = vDated,
|
|
dueDated = vDated,
|
|
supplierFk = vSupplierFk,
|
|
amount = vAmount,
|
|
bankFk = vBankFk,
|
|
payMethodFk = vPayMethodCompensation,
|
|
concept = vConcept,
|
|
companyFk = vCompanyFk,
|
|
isConciliated = TRUE;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|