Delimiter //
/**
 * vérifier le solde fourni par rapport à celui de l'application
 * 
 * Si ref compte trouvé et le montant du fichier <> somme(ENT_DEBIT - ENT_CREDIT) du compte, notifier une erreur "Compte ref : "+[ref compte]+ " Solde attendu "+ [solde du fichier] + " Solde trouvé : " + [Solde du compte dans l'application]
 * 
 * @author Jean-François
 * @ticket #3761
 */
Drop Procedure If Exists LOADER_BALANCECONTROL_NORMALIZE_CHECK_GIVEN_BALANCE//
Create Procedure LOADER_BALANCECONTROL_NORMALIZE_CHECK_GIVEN_BALANCE(
    In batchnum Int
    , In boundMode Int
)
Begin

	If boundMode = 0 Then
		-- sans les comptes liés
		Update
			LOADER_BALANCECONTROL BC
			Inner Join LOADER_STATUS LST
				On BC.LOADER_STATUS_ID_LOADER_STATUS = LST.ID_LOADER_STATUS
			Inner Join FI_ANA FA
				On BC.ID_ACCOUNTS = FA.ACCOUNTS_ID_ACCOUNTS
		Set
			LST.LOADER_STATUS_ERRCOUNT = LST.LOADER_STATUS_ERRCOUNT + 1
			, LST.LOADER_STATUS_ERRMSGS = LOADER_CONCAT_ERR(LST.LOADER_STATUS_ERRMSGS, CONCAT('Compte ref ',BC.ACCOUNTS_REF, ' - solde attendu : ', BC.BALANCE  ,', solde trouvé : ',FA.FI_ANA_UNBOUND_OUTSTANDING  ) ) 
		Where
			LST.LOADER_STATUS_BATCH_NUM = batchnum
			And Coalesce(FA.FI_ANA_UNBOUND_OUTSTANDING, 0) <> Coalesce(BC.BALANCE, 0)
-- 			And Coalesce(FA.FI_ANA_UNBOUND_OUTSTANDING, FA.FI_ANA_OUTSTANDING, 0) <> Coalesce(BC.BALANCE, 0)
		;
	Else
		-- avec les comptes liés
		Update
			LOADER_BALANCECONTROL BC
			Inner Join LOADER_STATUS LST
				On BC.LOADER_STATUS_ID_LOADER_STATUS = LST.ID_LOADER_STATUS
			Inner Join FI_ANA FA
				On BC.ID_ACCOUNTS = FA.ACCOUNTS_ID_ACCOUNTS
		Set
			LST.LOADER_STATUS_ERRCOUNT = LST.LOADER_STATUS_ERRCOUNT + 1
			, LST.LOADER_STATUS_ERRMSGS = LOADER_CONCAT_ERR(LST.LOADER_STATUS_ERRMSGS, CONCAT('Compte ref ',BC.ACCOUNTS_REF, ' - solde attendu : ', BC.BALANCE  ,', solde trouvé : ',FA.FI_ANA_OUTSTANDING  ) ) 
		Where
			LST.LOADER_STATUS_BATCH_NUM = batchnum
			And Coalesce(FA.FI_ANA_OUTSTANDING, 0) <> Coalesce(BC.BALANCE, 0)
		;
	End if;

End//
Delimiter ;