vosfactures

package module
v0.0.0-...-1ecbf6b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2021 License: MIT Imports: 6 Imported by: 0

README

Golang VosFactures

Implémentation sommaire de l'API VosFactures en Golang.

Ce projet n'est pas complet, il l'est suffisamment pour les fonctionnalités de bases à savoir créer et modifier un département, un client, une catégorie, un produit, une facture, pour toutes corrections ou améliorations, je serai ravis de merge vos pull requests.

Doc officiel

https://github.com/vosfactures/api

Point de départ
t := "xxxyyyzz" // token Vosfactures
a := "votrecompte" // utilisateur Vosfactures
vf := vosfactures.New(t, a)
Catégories VosFactures

cmd/categories/main.go

Créer une catégorie
c := vosfactures.Category{
    Name: "Fruits",
}
vfCat, err := vf.CreateCategory(&c)
if err != nil {
    log.Println(err)
}
Voir une catégorie
vfCat, err := vf.GetCategory(1234)
if err != nil {
    log.Println(err)
}
Lister les catégories
vfCats, err := vf.ListCategories(1)
if err != nil {
    log.Println(err)
}
Mettre à jour une catégorie
c := vosfactures.Category{
    ID:   1234,
    Name: "Fruits",
}
vfCat, err := vf.UpdateCategory(&c)
if err != nil {
    log.Println(err)
}
Supprimer une catégorie
if err := vf.DeleteCategory(1234); err != nil {
    log.Println(err)
}
Produits VosFactures

cmd/products/main.go

Créer un produit
p := vosfactures.Product{
    Name: "Pomme",
}
vfProd, err := vf.CreateProduct(&p)
if err != nil {
    log.Println(err)
}
Voir un produit
vfProd, err := vf.GetProduct(1234)
if err != nil {
    log.Println(err)
}
Lister les produits
vfProds, err := vf.ListProducts(1)
if err != nil {
    log.Println(err)
}
Mettre à jour un produit
p := vosfactures.Product{
    ID:   1234,
    Name: "Pomme",
}
vfProd, err := vf.UpdateProduct(&p)
if err != nil {
    log.Println(err)
}
Supprimer un produit
if err := vf.DeleteProduct(1234); err != nil {
    log.Println(err)
}
Clients VosFactures

cmd/clients/main.go

Créer un client
p := vosfactures.Client{
    Name: "Jean Bon",
}
vfClient, err := vf.CreateClient(&p)
if err != nil {
    log.Println(err)
}
Voir un client
vfClient, err := vf.GetClient(1234)
if err != nil {
    log.Println(err)
}
Lister les clients
vfClients, err := vf.ListClients(1)
if err != nil {
    log.Println(err)
}
Mettre à jour un client
p := vosfactures.Client{
    ID:   1234,
    Name: "Jean Bon",
}
vfClient, err := vf.UpdateClient(&p)
if err != nil {
    log.Println(err)
}
Supprimer un client
if err := vf.DeleteClient(1234); err != nil {
    log.Println(err)
}
Département VosFactures

cmd/clients/main.go

Créer un département
p := vosfactures.Department{
    Name: "Légumes companie",
}
vfDep, err := vf.CreateDepartment(&p)
if err != nil {
    log.Println(err)
}
Voir un département
vfDep, err := vf.GetDepartment(1234)
if err != nil {
    log.Println(err)
}
Lister les départements
vfDeps, err := vf.ListDepartments(1)
if err != nil {
    log.Println(err)
}
Mettre à jour un département
p := vosfactures.Department{
    ID:   1234,
    Name: "Légumes companie",
}
vfDep, err := vf.UpdateDepartment(&p)
if err != nil {
    log.Println(err)
}
Supprimer un département
if err := vf.DeleteDepartment(1234); err != nil {
    log.Println(err)
}
Factures VosFactures

cmd/ivoices/main.go

Créer une facture
// Créer une facture
	c := vosfactures.Document{
		DepartmentID: 1234,
		ClientID:     1234,
		Positions: []*vosfactures.Position{
			&vosfactures.Position{
				ProductID: 1234,
				Quantity:  2,
			},
		},
	}
	vfInv, err := vf.CreateInvoice(&c)
	if err != nil {
		log.Println(err)
	}
Voir une facture
vfInv, err = vf.GetInvoice(vfInv.ID)
if err != nil {
    log.Println(err)
}
Lister les factures
vfInvs, err := vf.ListInvoices(1)
if err != nil {
    log.Println(err)
}
Mettre à jour une facture
p := vosfactures.Document{
    ID:           vfInv.ID,
    DepartmentID: 1234,
    ClientID:     1234,
    Positions: []*vosfactures.Position{
        &vosfactures.Position{
            ProductID: 1234,
            Quantity:  2,
        },
    },
}
vfInv, err = vf.UpdateInvoice(&p)
if err != nil {
    log.Println(err)
}

