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ération | Statut | Champs exhaustifs | Flags | Limitations |
|---|---|---|---|---|
| EXTRACT (GET) | Supportée | non | Header 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ée | non | accepts_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ée | non | ||
| DELETE (DELETE) | Non supportée | — |
Un champ absent du tableau est ? (inconnu), pas non supporté. En cas de doute, nous écrire.
Client_No, DatePaiement, Liste_PaiementFacture, ListePaiement.
Les autres champs créables sont facultatifs.
Champs
| Champ unifié | Champ natif | CREATE | UPDATE | EXTRACT | FILTER | Requis | Note |
|---|---|---|---|---|---|---|---|
NumeroPaiement | CPPaymentNumber | X | X | OK | eq, in | Numero 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). | |
NoUniqueSystemeSource | CardPos | X | X | OK | eq, in | CardPos Acomba (surrogate). EXTRACT par eq/in = GetCard direct. CREATE : renseigne en sortie (ErpInternalId) apres ReserveCard/ModifyCard. | |
Client_No | CPCustomerNumber | OK | X | OK | eq, in | oui | Cle 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_NoUniqueSystemeSource | CPCustomerCP | X | X | OK | — | CardPos client. EXTRACT : CPCustomerCP.ToString(). CREATE : resolu automatiquement (BillTo) cote SDK, non lu depuis le DTO. | |
DatePaiement | CPPaymentDate | OK | X | OK | ge, gt, le, lt | oui | Date du paiement. CREATE : defaut DateTime.Now si null. EXTRACT : bornes min/max appliquees sur l'index 8. |
TypePaiement | CPPaymentType | X | X | OK | — | EXTRACT : CPPaymentType.ToString() (PaymentARType). CREATE : force a PM_Payment cote SDK, non pilote par ce champ. | |
ReferencePaiement | CPReference | OK | X | OK | — | Reference du paiement (optionnelle). Poussee en CREATE si non vide. | |
DateNotification | CPNoticeDate | OK | X | X | — | Date d'avis. CREATE seulement si non nulle/non MinValue. Non relue dans le convertisseur d'extraction. | |
TotalPaiement | — | X | X | OK | — | EXTRACT : calcule = somme de ListePaiement[].dbl_MontantPaiement. Pas un membre natif unique. CREATE : non lu (la repartition vient de ListePaiement + Liste_PaiementFacture). | |
TotalEscompte | — | X | X | OK | — | EXTRACT : calcule = somme de Liste_PaiementFacture[].dbl_MontantEscompte. Pas un membre natif unique. | |
Date_FicheDerniereModification | CPTimeModified | X | X | OK | — | Horodatage systeme, lecture seule. | |
BlockIfAlreadyPaid | — | OK | X | X | — | Garde CREATE (pre-vol) : refuse une facture deja reglee (InAllPaid!=0 ou montant deja paye!=0). Drapeau du DTO, pas un membre natif. | |
RequireFullSettlement | — | OK | X | X | — | Garde CREATE (pre-vol) : exige le reglement a 100% du solde de la facture. Drapeau du DTO, pas un membre natif. | |
Liste_PaiementFacture[].Facture_No | CPInvoiceNumber | OK | X | OK | eq | Numero 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_MontantDuPaiement | CPAmount | OK | X | OK | — | Montant 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_MontantEscompte | CPDiscount | OK | X | OK | — | Escompte applique a la facture. CREATE : passe a PayInvoice (0 force en mode multi-modes). | |
Liste_PaiementFacture[].Facture_NoUniqueSystemeSource | CPInvoiceARCP | X | X | OK | — | CardPos facture. EXTRACT : CPInvoiceARCP.ToString(). CREATE : resolu automatiquement (InvoiceAR/TransAR), non lu depuis le DTO. | |
Liste_PaiementFacture[].TypeTransaction | CPTransactionType | OK | X | OK | — | Type 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_NoUniqueSystemeSource | CardPos | X | X | OK | — | CardPos de l'entete de paiement (CustomerPayment031.CardPos), reporte sur chaque ligne. | |
Liste_PaiementFacture[].NoUniqueSystemeSource | CardPos | X | X | OK | — | CardPos de la ligne de paiement (CustomerPaymentLine.CardPos). Lecture seule. | |
Liste_PaiementFacture[].Date_FicheDerniereModification | CPTimeModified | X | X | OK | — | Horodatage de la ligne de paiement. | |
ListePaiement[].ModePaiement | CPPaymentMode[i] | OK | X | OK | — | Mode de paiement. CREATE : converti via Convertir_ModePaiement_ToAcomba ; 'A recevoir' interdit. EXTRACT : CPPaymentMode/MPPaymentMode/CPRefundMode selon CPPaymentType, converti via Convertir_ModePaiement_FromAcomba. | |
ListePaiement[].dbl_MontantPaiement | CPReceivedAmount[i] | OK | X | OK | — | Montant 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_DatePaiement | CPPaymentDate | X | X | OK | — | EXTRACT : 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 natif | Statut | Requis | Note |
|---|---|---|---|---|
Liste_PaiementFacture | CustomerPaymentLine | Supportée | oui | Lignes 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. |
ListePaiement | — | Supportée | oui | Sous-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.