Skip to main content

Soumettre des soumissions et des factures avec l’API Fournisseur

Créez des propositions pour l’approbation de l’acheteur et facturez les bons de travail terminés : brouillons de factures, sections de postes, téléversement-et-publication de PDF et effets secondaires des statuts.
L’argent circule à travers deux objets : les propositions (soumissions que l’acheteur approuve avant que le travail se poursuive) et les factures (la facturation pour le travail terminé). Les deux sont créés par les fournisseurs via cette API.
Aucun de ces endpoints n’est disponible pour les clés d’équipes de service internes; la soumission et la facturation sont pour les fournisseurs tiers qui facturent un acheteur.
Tous les exemples supposent :

L’argent en chaînes, par sections

Les propositions et les factures partagent une structure de postes. Les montants sont des chaînes qui doivent s’analyser comme des nombres (« 450.00 », pas 450.00 en flottant; les émetteurs devraient formater à deux décimales et analyser comme décimales). Les sections sont main-d’œuvre, matériel, déplacement, fret et divers (les propositions ajoutent les coûts engagés), chacune portant ses propres postes, son taux de taxe et son ...TotalBeforeTax, se totalisant en avant taxe, taxe et après taxe. Les lignes de déplacement, de fret et divers sont de simples objets { "description", "amount" }.

Propositions (soumissions)

POST /v1/supplier/quote/proposals crée la proposition directement au statut pending sous votre établissement; il n’y a pas d’étape de soumission distincte. Requis : workOrderId et totalAfterTax.
Comportement à connaître :
  • locationId, buyerFacilityId et buyerCompanyId sont dérivés du bon de travail; vous ne pouvez pas les définir.
  • Les champs de taxe et les totaux de section non définis sont par défaut à "0".
  • requestForProposalId prend par défaut la RFP du bon de travail lorsqu’il est omis.
  • proposalPdfLink, s’il est envoyé, doit être une URL valide. attachments prend des FileDetails de l’endpoint de téléversement de fichier.
  • Passer un id met à jour une proposition existante.
Suivez le résultat en récupérant à nouveau : status passe de pending à awarded ou declined (les raisons de refus apparaissent dans declineNotes). Listez avec GET /v1/supplier/quote/proposals, lisez-en une avec GET /v1/supplier/quote/proposals/{id}.

Factures

Le cycle de vie

Les factures commencent comme draft (invisible pour l’acheteur), sont publiées en pending, puis l’acheteur les fait avancer à travers approved et processing jusqu’à paid (ou les conteste). Votre intégration crée le brouillon et le publie; à partir de pending, vous lisez surtout le statut.

Créer le brouillon

POST /v1/supplier/invoice/invoices requiert workOrderId; locationId, buyerFacilityId, buyerCompanyId, spendCategoryId et problemTypeId en sont tous dérivés.
Détails qui piquent :
  • poNumber prend par défaut le numéro de BC du bon de travail.
  • serviceCallIds prend par défaut tous les appels de service du bon de travail lorsqu’il est omis ou vide; définissez-le explicitement lorsque vous facturez un sous-ensemble de visites.
  • taxLineItems sont validés contre les types de taxe permis pour la devise de la facture (actuellement seul le CAD les prend en charge : GST/HST/PST); tout autre est rejeté.
  • invoicePDFLink (une URL valide) devient la seule entrée PDF de la facture si vous hébergez le PDF vous-même; la plupart des intégrations utilisent plutôt l’endpoint de téléversement ci-dessous.
  • autoPublishOnApproval inscrit cette facture à la publication automatique lorsque le bon de travail se termine.
  • Sauvegarder une facture peut faire passer le statut du bon de travail associé selon la correspondance facture-vers-bon-de-travail. Un échec de validation au niveau de la sauvegarde renvoie 406.
  • Passer un id met à jour une facture existante (en pratique, seulement les brouillons; les statuts côté acheteur ne vous appartiennent pas).

Téléverser le PDF et publier

POST /v1/supplier/invoice/file/upload_and_publish/{invoiceId} fait les deux étapes en même temps : le PDF téléversé (partie multipart file, maximum 512 Mo) devient le seul PDF de la facture, et le statut passe à pending.
Chaque précondition non satisfaite renvoie 400 : votre établissement doit posséder la facture, le bon de travail associé doit être au statut d’affichage Completed, et la modification de facture par le fournisseur doit être permise par la configuration de l’acheteur.

Lire et réconcilier

GET /v1/supplier/invoice/invoices (filtrable, p. ex. ?status=pending) et GET /v1/supplier/invoice/invoices/{id}. Les fournisseurs tiers voient des fiches masquées, les champs privés à l’acheteur étant vidés. Sondez le statut pour piloter votre grand livre des comptes clients : approvedAt, processedAt et markedPaidAt horodatent la progression de l’acheteur.

Flux de facturation de bout en bout

  1. Le bon de travail atteint l’étape de soumission : soumettez une proposition, attendez awarded.
  2. Complétez le travail via le départ d’appel de service.
  3. Créez le brouillon de facture; générez votre PDF.
  4. Une fois que le bon de travail affiche Completed, upload_and_publish.
  5. Sondez le statut de la facture jusqu’à paid, et réconciliez contre markedPaidAt.