Supprimer une facture
if err := vf.DeleteInvoice(vfInv.ID); err != nil {
    log.Println(err)
}
Envoyer une facture par email
if err := vf.SendInvoiceByMail(vfInv.ID); err != nil {
    log.Println(err)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AdditionalFields

type AdditionalFields struct {
	OverduePrintTitle      string      `json:"overdue_print_title"`
	OverduePrintTextKind   string      `json:"overdue_print_text_kind"`
	OverduePrintTemplateID string      `json:"overdue_print_template_id"`
	OverduePrintText       interface{} `json:"overdue_print_text"`
	PatternPaymentReceipt  string      `json:"pattern_payment_receipt"`
}

type CalculatingStrategy

type CalculatingStrategy struct {
	Position             string `json:"position,omitempty"`                // ou "keep_gross" - Comment se calcule le total de chaque ligne
	Sum                  string `json:"sum,omitempty"`                     // ou "keep_gross" ou "keep_net" - Comment se calcule le total des colonnes
	InvoiceFormPriceKind string `json:"invoice_form_price_kind,omitempty"` // ou "gross" - prix unitaire (HT ou TTC)
}

type Category

type Category struct {
	ID          int64     `json:"id,omitempty"`
	Name        string    `json:"name,omitempty"`
	Description string    `json:"description,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
	AltName     string    `json:"alt_name"`
	ProductTags string    `json:"product_tags"`
}

type Client

type Client struct {
	ID          int64  `json:"id,omitempty"`
	Name        string `json:"name,omitempty"`
	TaxNo       string `json:"tax_no,omitempty"`
	Bank        string `json:"bank,omitempty"`
	BankAccount string `json:"bank_account,omitempty"`
	City        string `json:"city,omitempty"`
	Country     string `json:"country,omitempty"`
	Email       string `json:"email,omitempty"`
	Person      string `json:"person,omitempty"`
	PostCode    string `json:"post_code,omitempty"`
	Phone       string `json:"phone,omitempty"`
	MobilePhone string `json:"mobile_phone,omitempty"`
	Street      string `json:"street,omitempty"`
	PanelURL    string `json:"panel_url,omitempty"`
}

type Department

type Department struct {
	ID                           int64            `json:"id,omitempty"`
	Shortcut                     string           `json:"shortcut,omitempty"`
	Name                         string           `json:"name,omitempty"`
	TaxNo                        string           `json:"tax_no,omitempty"`
	PostCode                     string           `json:"post_code,omitempty"`
	City                         string           `json:"city,omitempty"`
	Street                       string           `json:"street,omitempty"`
	Person                       string           `json:"person,omitempty"`
	Country                      string           `json:"country,omitempty"`
	Email                        string           `json:"email,omitempty"`
	Phone                        string           `json:"phone,omitempty"`
	Www                          string           `json:"www,omitempty"`
	Fax                          string           `json:"fax,omitempty"`
	LogoFileName                 interface{}      `json:"logo_file_name,omitempty"`
	LogoContentType              interface{}      `json:"logo_content_type,omitempty"`
	LogoFileSize                 interface{}      `json:"logo_file_size,omitempty"`
	LogoUpdatedAt                interface{}      `json:"logo_updated_at,omitempty"`
	UsePattern                   bool             `json:"use_pattern,omitempty"`
	InvoicePattern               string           `json:"invoice_pattern,omitempty"`
	Bank                         string           `json:"bank,omitempty"`
	BankAccount                  string           `json:"bank_account,omitempty"`
	CreatedAt                    time.Time        `json:"created_at,omitempty"`
	UpdatedAt                    time.Time        `json:"updated_at,omitempty"`
	InvoicePatternBill           string           `json:"invoice_pattern_bill,omitempty"`
	InvoicePatternProforma       string           `json:"invoice_pattern_proforma,omitempty"`
	InvoicePatternCorrection     string           `json:"invoice_pattern_correction,omitempty"`
	WarehouseID                  interface{}      `json:"warehouse_id,omitempty"`
	RestrictWarehouses           bool             `json:"restrict_warehouses,omitempty"`
	Deleted                      bool             `json:"deleted,omitempty"`
	InvoicePatternReceipt        string           `json:"invoice_pattern_receipt,omitempty"`
	InvoicePatternAdvance        string           `json:"invoice_pattern_advance,omitempty"`
	InvoicePatternFinal          string           `json:"invoice_pattern_final,omitempty"`
	PatternVatRr                 string           `json:"pattern_vat_rr,omitempty"`
	PatternVatMp                 string           `json:"pattern_vat_mp,omitempty"`
	PatternVatMargin             string           `json:"pattern_vat_margin,omitempty"`
	TaxNoKind                    string           `json:"tax_no_kind,omitempty"`
	Main                         bool             `json:"main,omitempty"`
	StampFileName                interface{}      `json:"stamp_file_name,omitempty"`
	StampContentType             interface{}      `json:"stamp_content_type,omitempty"`
	StampFileSize                interface{}      `json:"stamp_file_size,omitempty"`
	StampUpdatedAt               interface{}      `json:"stamp_updated_at,omitempty"`
	PatternPz                    string           `json:"pattern_pz,omitempty"`
	PatternWz                    string           `json:"pattern_wz,omitempty"`
	PatternMm                    string           `json:"pattern_mm,omitempty"`
	PatternKp                    string           `json:"pattern_kp,omitempty"`
	PatternKw                    string           `json:"pattern_kw,omitempty"`
	PatternInvoiceOther          string           `json:"pattern_invoice_other,omitempty"`
	PatternEstimate              string           `json:"pattern_estimate,omitempty"`
	UseMassPayment               bool             `json:"use_mass_payment,omitempty"`
	MassPaymentPattern           interface{}      `json:"mass_payment_pattern,omitempty"`
	Kind                         string           `json:"kind,omitempty"`
	MobilePhone                  string           `json:"mobile_phone,omitempty"`
	UseCorrespondenceAddress     bool             `json:"use_correspondence_address,omitempty"`
	CorrespondenceAddress        interface{}      `json:"correspondence_address,omitempty"`
	CapitalKind                  string           `json:"capital_kind,omitempty"`
	Capital                      string           `json:"capital,omitempty"`
	CapitalCurrency              string           `json:"capital_currency,omitempty"`
	TaxKind                      string           `json:"tax_kind,omitempty"`
	Register1Status              string           `json:"register1_status,omitempty"`
	Register1Number1             string           `json:"register1_number1,omitempty"`
	Register1Number2             string           `json:"register1_number2,omitempty"`
	Register1Number3             string           `json:"register1_number3,omitempty"`
	Register2Status              string           `json:"register2_status,omitempty"`
	Register2Number1             string           `json:"register2_number1,omitempty"`
	Register2Number2             string           `json:"register2_number2,omitempty"`
	Register2Number3             interface{}      `json:"register2_number3,omitempty"`
	Register3Status              string           `json:"register3_status,omitempty"`
	Register3Number1             string           `json:"register3_number1,omitempty"`
	Register3Number2             string           `json:"register3_number2,omitempty"`
	Register3Number3             string           `json:"register3_number3,omitempty"`
	Register4Status              string           `json:"register4_status,omitempty"`
	Register4Number1             interface{}      `json:"register4_number1,omitempty"`
	Register4Number2             interface{}      `json:"register4_number2,omitempty"`
	Register4Number3             interface{}      `json:"register4_number3,omitempty"`
	Register5Status              interface{}      `json:"register5_status,omitempty"`
	Register5Number1             interface{}      `json:"register5_number1,omitempty"`
	Register5Number2             interface{}      `json:"register5_number2,omitempty"`
	Register5Number3             interface{}      `json:"register5_number3,omitempty"`
	BankAccountName              interface{}      `json:"bank_account_name,omitempty"`
	BankIban                     interface{}      `json:"bank_iban,omitempty"`
	BankSwift                    string           `json:"bank_swift,omitempty"`
	OwnEmailSettings             bool             `json:"own_email_settings,omitempty"`
	EmailFrom                    string           `json:"email_from,omitempty"`
	EmailCc                      string           `json:"email_cc,omitempty"`
	EmailSubject                 string           `json:"email_subject,omitempty"`
	EmailTemplate                interface{}      `json:"email_template,omitempty"`
	EmailTemplateKind            string           `json:"email_template_kind,omitempty"`
	EmailPdf                     bool             `json:"email_pdf,omitempty"`
	OwnOverdueEmailSettings      bool             `json:"own_overdue_email_settings,omitempty"`
	OverdueEmailSubject          string           `json:"overdue_email_subject,omitempty"`
	OverdueEmailTemplate         interface{}      `json:"overdue_email_template,omitempty"`
	OverdueEmailTemplateKind     string           `json:"overdue_email_template_kind,omitempty"`
	OverdueEmailPdf              bool             `json:"overdue_email_pdf,omitempty"`
	InvoiceLang                  interface{}      `json:"invoice_lang,omitempty"`
	InvoiceDescription           string           `json:"invoice_description,omitempty"`
	BankAccountCurrency          string           `json:"bank_account_currency,omitempty"`
	PatternZt                    string           `json:"pattern_zt,omitempty"`
	InvoicePatternCorrectionNote string           `json:"invoice_pattern_correction_note,omitempty"`
	PatternClientOrder           string           `json:"pattern_client_order,omitempty"`
	InvoicePatternAccountingNote string           `json:"invoice_pattern_accounting_note,omitempty"`
	OwnFooter                    bool             `json:"own_footer,omitempty"`
	FooterContent                string           `json:"footer_content,omitempty"`
	CalculateNumberByPatternOnly bool             `json:"calculate_number_by_pattern_only,omitempty"`
	FooterKind                   string           `json:"footer_kind,omitempty"`
	UseInvoiceIssuer             bool             `json:"use_invoice_issuer,omitempty"`
	CashInitState                interface{}      `json:"cash_init_state,omitempty"`
	InvoiceTemplateID            interface{}      `json:"invoice_template_id,omitempty"`
	AdditionalFields             AdditionalFields `json:"additional_fields,omitempty"`
	DefaultTax                   string           `json:"default_tax,omitempty"`
	LumpSumTaxed                 bool             `json:"lump_sum_taxed,omitempty"`
	DefaultLumpSumTax            interface{}      `json:"default_lump_sum_tax,omitempty"`
	RegisterNumber               interface{}      `json:"register_number,omitempty"`
	SecStampFileName             interface{}      `json:"sec_stamp_file_name,omitempty"`
	SecStampContentType          interface{}      `json:"sec_stamp_content_type,omitempty"`
	SecStampFileSize             interface{}      `json:"sec_stamp_file_size,omitempty"`
	SecStampUpdatedAt            interface{}      `json:"sec_stamp_updated_at,omitempty"`
}

type DiscountKind

type DiscountKind string
const (
	DiscountKindPercentUnit  DiscountKind = "percent_unit"  // - % calculé sur le prix unitaire
	DiscountKindPercentTotal DiscountKind = "percent_total" // - % calculé sur le montant total
	DiscountKindAmount       DiscountKind = "amount"        // - montant
)

type Document

type Document struct {
	ID                      int64                `json:"id,omitempty"`
	Number                  string               `json:"number,omitempty"`              // numéro du document (généré automatiquement si non indiqué)
	Kind                    Kind                 `json:"kind,omitempty"`                // type du document : "vat" pour facture,
	Correction              string               `json:"correction,omitempty"`          // pour avoir,
	Receipt                 string               `json:"receipt,omitempty"`             // pour reçu,
	Advance                 string               `json:"advance,omitempty"`             // pour facture d'acompte,
	Final                   string               `json:"final,omitempty"`               // pour facture de solde,
	InvoiceOther            string               `json:"invoice_other,omitempty"`       // pour autre type de document comptable,
	Estimate                string               `json:"estimate,omitempty"`            // pour devis,
	Proforma                string               `json:"proforma,omitempty"`            // pour facture proforma,
	ClientOrder             string               `json:"client_order,omitempty"`        // pour bon de commande client,
	MaintenanceRequest      string               `json:"maintenance_request,omitempty"` // pour bon d'intervention,
	PaymentReceipt          string               `json:"payment_receipt,omitempty"`     // pour reçu de paiment,
	Kw                      string               `json:"kw,omitempty"`                  // pour versements en espèces,
	Kp                      string               `json:"kp,omitempty"`                  // pour reçus en espèces.
	Income                  Income               `json:"income,omitempty"`              // revenu (1) ou dépense (0)
	UserID                  int64                `json:"user_id,omitempty"`             // numéro ID de l'utilisateur ayant créé le document (en cas de compte Multi-utilisateurs : https: //aide.vosfactures.fr/2703898-Multi-utilisateurs-cr-ation-fonctions-et-restrictions)
	IssueDate               string               `json:"issue_date,omitempty"`          // date de création
	Place                   string               `json:"place,omitempty"`               // lieu de création
	SellDate                string               `json:"sell_date,omitempty"`           // date additionnelle (ex: date de vente) : date complète ou juste mois et année:YYYY-MM. Pour ne pas faire apparaître cette date, indiquez "off" (ou décochez l'option "Afficher la Date additionnelle" depuis vos paramètres du compte).
	Test                    bool                 `json:"test,omitempty"`                // ou "false" document test ou non (en savoir plus ici: http: //aide.vosfactures.fr/15399051-Cr-er-un-Document-ou-Paiement-Test)
	CategoryID              int64                `json:"category_id,omitempty"`         // ID ou Nom de la catégorie : le système va d'abord regarder si la valeur renseignée correspond à un n° ID d'une catégorie existante, et ensuite à un Nom d'une catégorie existante. Si aucune valeur ne correspond, le système va créer une  nouvelle catégorie.
	DepartmentID            int64                `json:"department_id,omitempty"`       // ID du département vendeur (depuis Paramètres > Compagnies/Départments, cliquer sur le nom de la compagnie/département pour visualiser l'ID dans l'url affiché). Le système affichera alors automatiquement les coordonnées du département vendeur (nom, adresse...) sur le document (les autres champs "seller_" ne sont plus nécessaires).
	SellerName              string               `json:"seller_name,omitempty"`         // Nom du département vendeur. Si ce champ n'est pas renseigné, le département principal est sélectionné par défaut. Préférez plutôt "department_id". Si vous utilisez toutefois "seller_name", le système tentera d'identifier le département portant ce nom, sinon il créera un nouveau département.
	SellerTaxNo             string               `json:"seller_tax_no,omitempty"`       // numéro d'identification fiscale du vendeur (ex: n° TVA)
	SellerTaxNoKind         string               `json:"seller_tax_no_kind,omitempty"`  // initulé du numéro d'identification du vendeur : si non renseigné, il s'agit de "Numéro TVA", sinon il faut spécifier l'intitulé préalablement listé dans vos paramètres du compte, comme par exemple "SIREN" ou "CIF" (en savoir plus ici: http: //aide.vosfactures.fr/1802938-Num-ro-d-identification-fiscale-de-votre-entreprise-TVA-SIREN-IDE-CIF-)
	SellerBankAccount       string               `json:"seller_bank_account,omitempty"` // coordonnées bancaires du vendeur
	SellerBank              string               `json:"seller_bank,omitempty"`         // domiciliation bancaire
	SellerBankSwift         string               `json:"seller_bank_swift,omitempty"`   // code bancaire BIC. Attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"seller_bank_swift": "BIC"} lors de la création d'un document de facturation.
	SellerPostCode          string               `json:"seller_post_code,omitempty"`    // code postal du vendeur
	SellerCity              string               `json:"seller_city,omitempty"`         // ville du vendeur
	SellerStreet            string               `json:"seller_street,omitempty"`       // numéro et nom de rue du vendeur
	SellerCountry           string               `json:"seller_country,omitempty"`      // pays du vendeur (ISO 3166)
	SellerEmail             string               `json:"seller_email,omitempty"`        // email du vendeur
	SellerWww               string               `json:"seller_www,omitempty"`          // site internet du vendeur
	SellerFax               string               `json:"seller_fax,omitempty"`          // numéro de fax du vendeur
	SellerPhone             string               `json:"seller_phone,omitempty"`        // numéro de tel du vendeur
	SellerPerson            string               `json:"seller_person,omitempty"`       // Nom du vendeur (figurant en bas de page des documents)
	ClientID                int64                `json:"client_id,omitempty"`           // ID du contact (si la valeur est -1 alors le contact sera créé et ajouté à la liste des contacts)
	BuyerName               string               `json:"buyer_name,omitempty"`          // nom du contact (acheteur en cas de vente ou fournisseur en cas d'achat)
	BuyerFirstName          string               `json:"buyer_first_name,omitempty"`    // du contact
	BuyerLastName           string               `json:"buyer_last_name,omitempty"`     // du contact
	BuyerCompany            bool                 `json:"buyer_company,omitempty"`       // si le contact est un professionnel, "0" si c'est un particulier
	BuyerTitle              string               `json:"buyer_title,omitempty"`         // Civilité du contact. Attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"buyer_title"":"Mme"} lors de la création d'un document de facturation.
	BuyerTaxNo              string               `json:"buyer_tax_no,omitempty"`        // numéro d'identification fiscale du contact (ex: n° TVA)
	BuyerTaxNoKind          string               `json:"buyer_tax_no_kind,omitempty"`   // intitulé du numéro d'identification du contact : si non renseigné, il s'agit de "Numéro TVA", sinon il faut spécifier l'intitulé préalablement listé dans vos paramètres du compte, comme par exemple "SIREN" ou "CIF" (en savoir plus ici: https: //aide.vosfactures.fr/19032497-Num-ro-d-identification-fiscale-des-contacts)
	DisableTaxNoValidation  string               `json:"disable_tax_no_validation,omitempty"`
	UseMoss                 bool                 `json:"use_moss,omitempty"`                 // document sous le régime "Moss" (1) ou non (0) : régime de l'Autoliquidation de la TVA. En savoir plus ici: http: //vosfactures.fr/tva-moss
	BuyerPostCode           string               `json:"buyer_post_code,omitempty"`          // code postal du contact
	BuyerCity               string               `json:"buyer_city,omitempty"`               // ville du contact
	BuyerStreet             string               `json:"buyer_street,omitempty"`             // numéro et nom de rue du contact
	BuyerCountry            string               `json:"buyer_country,omitempty"`            // pays du contact (ISO 3166)
	BuyerNote               string               `json:"buyer_note,omitempty"`               // description additionnelle du contact
	DeliveryAddress         string               `json:"delivery_address,omitempty"`         // contenu du champ "Adresse supplémentaire" du contact
	UseDeliveryAddress      bool                 `json:"use_delivery_address,omitempty"`     // ou "false" afficher ou non le champ "Adresse supplémentaire" du contact sur le document
	BuyerEmail              string               `json:"buyer_email,omitempty"`              // email du contact
	BuyerPhone              string               `json:"buyer_phone,omitempty"`              // numéro de tel du contact
	BuyerMobilePhone        string               `json:"buyer_mobile_phone,omitempty"`       // numéro de portable du contact
	AdditionalInfo          bool                 `json:"additional_info,omitempty"`          // afficher (1) ou non (0) la colonne aditionnelle sur le document de facturation (dont l'intitulé est à définir dans Paramètres du compte > Options par défaut)
	AdditionalInfoDesc      string               `json:"additional_info_desc,omitempty"`     // contenu de la colonne aditionnelle (contenu que vous retrouvez sur la fiche du produit correspondant)
	AdditionalInvoiceField  string               `json:"additional_invoice_field,omitempty"` // contenu du champ additionnel (dont l'intitulé est à définir dans Paramètres du compte > Options par défaut). Attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"additional_invoice_field": "contenu"} lors de la création d'un document de facturation.
	ShowDiscount            bool                 `json:"show_discount,omitempty"`            // afficher (1) ou non (0) la colonne réduction
	Discount                string               `json:"discount,omitempty"`
	DiscountKind            DiscountKind         `json:"discount_kind,omitempty"`             // type de réduction: "amount" (pour un montant ttc),
	PercentUnit             string               `json:"percent_unit,omitempty"`              // (pour un % sur le prix unitaire), ou  "percent_total" (pour un % calculé sur le prix total)
	PaymentType             PaymentType          `json:"payment_type,omitempty"`              // "chèque" - mode de règlement
	PaymentToKind           string               `json:"payment_to_kind,omitempty"`           // date limite de règlement (parmi les options proposées). Si l'option est "Autre" ("other_date"), vous pouvez définir une date spécifique grâce au champ "payment_to". Si vous indiquez "5", la date d'échéance est de 5 jours. Pour ne pas afficher ce champ, indiquez "off".
	PaymentTo               string               `json:"payment_to,omitempty"`                // date limite de règlement
	SumRecovery             string               `json:"sum_recovery,omitempty"`              // afficher (client_professionnel) ou non (client_particulier) la mention "Indemnité forfaitaire de recouvrement". Attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"sum_recovery": "client_professionnel"} lors de la création d'un document de facturation.
	InterestRate            string               `json:"interest_rate,omitempty"`             // Taux de pénalité en cas de retard de paiement (attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"interest_rate": "10%"} lors de la création d'un document de facturation.
	AdvancedPaymentDiscount string               `json:"advanced_payment_discount,omitempty"` // Escompte en % (attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": { "advanced_payment_discount": "10"} lors de la création d'un document de facturation)
	Status                  Status               `json:"status,omitempty"`                    // état du document
	Paid                    string               `json:"paid,omitempty"`                      // montant payé
	Oid                     string               `json:"oid,omitempty"`                       // numéro de commande (ex: numéro généré par une application externe)
	OidUnique               string               `json:"oid_unique,omitempty"`                // si la valeur est «yes», alors il ne sera pas permis au système de créer 2 factures avec le même OID (cela peut être utile en cas de synchronisation avec une boutique en ligne)
	WarehouseID             int64                `json:"warehouse_id,omitempty"`              // numéro d'identification de l'entrepôt
	Description             string               `json:"description,omitempty"`               // Informations spécifiques
	PaidDate                string               `json:"paid_date,omitempty"`                 // Date du paiement ("Paiement reçu le")
	Currency                string               `json:"currency,omitempty"`                  // devise
	Lang                    Lang                 `json:"lang,omitempty"`                      // langue du document
	ExchangeCurrency        string               `json:"exchange_currency,omitempty"`         // convertir en (la conversion en une autre devise du montant total et du montant de la taxe selon taux de change du jour)
	ExchangeKind            string               `json:"exchange_kind,omitempty"`             // Source du taux de change utilisé en cas de conversion ("ecb" pour la Banque Centrale Européenne, "nbp" pour la Banque Nationale de Pologne, "cbr" pour la Banque Centrale de Russie, "nbu" pour la Banque Nationale d'Ukraine, "nbg" pour la Banque Nationale de Géorgie, "nbt" Banque Nationale Tchèque, "own" pour un taux propre)
	ExchangeCurrencyRate    string               `json:"exchange_currency_rate,omitempty"`    // taux de change propre (à utiliser uniquement si le paramètre "exchange_kind" est égal à "own") "title": "" Objet (attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"title": "contenu de l'objet"} lors de la création d'un document de facturation).
	InternalNote            string               `json:"internal_note,omitempty"`             // Notes privées
	InvoiceTemplateID       int64                `json:"invoice_template_id,omitempty"`       // format d'impression
	DescriptionLong         string               `json:"description_long,omitempty"`          // Texte additionnel (imprimé sur la page suivante)
	FromInvoiceID           int64                `json:"from_invoice_id,omitempty"`           // ID du document à partir duquel le document a été généré (utile par ex quand une facture est générée depuis un devis)
	InvoiceID               int64                `json:"invoice_id,omitempty"`                // ID du document de référence ayant un lien fonctionnel avec le document (ex: le devis de référence pour un acompte).
	Positions               []*Position          `json:"positions,omitempty"`
	HideTax                 string               `json:"hide_tax,omitempty"` // Montant TTC uniquement (ne pas afficher de montant HT ni de taxe) (attention, en json vous devez envoyer ce paramètre comme ceci: "additional_fields": {"hide_tax": "1"    } lors de la création d'un document de facturation)
	CalculatingStrategy     *CalculatingStrategy `json:"calculating_strategy,omitempty"`
	SplitPayment            string               `json:"split_payment,omitempty"` // 1 ou 0 selon que la facture fait ou non l'objet d'un paiement partiel
}

type Income

type Income bool
const (
	IncomeSale     Income = true  // - vente
	IncomePurchase Income = false // - achat
)

type Kind

type Kind string
const (
	KindVat          Kind = "vat"           // - facture
	KindProforma     Kind = "proforma"      // - facture Proforma
	KindAdvance      Kind = "advance"       // - facture d'acompte
	KindFinal        Kind = "final"         // - facture de solde
	KindCorrection   Kind = "correction"    // - facture d'avoir
	KindEstimate     Kind = "estimate"      // - devis
	KindClientOrder  Kind = "client_order"  // - bon de commande
	KindReceipt      Kind = "receipt"       // - reçu
	KindKp           Kind = "kp"            // - bon d'entrée de caisse
	KindKw           Kind = "kw"            // - bon de sortie de caisse
	KindInvoiceOther Kind = "invoice_other" // - Autre
)

type Lang

type Lang string
const (
	LangEN Lang = "en" // - Anglais
	LangDE Lang = "de" // - Allemand
	LangFR Lang = "fr" // - Français
	LangHE Lang = "he" // - Grec
	LangES Lang = "es" // - Espagnol
	LangIT Lang = "it" // - Italien
	LangNL Lang = "nl" // - Hollandais
	LangCZ Lang = "cz" // - Tchèque
	LangHR Lang = "hr" // - Croate
	LangPL Lang = "pl" // - Polonais
	LangHU Lang = "hu" // - Hongrois
	LangSK Lang = "sk" // - Slovaque
	LangSL Lang = "sl" // - Slovène
	LangET Lang = "et" // - Estonien
	LangRU Lang = "ru" // - Russe
	LangCN Lang = "cn" // - Chinois
	LangAR Lang = "ar" // - Arabe
	LangTR Lang = "tr" // - Turc
	LangFA Lang = "fa" // - Persan
)

type PaymentType

type PaymentType string
const (
	PaymentTypeTransfer PaymentType = "transfer" // - virement bancaire
	PaymentTypeCard     PaymentType = "card"     // - carte bancaire
	PaymentTypeCash     PaymentType = "cash"     // -  espèce
	PaymentTypeCheque   PaymentType = "cheque"   // - chèque
	PaymentTypePaypal   PaymentType = "paypal"   // - PayPal
	PaymentTypeLcr      PaymentType = "lcr"      // - LCR Lettre de Change Relevé
	PaymentTypeOff      PaymentType = "off"      // - aucun (ne pas afficher)
)

type Position

type Position struct {
	ID              int64  `json:"id,omitempty"`                // ID du produit
	ProductID       int64  `json:"product_id,omitempty"`        // ID du produit
	Name            string `json:"name,omitempty"`              // nom du produit
	Description     string `json:"description,omitempty"`       // description du produit
	Code            string `json:"code,omitempty"`              // Référence du produit
	AdditionalInfo  bool   `json:"additional_info,omitempty"`   // contenu de la colonne additionnelle
	DiscountPercent string `json:"discount_percent,omitempty"`  // % de la réduction
	Discount        string `json:"discount,omitempty"`          // montant ttc de la réduction
	Quantity        int64  `json:"quantity,omitempty"`          // quantité
	QuantityUnit    string `json:"quantity_unit,omitempty"`     // unité
	PriceNet        string `json:"price_net,omitempty"`         // prix unitaire HT (calculé automatiquement si non indiqué)
	Tax             string `json:"tax,omitempty"`               // % de taxe (les valeurs "disabled" ou "np" rendent la taxe inactive)
	PriceGross      string `json:"price_gross,omitempty"`       // prix unitaire TTC (calculé automatiquement si non indiqué)
	TotalPriceNet   string `json:"total_price_net,omitempty"`   // total HT (calculé automatiquement si non indiqué)
	TotalPriceGross string `json:"total_price_gross,omitempty"` // total TTC
	Kind            string `json:"kind,omitempty"`              // pour insérer une ligne de texte (voir exemple plus bas) "kind": "subtotal", // - pour insérer un sous-total (voir exemple plus bas)
	Destroy         bool   `json:"_destroy,omitempty"`          // pour supprimer un article sur la facture, entrez l'ID du produit avec le paramètre "_destroy" égal à 1.

}

type Product

type Product struct {
	ID                        int64         `json:"id,omitempty"`
	Name                      string        `json:"name,omitempty"`
	Code                      string        `json:"code,omitempty"`
	PriceGross                string        `json:"price_gross,omitempty"` // TTC
	PriceNet                  string        `json:"price_net,omitempty"`   // HT
	Tax                       string        `json:"tax,omitempty"`
	CategoryID                int64         `json:"category_id,omitempty"`
	Currency                  string        `json:"currency,omitempty"` // EUR
	Description               interface{}   `json:"description,omitempty"`
	CreatedAt                 time.Time     `json:"created_at,omitempty"`
	UpdatedAt                 time.Time     `json:"updated_at,omitempty"`
	AutomaticSales            bool          `json:"automatic_sales,omitempty"`
	Limited                   bool          `json:"limited,omitempty"`
	WarehouseQuantity         string        `json:"warehouse_quantity,omitempty"`
	AvailableFrom             interface{}   `json:"available_from,omitempty"`
	AvailableTo               interface{}   `json:"available_to,omitempty"`
	PaymentCallback           interface{}   `json:"payment_callback,omitempty"`
	PaymentURLOk              interface{}   `json:"payment_url_ok,omitempty"`
	PaymentURLError           interface{}   `json:"payment_url_error,omitempty"`
	Token                     string        `json:"token,omitempty"`
	Quantity                  string        `json:"quantity,omitempty"`
	QuantityUnit              interface{}   `json:"quantity_unit,omitempty"`
	AdditionalInfo            interface{}   `json:"additional_info,omitempty"`
	Disabled                  bool          `json:"disabled,omitempty"`
	PriceTax                  string        `json:"price_tax,omitempty"`
	FormFieldsHorizontal      bool          `json:"form_fields_horizontal,omitempty"`
	FormFields                interface{}   `json:"form_fields,omitempty"`
	FormName                  string        `json:"form_name,omitempty"`
	FormDescription           interface{}   `json:"form_description,omitempty"`
	QuantitySoldOutside       interface{}   `json:"quantity_sold_outside,omitempty"`
	FormKind                  string        `json:"form_kind,omitempty"`
	FormTemplate              interface{}   `json:"form_template,omitempty"`
	ElasticPrice              bool          `json:"elastic_price,omitempty"`
	NextProductID             interface{}   `json:"next_product_id,omitempty"`
	QuantitySoldInInvoices    string        `json:"quantity_sold_in_invoices,omitempty"`
	Deleted                   bool          `json:"deleted,omitempty"`
	Ecommerce                 bool          `json:"ecommerce,omitempty"`
	Period                    interface{}   `json:"period,omitempty"`
	ShowElasticPrice          bool          `json:"show_elastic_price,omitempty"`
	ElasticPriceDetails       interface{}   `json:"elastic_price_details,omitempty"`
	ElasticPriceDateTrigger   interface{}   `json:"elastic_price_date_trigger,omitempty"`
	Iid                       interface{}   `json:"iid,omitempty"`
	PurchasePriceNet          interface{}   `json:"purchase_price_net,omitempty"`
	PurchasePriceGross        interface{}   `json:"purchase_price_gross,omitempty"`
	UseFormula                bool          `json:"use_formula,omitempty"`
	Formula                   interface{}   `json:"formula,omitempty"`
	FormulaTestField          interface{}   `json:"formula_test_field,omitempty"`
	StockLevel                string        `json:"stock_level,omitempty"`
	Sync                      bool          `json:"sync,omitempty"`
	Kind                      string        `json:"kind,omitempty"`
	Package                   bool          `json:"package,omitempty"`
	PackageProductIds         interface{}   `json:"package_product_ids,omitempty"`
	DepartmentID              interface{}   `json:"department_id,omitempty"`
	UseProductWarehouses      bool          `json:"use_product_warehouses,omitempty"`
	PurchasePriceTax          interface{}   `json:"purchase_price_tax,omitempty"`
	PurchaseTax               interface{}   `json:"purchase_tax,omitempty"`
	Service                   bool          `json:"service,omitempty"`
	UseQuantityDiscount       bool          `json:"use_quantity_discount,omitempty"`
	QuantityDiscountDetails   interface{}   `json:"quantity_discount_details,omitempty"`
	PriceNetOnPayment         bool          `json:"price_net_on_payment,omitempty"`
	WarehouseNumbersUpdatedAt interface{}   `json:"warehouse_numbers_updated_at,omitempty"`
	EanCode                   interface{}   `json:"ean_code,omitempty"`
	Weight                    interface{}   `json:"weight,omitempty"`
	WeightUnit                interface{}   `json:"weight_unit,omitempty"`
	SizeHeight                interface{}   `json:"size_height,omitempty"`
	SizeWidth                 interface{}   `json:"size_width,omitempty"`
	Size                      interface{}   `json:"size,omitempty"`
	SizeUnit                  interface{}   `json:"size_unit,omitempty"`
	AutoPaymentDepartmentID   interface{}   `json:"auto_payment_department_id,omitempty"`
	AttachmentsCount          int           `json:"attachments_count,omitempty"`
	ImageURL                  interface{}   `json:"image_url,omitempty"`
	Tax2                      string        `json:"tax2,omitempty"`
	PurchaseTax2              string        `json:"purchase_tax2,omitempty"`
	SupplierCode              interface{}   `json:"supplier_code,omitempty"`
	PackageProductsDetails    interface{}   `json:"package_products_details,omitempty"`
	SiteorDisabled            bool          `json:"siteor_disabled,omitempty"`
	UseMoss                   bool          `json:"use_moss,omitempty"`
	SubscriptionID            interface{}   `json:"subscription_id,omitempty"`
	AccountingID              interface{}   `json:"accounting_id,omitempty"`
	Status                    interface{}   `json:"status,omitempty"`
	RestrictedToWarehouses    bool          `json:"restricted_to_warehouses,omitempty"`
	GtuCodes                  []interface{} `json:"gtu_codes,omitempty"`
	TagList                   []interface{} `json:"tag_list,omitempty"`
	ElectronicService         interface{}   `json:"electronic_service,omitempty"`
}

type Status

type Status string
const (
	StatusIssued   Status = "issued"   // - Créé
	StatusSent     Status = "sent"     // - Envoyé
	StatusPaid     Status = "paid"     // - Payé
	StatusPartial  Status = "partial"  // - Payé en partie
	StatusRejected Status = "rejected" // - Refusé
	StatusAccepted Status = "accepted" // - Accepté
)

type VosFactures

type VosFactures struct {
	APIToken string
	Account  string
}

func New

func New(t, a string) *VosFactures

New create new VosFactures{}

func (*VosFactures) CreateCategory

func (vf *VosFactures) CreateCategory(category *Category) (*Category, error)

func (*VosFactures) CreateClient

func (vf *VosFactures) CreateClient(client *Client) (*Client, error)

func (*VosFactures) CreateDepartment

func (vf *VosFactures) CreateDepartment(department *Department) (*Department, error)

func (*VosFactures) CreateInvoice

func (vf *VosFactures) CreateInvoice(document *Document) (*Document, error)

func (*VosFactures) CreateProduct

func (vf *VosFactures) CreateProduct(product *Product) (*Product, error)

func (*VosFactures) DeleteCategory

func (vf *VosFactures) DeleteCategory(categoryID int64) error

func (*VosFactures) DeleteClient

func (vf *VosFactures) DeleteClient(clientID int64) error

func (*VosFactures) DeleteDepartment

func (vf *VosFactures) DeleteDepartment(departmentID int64) error

func (*VosFactures) DeleteInvoice

func (vf *VosFactures) DeleteInvoice(invoiceID int64) error

func (*VosFactures) DeleteProduct

func (vf *VosFactures) DeleteProduct(productID int64) error

func (*VosFactures) GetCategory

func (vf *VosFactures) GetCategory(categoryID int64) (*Category, error)

func (*VosFactures) GetClient

func (vf *VosFactures) GetClient(clientID int64) (*Client, error)

func (*VosFactures) GetDepartment

func (vf *VosFactures) GetDepartment(departmentID int64) (*Department, error)

func (*VosFactures) GetInvoice

func (vf *VosFactures) GetInvoice(invoiceID int64) (*Document, error)

func (*VosFactures) GetProduct

func (vf *VosFactures) GetProduct(productID int64) (*Product, error)

func (*VosFactures) ListCategories

func (vf *VosFactures) ListCategories(page int) ([]Category, error)

func (*VosFactures) ListClients

func (vf *VosFactures) ListClients(page int) ([]Client, error)

func (*VosFactures) ListDepartments

func (vf *VosFactures) ListDepartments(page int) ([]Department, error)

func (*VosFactures) ListInvoices

func (vf *VosFactures) ListInvoices(page int) ([]Document, error)

func (*VosFactures) ListProducts

func (vf *VosFactures) ListProducts(page int) ([]Product, error)

func (*VosFactures) SendInvoiceByMail

func (vf *VosFactures) SendInvoiceByMail(invoiceID int64) error

func (*VosFactures) UpdateCategory

func (vf *VosFactures) UpdateCategory(category *Category) (*Category, error)

func (*VosFactures) UpdateClient

func (vf *VosFactures) UpdateClient(client *Client) (*Client, error)

func (*VosFactures) UpdateDepartment

func (vf *VosFactures) UpdateDepartment(department *Department) (*Department, error)

func (*VosFactures) UpdateInvoice

func (vf *VosFactures) UpdateInvoice(document *Document) (*Document, error)

func (*VosFactures) UpdateProduct

func (vf *VosFactures) UpdateProduct(product *Product) (*Product, error)

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL