Postman est une plateforme permettant d'utiliser une API. Nous l'utilisons ici pour simplifier les appels à l'API de Dokos.
https://www.postman.com/
POST
Exemple: http://localhost:8000/api/resource/Sales Order
KEY | VALUE |
---|---|
Authorization | token [clé publique]:[clé privée] |
Content-Type | application/json |
Vous pouvez récupérer une clé publique et une clé privée associée à un utilisateur en allant dans ses paramètres utilisateur; section Accès API.
Exemple:
{
"customer": "Roslyn Lépicier",
"items": [
{
"item_code": "Salle de coworking",
"delivery_date": "2022-04-01",
"qty": 1,
"uom": "Heure"
}
]
}
Exemple en associant votre commande à une réservation d'articles:
Vous pouvez, par exemple, créer une réservation d'articles et inclure son nom dans votre requête.
{
"customer": "Roslyn Lépicier",
"items": [
{
"item_code": "Salle de coworking",
"delivery_date": "2022-04-01",
"qty": 1,
"uom": "Heure",
"item_booking": "STO-BOOK-2022-00102"
}
]
}
Seuls le champ
customer
et une ligne de commande (items
) sont obligatoires, mais il est possible d'ajouter une valeur pour n'importe quel autre champ disponible dans le document.
Pour connaître les champs disponible et leur caractère obligatoire ou non, il suffit d'aller dans la liste de Réservations d'article et de sélectionner Menu (...) > Personnaliser.
Pour les tables enfants (Sales Order Item par exemple), sélectionnez Personnaliser une table enfant dans la page de personnalisation de formulaire.
Pour valider une commande vous pouvez passer le statut de document 1 dans votre document:
{
"customer": "Roslyn Lépicier",
"docstatus": 1,
"items": [
{
"item_code": "Salle de coworking",
"delivery_date": "2022-04-01",
"qty": 1,
"uom": "Heure",
"item_booking": "STO-BOOK-2022-00102"
}
]
}
Vous pouvez également utiliser l'API suivante pour soumettre un brouillon déjà créé et renvoyé par l'API:
http://localhost:8000/api/method/frappe.client.submit
Avec, dans le corps de l'appel, un brouillon de commande créé précédemment:
{
"doc": {
"name": "SAL-ORD-2022-00116",
"owner": "thierry@dokos.io",
"creation": "2022-03-01 18:31:44.895404",
"modified": "2022-03-01 18:31:44.895404",
"modified_by": "thierry@dokos.io",
"parent": null,
"parentfield": null,
"parenttype": null,
"idx": 0,
"docstatus": 0,
"title": "{customer_name}",
"naming_series": "SAL-ORD-.YYYY.-",
"customer": "Roslyn L\u00e9picier",
"customer_name": "Roslyn L\u00e9picier",
"order_type": "Sales",
"skip_delivery_note": 0,
"amended_from": null,
"company": "MappeMonde",
"transaction_date": "2022-03-01",
"delivery_date": "2022-04-01",
"po_no": null,
"po_date": null,
"tax_id": null,
"customer_address": "Roslyn L\u00e9picier-Facturation",
"address_display": "23 rue Clement Marot<br>66100 PERPIGNAN<br>\nFrance<br>\n",
"contact_person": "Roslyn L\u00e9picier-Roslyn L\u00e9picier",
"contact_display": "Roslyn L\u00e9picier",
"contact_phone": "04.37.73.66.41",
"contact_mobile": "",
"contact_email": "RoslynLepicier@armyspy.com",
"company_address": null,
"company_address_display": null,
"shipping_address_name": "Roslyn L\u00e9picier-Facturation",
"shipping_address": "23 rue Clement Marot<br>66100 PERPIGNAN<br>\nFrance<br>\n",
"customer_group": "Tous les Groupes Client",
"territory": "Tous les Territoires",
"currency": "EUR",
"conversion_rate": 1.0,
"selling_price_list": "Vente Standard",
"price_list_currency": "EUR",
"plc_conversion_rate": 1.0,
"ignore_pricing_rule": 0,
"set_warehouse": null,
"scan_barcode": null,
"total_qty": 1.0,
"base_total": 5.0,
"base_net_total": 5.0,
"total_net_weight": 0.0,
"total": 5.0,
"net_total": 5.0,
"tax_category": "",
"shipping_rule": null,
"taxes_and_charges": null,
"other_charges_calculation": null,
"base_total_taxes_and_charges": 0.0,
"total_taxes_and_charges": 0.0,
"loyalty_points": 0,
"loyalty_amount": 0.0,
"coupon_code": null,
"apply_discount_on": "Grand Total",
"base_discount_amount": 0.0,
"additional_discount_percentage": 0.0,
"discount_amount": 0.0,
"base_grand_total": 5.0,
"base_rounding_adjustment": 0.0,
"base_rounded_total": 5.0,
"base_in_words": "Five Euro",
"grand_total": 5.0,
"rounding_adjustment": 0.0,
"rounded_total": 5.0,
"in_words": "Five Euro",
"advance_paid": 0.0,
"disable_rounded_total": 0,
"payment_terms_template": null,
"tc_name": null,
"terms": null,
"is_internal_customer": 0,
"represents_company": null,
"inter_company_order_reference": null,
"project": null,
"party_account_currency": null,
"source": null,
"campaign": null,
"external_reference": null,
"language": "fr",
"letter_head": null,
"select_print_heading": null,
"group_same_items": 0,
"status": "Draft",
"delivery_status": "Not Delivered",
"per_delivered": 0.0,
"per_billed": 0.0,
"billing_status": "Not Billed",
"sales_partner": null,
"commission_rate": 0.0,
"total_commission": 0.0,
"from_date": null,
"to_date": null,
"subscription": null,
"auto_repeat": null,
"doctype": "Sales Order",
"items": [
{
"name": "5317c1c489",
"owner": "thierry@dokos.io",
"creation": "2022-03-01 18:31:44.895404",
"modified": "2022-03-01 18:31:44.895404",
"modified_by": "thierry@dokos.io",
"parent": "SAL-ORD-2022-00116",
"parentfield": "items",
"parenttype": "Sales Order",
"idx": 1,
"docstatus": 0,
"item_code": "Salle de coworking",
"customer_item_code": null,
"ensure_delivery_based_on_produced_serial_no": 0,
"delivery_date": "2022-04-01",
"item_name": "Salle de coworking",
"description": "<div><p>R\u00e9servez votre place dans notre salle de coworking</p></div>",
"item_group": "Coworking",
"brand": null,
"image": "/assets/tierslieux/images/coworking.jpg",
"qty": 1.0,
"stock_uom": "Heure",
"uom": "Heure",
"conversion_factor": 1.0,
"stock_qty": 1.0,
"price_list_rate": 5.0,
"base_price_list_rate": 5.0,
"margin_type": "",
"margin_rate_or_amount": 0.0,
"rate_with_margin": 0.0,
"discount_percentage": 0.0,
"discount_amount": 0.0,
"base_rate_with_margin": 0.0,
"rate": 5.0,
"amount": 5.0,
"item_tax_template": null,
"base_rate": 5.0,
"base_amount": 5.0,
"pricing_rules": "[]",
"stock_uom_rate": 5.0,
"is_free_item": 0,
"net_rate": 5.0,
"net_amount": 5.0,
"base_net_rate": 5.0,
"base_net_amount": 5.0,
"billed_amt": 0.0,
"valuation_rate": 0.0,
"gross_profit": 5.0,
"delivered_by_supplier": 0,
"supplier": null,
"weight_per_unit": 0.0,
"total_weight": 0.0,
"weight_uom": null,
"warehouse": "Magasins - MM",
"target_warehouse": null,
"prevdoc_docname": null,
"against_blanket_order": 0,
"blanket_order": null,
"blanket_order_rate": 0.0,
"bom_no": null,
"projected_qty": 0.0,
"actual_qty": 0.0,
"ordered_qty": 0.0,
"planned_qty": 0.0,
"work_order_qty": 0.0,
"delivered_qty": 0.0,
"produced_qty": 0.0,
"returned_qty": 0.0,
"additional_notes": null,
"item_booking": "STO-BOOK-2022-00102",
"page_break": 0,
"item_tax_rate": "[]",
"transaction_date": "2022-03-01",
"doctype": "Sales Order Item",
"__unsaved": 1
}
],
"pricing_rules": [],
"taxes": [],
"packed_items": [],
"payment_schedule": [
{
"name": "242d92065b",
"owner": null,
"creation": "2022-03-01 18:31:45.484130",
"modified": "2022-03-01 18:31:45.484130",
"modified_by": "thierry@dokos.io",
"parent": "SAL-ORD-2022-00116",
"parentfield": "payment_schedule",
"parenttype": "Sales Order",
"idx": 1,
"docstatus": 0,
"payment_term": null,
"description": null,
"due_date": "2022-03-01",
"mode_of_payment": null,
"invoice_portion": 100.0,
"discount_type": null,
"discount_date": null,
"discount": 0.0,
"payment_amount": 5.0,
"outstanding": 5.0,
"paid_amount": 0.0,
"discounted_amount": 0.0,
"base_payment_amount": 5.0,
"doctype": "Payment Schedule"
}
],
"sales_team": []
}
}
Vous pouvez trouver d'autres méthodes d'API disponibles dans ce fichier: https://gitlab.com/dokos/dodock/-/blob/develop/frappe/client.py
Vous pouvez créer une facture depuis une commande existante en appelant l'API suivante:
http://localhost:8000/api/method/erpnext.selling.doctype.sales_order.sales_order.make_sales_invoice
Corps de l'appel:
{
"source_name": "SAL-ORD-2022-00116"
}
Ensuite il ne vous reste plus qu'à poster la facture directement ou via les API de frappe.client
Vous pouvez modifier le contenu de la facture avant de la poster, pour changer les quantités ou montants facturés par exemple.
Vous pouvez créer un paiement à partir d'une commande en appelant l'API suivante:
http://localhost:8000/api/method/erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry
Corps de l'appel:
{
"dt": "Sales Order",
"dn": "SAL-ORD-2022-00116"
}
Ensuite il ne vous reste plus qu'à poster le paiement directement ou via les API de frappe.client