Aller au contenu principal

CustomerInvoicePayment — Acomba

Entité unifiée ARPayment · entité native Acomba : CustomerPayment031.

Page générée, ne pas éditer — voir la version du dataset pour la provenance.

Voir aussi : page CustomerInvoicePayment.

Opérations

OpérationStatutChamps exhaustifsFlagsLimitations
EXTRACT (GET)SupportéenonHeader CustomerPayment031 (cles d'index) + GetCard, puis CustomerPaymentLine (index 4 Key_CPPaymentCP) pour le lien paiement->factures. Seuls les paiements CPStatus==0 sont retournes. ; Au plus 1 filtre principal indexe. Les seuls champs filtrables (ListAllowedFilter) sont NumeroPaiement, NoUniqueSystemeSource, DatePaiement, Client_No et Liste_PaiementFacture[].Facture_No ; tout autre champ -> Exception. ; Filtre Facture_No (eq seulement) exige obligatoirement un filtre Client_No (eq) en complement, sinon Exception. ; Sans filtre : scan complet via index 8 (Key_CPCustomerNumber+Key_CPPaymentDate+Key_CPUnique) ; supporte Skip/Top. ; Filtre synthetique CUSTOM_FILTER_UNPAID_INVOICES_ONLY (ExtractManager) -> GetPaiement.ExtractionReglement_InvoicePartiallyPaid (paiements touchant des factures AR non payees integralement, via InvoiceAR index 3) ; ignore les autres filtres.
CREATE (POST)Supportéenonaccepts_list ; auto_fetch: Client_NoUniqueSystemeSource (CardPos client resolu via Customer.GetFromPrimaryKey sur Client_No ; utilise le BillTo CuInvoicedToCP s'il existe), CPReceivable (compte recevable du client, lu depuis Customer.CuReceivable), Liste_PaiementFacture[].Facture_NoUniqueSystemeSource (CardPos de la transaction resolu par client+numero+TYPE : InvoiceAR index 1 Key_InCustomerCP+Key_InInvoiceNumber, sans date, puis TransAR.GetCard pour matcher InTransactionType facture/credit/excedent)
UPDATE (PUT)Non supportéenon
DELETE (DELETE)Non supportée
Liste de champs non exhaustive

Un champ absent du tableau est ? (inconnu), pas non supporté. En cas de doute, nous écrire.

Champs obligatoires à la création

Client_No, DatePaiement, Liste_PaiementFacture, ListePaiement.

Les autres champs créables sont facultatifs.

Champs

Champ unifiéChamp natifCREATEUPDATEEXTRACTFILTERRequisNote
NumeroPaiementCPPaymentNumberXXOKeq, inNumero de reglement. EXTRACT : recherche via index 3 (Key_CPPaymentType+Key_CPPaymentNumber), essaie chaque PaymentARType. CREATE : assigne par Acomba (sortie dans BusinessKey, '; '-joint si plusieurs fiches).
NoUniqueSystemeSourceCardPosXXOKeq, inCardPos Acomba (surrogate). EXTRACT par eq/in = GetCard direct. CREATE : renseigne en sortie (ErpInternalId) apres ReserveCard/ModifyCard.
Client_NoCPCustomerNumberOKXOKeq, inouiCle client. Requis au CREATE (resout le client via Customer.PKey_CuNumber). Filtre eq utilise comme borne du scan index 8 ; in declare dans ListAllowedFilter.
Client_NoUniqueSystemeSourceCPCustomerCPXXOKCardPos client. EXTRACT : CPCustomerCP.ToString(). CREATE : resolu automatiquement (BillTo) cote SDK, non lu depuis le DTO.
DatePaiementCPPaymentDateOKXOKge, gt, le, ltouiDate du paiement. CREATE : defaut DateTime.Now si null. EXTRACT : bornes min/max appliquees sur l'index 8.
TypePaiementCPPaymentTypeXXOKEXTRACT : CPPaymentType.ToString() (PaymentARType). CREATE : force a PM_Payment cote SDK, non pilote par ce champ.
ReferencePaiementCPReferenceOKXOKReference du paiement (optionnelle). Poussee en CREATE si non vide.
DateNotificationCPNoticeDateOKXXDate d'avis. CREATE seulement si non nulle/non MinValue. Non relue dans le convertisseur d'extraction.
TotalPaiementXXOKEXTRACT : calcule = somme de ListePaiement[].dbl_MontantPaiement. Pas un membre natif unique. CREATE : non lu (la repartition vient de ListePaiement + Liste_PaiementFacture).
TotalEscompteXXOKEXTRACT : calcule = somme de Liste_PaiementFacture[].dbl_MontantEscompte. Pas un membre natif unique.
Date_FicheDerniereModificationCPTimeModifiedXXOKHorodatage systeme, lecture seule.
BlockIfAlreadyPaidOKXXGarde CREATE (pre-vol) : refuse une facture deja reglee (InAllPaid!=0 ou montant deja paye!=0). Drapeau du DTO, pas un membre natif.
RequireFullSettlementOKXXGarde CREATE (pre-vol) : exige le reglement a 100% du solde de la facture. Drapeau du DTO, pas un membre natif.
Liste_PaiementFacture[].Facture_NoCPInvoiceNumberOKXOKeqNumero de facture (ou de note de credit) du lien paiement->transaction (CustomerPaymentLine). CREATE : requis (>=1) ; chaque transaction resolue par (client + numero + TYPE) en enumerant InvoiceAR index 1 (sans date) puis TransAR.GetCard pour lire le vrai InTransactionType, puis appliquee via CustomerPaymentLine.PayInvoice. EXTRACT : filtre eq via InvoiceAR index 5 (exige aussi Client_No).
Liste_PaiementFacture[].dbl_MontantDuPaiementCPAmountOKXOKMontant applique a la transaction. CREATE : magnitude POSITIVE (facture, credit ET excedent ; un montant negatif est rejete par Acomba, erreur 105), passee a PayInvoice. Reconciliation : Sigma(modes) == Sigma(montants factures) - Sigma(montants credits + excedents) = encaissement net.
Liste_PaiementFacture[].dbl_MontantEscompteCPDiscountOKXOKEscompte applique a la facture. CREATE : passe a PayInvoice (0 force en mode multi-modes).
Liste_PaiementFacture[].Facture_NoUniqueSystemeSourceCPInvoiceARCPXXOKCardPos facture. EXTRACT : CPInvoiceARCP.ToString(). CREATE : resolu automatiquement (InvoiceAR/TransAR), non lu depuis le DTO.
Liste_PaiementFacture[].TypeTransactionCPTransactionTypeOKXOKType de transaction de la ligne. CREATE : pilote le type VOULU a resoudre (insensible casse/accents) -- 'Credit' => note de credit (TA_Credit) ; 'Excedent'/'Overpayment'/'Surpaiement' => excedent (TA_Overpayment) ; sinon facture (TA_Invoice) par defaut. Credit et excedent s'appliquent identiquement (magnitude positive, contribution negative au net). EXTRACT : CPTransactionType.ToString() (lecture seule).
Liste_PaiementFacture[].PaiementEntete_NoUniqueSystemeSourceCardPosXXOKCardPos de l'entete de paiement (CustomerPayment031.CardPos), reporte sur chaque ligne.
Liste_PaiementFacture[].NoUniqueSystemeSourceCardPosXXOKCardPos de la ligne de paiement (CustomerPaymentLine.CardPos). Lecture seule.
Liste_PaiementFacture[].Date_FicheDerniereModificationCPTimeModifiedXXOKHorodatage de la ligne de paiement.
ListePaiement[].ModePaiementCPPaymentMode[i]OKXOKMode de paiement. CREATE : converti via Convertir_ModePaiement_ToAcomba ; 'A recevoir' interdit. EXTRACT : CPPaymentMode/MPPaymentMode/CPRefundMode selon CPPaymentType, converti via Convertir_ModePaiement_FromAcomba.
ListePaiement[].dbl_MontantPaiementCPReceivedAmount[i]OKXOKMontant par mode (>0 requis). CREATE : CPReceivedAmount[1] par fiche ; multi-modes => une fiche par mode (Acomba refuse 2 modes a-posteriori sur une facture AR, ACCEO #2778186). EXTRACT : CPReceivedAmount/MPReceivedAmount/CPRefundAmount.
ListePaiement[].date_DatePaiementCPPaymentDateXXOKEXTRACT : reprend CPPaymentDate de l'entete. CREATE : la date vient de DatePaiement (entete), pas de la ligne.

Axes : OK supporté · X non supporté · ~ partiel · DEPR déprécié · EXP expérimental · ? inconnu.

Opérateurs en syntaxe $filter : eq égal · ne différent · gt/ge plus grand (ou égal) · lt/le plus petit (ou égal) · in dans une liste (InList) · contains contient · startswith commence par · non filtrable.

Expands (sous-objets extractibles)

Expand unifiéType natifStatutRequisNote
Liste_PaiementFactureCustomerPaymentLineSupportéeouiLignes de lien paiement->facture (CustomerPaymentLine). CREATE : requis (>=1), applique via PayInvoice. EXTRACT : toujours materialise par le convertisseur (index 4 Key_CPPaymentCP), non declare dans QuerySettings.Expand.
ListePaiementSupportéeouiSous-objets Paiement (mode/montant/date) de l'entete. CREATE : >=1 mode requis (CPPaymentMode/CPReceivedAmount). EXTRACT : alimente selon CPPaymentType (Payment/AuthorizedPayment via CPPaymentMode+MPPaymentMode, Refund via CPRefundMode). Toujours materialise, non declare dans QuerySettings.Expand.

Notes

Entite de PAIEMENT de facture cliente (vue A RECEVOIR). DTO unifie ARPayment (confirme par les signatures GlobalInterfacor.PayARTransaction(ARPayment) / ExtractByQuerySettings -> ARPayment). Objet natif AcoSDK : CustomerPayment031 (header) + CustomerPaymentLine (lignes lien->facture).

Dispatch (AcombaSDK_GlobalInterfacor, case CustomerInvoicePayment) : CREATE uniquement.

  • TaskType != CREATE -> NotImplementedException (donc UPDATE unsupported).
  • Payload objet -> AcombaSDK_ARPayment.PayARTransaction(ARPayment).
  • Payload tableau -> AcombaSDK_ARPayment.PayMultipleARTransaction(List<ARPayment>) : chaque item est traite isolement, une erreur n'arrete pas les autres (accepts_list: true, 1 resultat par item).
  • DELETE : non route (global SDK unsupported).

EXTRACT (AcombaSDK_ExtractManager, case CustomerInvoicePayment) :

  • Si filtre CUSTOM_FILTER_UNPAID_INVOICES_ONLY present -> ExtractionReglement_InvoicePartiallyPaid (factures AR non payees integralement, InvoiceAR index 3 + CustomerPaymentLine), sinon AcombaSDK_ARPayment.ExtractByQuerySettings (recherche par index selon le filtre principal).
  • Routes de filtre dans ExtractByQuerySettings : Facture_No (eq, exige Client_No), NumeroPaiement (eq/in, index 3 multi-types), NoUniqueSystemeSource/CardPos (eq/in, GetCard), DatePaiement (gte/gt/lte/lt) + Client_No (eq) en scan index 8. Filtres declares dans ListAllowedFilter.

CREATE - regles cles (PayARTransaction) : Client_No requis (Customer.GetFromPrimaryKey, KeyNotFound si introuvable) ; au moins une transaction (Liste_PaiementFacture) et au moins un mode (ListePaiement) ; tous les montants > 0 ; mode 'A recevoir' interdit ; Sigma(modes) == Sigma(montants factures) - Sigma(montants credits + excedents) = encaissement net (CPReceivedAmount). Multi-modes (>=2) limite a UNE seule facture (sinon Exception) et cree une fiche par mode. Header cree via ReserveCard(IsBeingCreated) puis lignes via CustomerPaymentLine.PayInvoice puis ModifyCard. BusinessKey = numero(s) de paiement, ErpInternalId = CardPos (separes par '; ' si plusieurs fiches).

CREDITS / EXCEDENTS (Liste_PaiementFacture[].TypeTransaction = 'Credit' -> TA_Credit ; 'Excedent'/ 'Overpayment'/'Surpaiement' -> TA_Overpayment) : supportes dans un meme reglement que des factures, mais UNIQUEMENT avec un mode de paiement UNIQUE (multi-modes + credit/excedent => Exception). Le type VOULU est resolu par (client + numero + type) : enumeration InvoiceAR index 1 (sans date) puis TransAR.GetCard pour lire le vrai InTransactionType (Key_InTransactionType non fiable sur index 1). Le montant passe a PayInvoice est une MAGNITUDE POSITIVE (facture, credit ET excedent) ; Acomba applique la direction selon le type (un credit/excedent reduit l'encaissement) et un montant negatif est rejete (erreur 105).

Aucun $METADATA pour cette entite (seul Product l'expose). Pas de mode simulate (SIMULATE_ONLY) pour les paiements AR. 'sdk:' a null pour les agregats calcules (TotalPaiement/TotalEscompte) et les drapeaux du DTO (BlockIfAlreadyPaid/RequireFullSettlement) sans membre natif direct. Liste de champs NON exhaustive (fields_exhaustive: false). Les sous-objets (Liste_PaiementFacture, ListePaiement) sont toujours materialises par le convertisseur, ils ne sont pas declares dans QuerySettings.Expand.

Cette page vous a-t-elle été utile ?