feat(crm): allow updating invoice terms via oo
Needed to put issuer NIE in Bedingungen without a full recreate.
This commit is contained in:
+7
-4
@@ -160,14 +160,14 @@ Example:
|
||||
|
||||
func invoiceUpdateCmd() *cobra.Command {
|
||||
var opportunityID int64
|
||||
var description, po string
|
||||
var description, po, terms string
|
||||
cmd := &cobra.Command{
|
||||
Use: "update INVOICE_ID",
|
||||
Short: "Update invoice (opportunity link, notes, PO)",
|
||||
Short: "Update invoice (opportunity link, notes, PO, terms)",
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
if opportunityID == 0 && !cmd.Flags().Changed("description") && !cmd.Flags().Changed("po") {
|
||||
return fmt.Errorf("set --opportunity and/or --description and/or --po")
|
||||
if opportunityID == 0 && !cmd.Flags().Changed("description") && !cmd.Flags().Changed("po") && !cmd.Flags().Changed("terms") {
|
||||
return fmt.Errorf("set --opportunity and/or --description and/or --po and/or --terms")
|
||||
}
|
||||
c, err := newOO(cmd)
|
||||
if err != nil {
|
||||
@@ -180,6 +180,8 @@ func invoiceUpdateCmd() *cobra.Command {
|
||||
DescriptionSet: cmd.Flags().Changed("description"),
|
||||
PurchaseOrder: po,
|
||||
PurchaseOrderSet: cmd.Flags().Changed("po"),
|
||||
Terms: terms,
|
||||
TermsSet: cmd.Flags().Changed("terms"),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -191,6 +193,7 @@ func invoiceUpdateCmd() *cobra.Command {
|
||||
cmd.Flags().Int64Var(&opportunityID, "opportunity", 0, "CRM opportunity/deal id to link")
|
||||
cmd.Flags().StringVar(&description, "description", "", "invoice notes (Notizen); use \\n for line breaks")
|
||||
cmd.Flags().StringVar(&po, "po", "", "purchase order number")
|
||||
cmd.Flags().StringVar(&terms, "terms", "", "payment terms / footer (Bedingungen)")
|
||||
return cmd
|
||||
}
|
||||
|
||||
|
||||
+11
-6
@@ -117,13 +117,15 @@ func (c *Client) CreateInvoice(ctx context.Context, p CreateInvoiceParams) (map[
|
||||
// UpdateInvoiceParams are fields for PUT /api/2.0/crm/invoice/{id}.
|
||||
// Loads the current invoice and merges non-zero / set fields.
|
||||
type UpdateInvoiceParams struct {
|
||||
EntityID int64 // link to opportunity; 0 = leave unchanged
|
||||
EntityType int
|
||||
ContactID int64 // 0 = leave unchanged
|
||||
Description string // invoice notes; empty + DescriptionSet=false keeps existing
|
||||
DescriptionSet bool
|
||||
PurchaseOrder string
|
||||
EntityID int64 // link to opportunity; 0 = leave unchanged
|
||||
EntityType int
|
||||
ContactID int64 // 0 = leave unchanged
|
||||
Description string // invoice notes; empty + DescriptionSet=false keeps existing
|
||||
DescriptionSet bool
|
||||
PurchaseOrder string
|
||||
PurchaseOrderSet bool
|
||||
Terms string
|
||||
TermsSet bool
|
||||
}
|
||||
|
||||
// UpdateInvoice PUTs a full invoice body (OnlyOffice requires complete payload).
|
||||
@@ -206,6 +208,9 @@ func (c *Client) UpdateInvoice(ctx context.Context, id string, p UpdateInvoicePa
|
||||
if p.PurchaseOrderSet {
|
||||
body["purchaseOrderNumber"] = p.PurchaseOrder
|
||||
}
|
||||
if p.TermsSet {
|
||||
body["terms"] = p.Terms
|
||||
}
|
||||
if p.EntityID != 0 {
|
||||
body["entityId"] = p.EntityID
|
||||
body["entityType"] = p.EntityType
|
||||
|
||||
Reference in New Issue
Block a user