endi.plugins.sap_urssaf3p.models.services package

Submodules

endi.plugins.sap_urssaf3p.models.services.payment_request module

class endi.plugins.sap_urssaf3p.models.services.payment_request.RejectStatus(code: str, category: str, label: str)

Bases : object

category: str
code: str
label: str
class endi.plugins.sap_urssaf3p.models.services.payment_request.RequestStatus(urssaf_status_code: str, title: str, description: str, endi_status: str, payment_recovery: bool = False)

Bases : object

description: str
endi_status: str
payment_recovery: bool = False
title: str
urssaf_status_code: str
class endi.plugins.sap_urssaf3p.models.services.payment_request.URSSAFPaymentRequestService

Bases : object

Cf Documentation-API-TiersPrestation_v1-1-7.pdf - 4.3 Statuts de la demande de paiement - 3.3.3 Description de la réponse

REJECT_MAP = {'ANNUL_AUTRE': RejectStatus(code='ANNUL_AUTRE', category='Annulation', label='Autre motif'), 'ANNUL_DBL': RejectStatus(code='ANNUL_DBL', category='Annulation', label='Demande de paiement en doublon'), 'ANNUL_ERR_MNT': RejectStatus(code='ANNUL_ERR_MNT', category='Annulation', label='Montant facturé erroné'), 'ANNUL_ERR_TECH': RejectStatus(code='ANNUL_ERR_TECH', category='Annulation', label='Erreur technique'), 'CONTEST_AUTRE': RejectStatus(code='CONTEST_AUTRE', category='Contestation', label='Autre motif'), 'CONTEST_ERR_FACT': RejectStatus(code='CONTEST_ERR_FACT', category='Contestation', label='La facture comporte une erreur'), 'CONTEST_FACT_REGLEE': RejectStatus(code='CONTEST_FACT_REGLEE', category='Contestation', label='La facture a déjà été réglée'), 'REGUL_AUTRE': RejectStatus(code='REGUL_AUTRE', category='Régularisation', label='Autre motif'), 'REGUL_MNT_FACT': RejectStatus(code='REGUL_MNT_FACT', category='Régularisation', label='Erreur sur le montant facturé et/ou sur le tarif indiqué pour la prestation'), 'REGUL_NB_QTE_FACT': RejectStatus(code='REGUL_NB_QTE_FACT', category='Régularisation', label="Nombre d'heures ou quantités facturées erronées"), 'REGUL_PRESTA_FACT': RejectStatus(code='REGUL_PRESTA_FACT', category='Régularisation', label='Erreur sur les prestations facturées')}
REJECT_STATUSES = [RejectStatus(code='REGUL_MNT_FACT', category='Régularisation', label='Erreur sur le montant facturé et/ou sur le tarif indiqué pour la prestation'), RejectStatus(code='REGUL_NB_QTE_FACT', category='Régularisation', label="Nombre d'heures ou quantités facturées erronées"), RejectStatus(code='REGUL_PRESTA_FACT', category='Régularisation', label='Erreur sur les prestations facturées'), RejectStatus(code='REGUL_AUTRE', category='Régularisation', label='Autre motif'), RejectStatus(code='CONTEST_ERR_FACT', category='Contestation', label='La facture comporte une erreur'), RejectStatus(code='CONTEST_FACT_REGLEE', category='Contestation', label='La facture a déjà été réglée'), RejectStatus(code='CONTEST_AUTRE', category='Contestation', label='Autre motif'), RejectStatus(code='ANNUL_DBL', category='Annulation', label='Demande de paiement en doublon'), RejectStatus(code='ANNUL_ERR_MNT', category='Annulation', label='Montant facturé erroné'), RejectStatus(code='ANNUL_ERR_TECH', category='Annulation', label='Erreur technique'), RejectStatus(code='ANNUL_AUTRE', category='Annulation', label='Autre motif')]
STATUSES = [RequestStatus(urssaf_status_code='10', title='Intégrée', description="La demande de paiement a été reçue et acceptée par l'URSSAF.", endi_status='waiting', payment_recovery=False), RequestStatus(urssaf_status_code='20', title='En attente de validation', description="Le client a été prévenu qu'il doit valider ou rejeter la demande de paiement.", endi_status='waiting', payment_recovery=False), RequestStatus(urssaf_status_code='30', title='Validée', description='La demande de paiement a été validée par le client et le prélèvement a été initié.', endi_status='waiting', payment_recovery=False), RequestStatus(urssaf_status_code='40', title='Refusée', description='La demande de paiement a été refusée par le client.', endi_status='aborted', payment_recovery=False), RequestStatus(urssaf_status_code='50', title='Prélevée', description='Le prélèvement de la demande de paiement est en cours.', endi_status='waiting', payment_recovery=False), RequestStatus(urssaf_status_code='60', title='En refus de prélèvement', description='Le prélèvement de la demande de paiement est revenu en erreur.La demande de paiement est en impayé.', endi_status='payment_issue', payment_recovery=False), RequestStatus(urssaf_status_code='70', title='Payée', description='La demande de paiement a été payée au prestataire.', endi_status='resulted', payment_recovery=False), RequestStatus(urssaf_status_code='110', title='Annulée', description='La demande de paiement a été annulée suite à une demande motivée du prestataire.', endi_status='aborted', payment_recovery=False), RequestStatus(urssaf_status_code='111', title='Annulée après impayé', description='La demande de paiement a été annulée après impayé du client.', endi_status='aborted', payment_recovery=False), RequestStatus(urssaf_status_code='112', title='Annulée après recouvrement', description='La demande de paiement a été annulée après recouvrement par le prestataire.', endi_status='aborted', payment_recovery=True), RequestStatus(urssaf_status_code='120', title='Recouvrée', description='La demande de paiement en impayé a été recouvrée par le prestataire.', endi_status='aborted', payment_recovery=True)]
URSSAF_MAP = {'10': RequestStatus(urssaf_status_code='10', title='Intégrée', description="La demande de paiement a été reçue et acceptée par l'URSSAF.", endi_status='waiting', payment_recovery=False), '110': RequestStatus(urssaf_status_code='110', title='Annulée', description='La demande de paiement a été annulée suite à une demande motivée du prestataire.', endi_status='aborted', payment_recovery=False), '111': RequestStatus(urssaf_status_code='111', title='Annulée après impayé', description='La demande de paiement a été annulée après impayé du client.', endi_status='aborted', payment_recovery=False), '112': RequestStatus(urssaf_status_code='112', title='Annulée après recouvrement', description='La demande de paiement a été annulée après recouvrement par le prestataire.', endi_status='aborted', payment_recovery=True), '120': RequestStatus(urssaf_status_code='120', title='Recouvrée', description='La demande de paiement en impayé a été recouvrée par le prestataire.', endi_status='aborted', payment_recovery=True), '20': RequestStatus(urssaf_status_code='20', title='En attente de validation', description="Le client a été prévenu qu'il doit valider ou rejeter la demande de paiement.", endi_status='waiting', payment_recovery=False), '30': RequestStatus(urssaf_status_code='30', title='Validée', description='La demande de paiement a été validée par le client et le prélèvement a été initié.', endi_status='waiting', payment_recovery=False), '40': RequestStatus(urssaf_status_code='40', title='Refusée', description='La demande de paiement a été refusée par le client.', endi_status='aborted', payment_recovery=False), '50': RequestStatus(urssaf_status_code='50', title='Prélevée', description='Le prélèvement de la demande de paiement est en cours.', endi_status='waiting', payment_recovery=False), '60': RequestStatus(urssaf_status_code='60', title='En refus de prélèvement', description='Le prélèvement de la demande de paiement est revenu en erreur.La demande de paiement est en impayé.', endi_status='payment_issue', payment_recovery=False), '70': RequestStatus(urssaf_status_code='70', title='Payée', description='La demande de paiement a été payée au prestataire.', endi_status='resulted', payment_recovery=False)}
WATCHING_DELAY = datetime.timedelta(days=7)
classmethod get_description(urssaf_status_code: str) str
classmethod get_endi_status(urssaf_status_code: str) str
classmethod get_reject_label(reject_status_code: str) str
classmethod get_title(urssaf_status_code: str) str
classmethod is_payment_recovery(urssaf_status_code: str) bool
classmethod should_watch_expression(cls)
classmethod should_watch_property(obj: URSSAFPaymentRequest) bool

Should we continue to watch this request against the URSSAF_API

checking the status is not enough since « paid » status can be or not a final status

classmethod update_from_reject_data(reject_code: str, reject_comment: str, obj: URSSAFPaymentRequest) bool

Mutate URSSAF payment request after receiving reject data

Renvoie:

True if obj was updated

classmethod update_from_transfer_data(obj: URSSAFPaymentRequest, transfer_date: str, transfer_amount: Optional[str] = None) bool

Mutate URSSAF payment request after receiving transfer data

Renvoie:

True if obj was updated

classmethod update_from_urssaf_status_code(urssaf_status_code: str, obj: URSSAFPaymentRequest) bool

Mutate URSSAF payment request after receiving a new status code from URSSAF

Renvoie:

True if this was a new status and obj was updated.

Module contents