Documentation

crm.invoice.update

crm.invoice.update(id, fields)

Updates the specified (existing) invoice.

Parameters

Note: to find out the required field format, execute the method crm.invoice.fields to view the retrieved field format.
Parameter Description
id Invoice ID to be updated.
fields Set of fields - is an array (“updated field"=>”value”[, ...]), containing field values of the crm.invoice.fields.

Example

// Add or update an item in an invoice

var id = prompt("Enter ID");
BX24.callMethod('crm.invoice.get', {"ID": id}, addProduct);
function addProduct(result)
{
    if(result.error())
        console.error(result.error());
    else
    {
        var fields = clone(result.data());
        var n = fields['PRODUCT_ROWS'].length;
        var productUpdated = false;

        // update the created-on date fields["DATE_BILL"] = "date2str(current)";
        // update the "Invoice notes (appears on invoice)" field fields["USER_DESCRIPTION"] = "Invoice notes (updated).";

        // If the invoice includes an item ID=703, update the item fields.
        // Otherwise, create and add a new product item.
        // We safely assume the price includes taxes because 
        // we can tell if it's not by the catalog's tax-included flag.
        for (var i in fields['PRODUCT_ROWS'])
        {
            if (fields['PRODUCT_ROWS'][i]["PRODUCT_ID"] == 703)
            {
                var rowId = fields['PRODUCT_ROWS'][i]["ID"]
                fields['PRODUCT_ROWS'][i] = {
                    "ID": rowId, "PRODUCT_ID": 703, "QUANTITY": 4, "PRICE": 779.60
                };
                productUpdated = true;
                break;
            }
        }

        if (!productUpdated && n > 0)
        {
            fields['PRODUCT_ROWS'][n] = 
            {
                "ID": 0, "PRODUCT_ID": 703, "QUANTITY": 5, "PRICE": 779.60
            };
        }

        BX24.callMethod('crm.invoice.update', {"ID": id, "FIELDS": fields},
            function(result)
            {
                if(result.error())
                    console.error(result.error());
                else
                {
                    console.info("Invoice ID=" + result.data() + "has been updated.");
                }
            }
        );
    }
}

function clone(src)
{
    var dst;
    if (src instanceof Object)
    {
        dst = {};
        for (var i in src)
        {
            if (src[i] instanceof Object)
                dst[i] = clone(src[i]);
            else
                dst[i] = src[i];
        }
    }
    else dst = src;
    return dst;
}

User Comments

User comments are not part of official documentation. Use information provided by other users in the comments at your own risk.

The User Comments section is not to be used as a feature discussion board. Only registered users can post comments. Your comment will be visible once it has been approved by the moderator.
© «Bitrix Inc.», 2001-2021, «Bitrix Inc.», 2021