Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Only financial changes are taken into consideration considered by the pre-invoice generation and the following items are being compared to evaluate if it is a financial change or not.

...

The following new fields for delta invoicing are created which will calculate the outstanding amount based on changes done for Campaigns and what was already invoiced.

Invoice API Name

Invoice Field Label

Invoice Item API Name + Logic

GrossAmountB3Outstanding__c

Outstanding Gross Amount B3

GrossAmountB3delta__c

Additional Condition:
NonMedia__c == falseis not set

GrossAmountB2Outstanding__c

Outstanding Gross Amount B2

GrossAmountB2delta__c

Additional Condition:
NonMedia__c == is false

GrossAmountB1Outstanding__c

Outstanding Gross Amount B1

GrossAmountB1delta__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet1Outstanding__c

Outstanding Invoiced Amount N1

InvoicedAmountNet1delta__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet2Outstanding__c

Outstanding Invoiced Amount N2

InvoicedAmountNet2delta__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet3Outstanding__c

Outstanding Invoiced Amount N3

InvoicedAmountNet3delta__c

Additional Condition:
NonMedia__c == is false

NonMediaAmountOutstanding__c

Outstanding Non-Media Amount

InvoicedAmountNet3delta__c

Additional Condition:
NonMedia__c == is true

DstAmountOutstanding__c

Outstanding DST Amount

DstAmountdelta__c

Additional Condition:
DstRelevant__c == true && DstExempt__c == is false

NonTaxableAmountDstOutstanding__c

Outstanding Nontaxable Amount (DST)

Based on TaxableAmountType__c:
InvoicedAmountNet2delta__c
or
InvoicedAmountNet3delta__c

Additional Condition:
DstRelevant__c == is false || DstExempt__c == is true

TaxableAmountDstOutstanding__c

Outstanding Taxable Amount (DST)

Based on TaxableAmountType__c:
InvoicedAmountNet2delta__c
or
InvoicedAmountNet3delta__c

Additional Condition:
DstRelevant__c == is true && DstExempt__c == is false

VATAmount1Outstanding__c

Outstanding VAT Amount (Type 1 (A))

VATAmountdelta__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '1'

VATAmount1BOutstanding__c

Outstanding VAT Amount (Type 1 (B))

VATAmountBdelta__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '1'

VATAmount2Outstanding__c

Outstanding VAT Amount (Type 2 (A))

VATAmountdelta__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '2'

VATAmount2BOutstanding__c

Outstanding VAT Amount (Type 2 (B))

VATAmountBdelta__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '2'

TaxableAmountVatType1Outstanding__c

Outstanding Taxable Amount (VAT Type 1)

Based on TaxableAmountType__c:
InvoicedAmountNet2Delta__c + DstAmountDelta__c
or
InvoicedAmountNet3Delta__c + DstAmountDelta__c

Additional Condition:
VATExempt__c == is false && VATType__c == is '1'

TaxableAmountVatType2Outstanding__c

Outstanding Taxable Amount (VAT Type 2)

Based on TaxableAmountType__c:
InvoicedAmountNet2Delta__c + DstAmountDelta__c
or
InvoicedAmountNet3Delta__c + DstAmountDelta__c

Additional Condition:
VATExempt__c == is false && VATType__c == is '2'

NonTaxableAmountTotalOutstanding__c

Outstanding Nontaxable Amount (VAT Total)

Based on TaxableAmountType__c:
InvoicedAmountNet2delta__c + DstAmountDstAmountDelta__c
or
InvoicedAmountNet3delta__c + DstAmountDstAmountDelta__c

Additional Condition:
VATExempt__c == is true or TaxableAmountType__c not supported or VATType__c not supported

(warning) QR code feature users should map the correct amount to the ESR reference.

For Non-delta and Normal Items, the following fields are relevant

Those normal roll-up fields do not include the amounts of the technical reversal items.The following invoice fields will calculate the outstanding + the already paid amount:

Invoice Field API Name

Invoice Field Label

Invoice Item API Name + Logic

GrossAmountB3__c(This is a salesforce roll-up field and needs to be changed in the field definition)

Gross Amount B3

GrossAmountB3__c

Additional Condition:
NonMedia__c == is false

GrossAmountB2__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

Gross Amount B2

GrossAmountB2__c

Additional Condition:
NonMedia__c == is false

GrossAmountB1__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

Gross Amount B1

GrossAmountB1__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet1__c(This is a salesforce roll-up field and needs to be changed in the field definition)

Invoiced Amount N1

InvoicedAmountNet1__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet2__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

Invoiced Amount Invoiced Amount N2

InvoicedAmountNet2__c

Additional Condition:
NonMedia__c == is false

InvoicedAmountNet3__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

Invoiced Amount N3

InvoicedAmountNet3__c

Additional Condition:
NonMedia__c == is false

NonMediaAmount__c(This is a salesforce roll-up field and needs to be changed in the field definition)

Non-Media Amount

InvoicedAmountNet3__c

Additional Condition:
NonMedia__c == is true

DstAmount__c

(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

DST Amount

DST Amount

DstAmount__c

Additional Condition:
DstRelevant__c == is true && DstExempt__c == is false

NonTaxableAmountDst__c

(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

Nontaxable Amount (DST)

Based on TaxableAmountType__c:
InvoicedAmountNet2__c
or
InvoicedAmountNet3__c

Additional Condition:
DstRelevant__c == is false || DstExempt__c == is true

TaxableAmountDst__c(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

Taxable Amount (DST)

Based on TaxableAmountType__c:
InvoicedAmountNet2__c
or
InvoicedAmountNet3__c

Additional Condition:
DstRelevant__c == is true && DstExempt__c == is false

VATAmount1__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

VAT Amount (Type VAT Amount (Type 1 (A))

VATAmount__c

Additional Condition:
VATExempt__c == is false && VATType__c = '1'

VATAmount1B__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

VAT Amount (Type 1 (B))

VATAmountB__c

Additional Condition:
VATExempt__c == is false && VATType__c = '1'

VATAmount2__c(This is a salesforce roll-up field and needs to be changed in the field definition)

VAT Amount (Type 2 (A))

VATAmount__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '2'

VATAmount2B__c

(This is a salesforce roll-up field and needs to be changed in the field definition)

VAT Amount (Type 2 (B))

VATAmountB__c

Additional Condition:
VATExempt__c == is false && VATType__c = is '2'

TaxableAmountVatType1__c

(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

Taxable Amount (VAT Type 1)

Based on TaxableAmountType__c:
InvoicedAmountNet2__c + DstAmount__c
or
InvoicedAmountNet3__c + DstAmount__c

Additional Condition:
VATExempt__c == is false && VATType__c == is '1'

TaxableAmountVatType2__c(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

Taxable Amount (VAT Type 2)

Based on TaxableAmountType__c:
InvoicedAmountNet2__c + DstAmount__c
or
InvoicedAmountNet3__c + DstAmount__c

Additional Condition:
VATExempt__c == is false && VATType__c == is '2'

NonTaxableAmountTotal__c

(This is calculated in the InvoiceItemTrigger.cls and needs to be changed there)

Nontaxable Amount (Nontaxable Amount (VAT Total)

Based on TaxableAmountType__c:
InvoicedAmountNet2__c + DstAmount__c
or
InvoicedAmountNet3__c + DstAmount__c

Additional Condition:
VATExempt__c == true or TaxableAmountType__c not supported or VATType__c not supportesupported

The general amount calculation is described here: 4.2.6.2 Amount Calculation and Discounts

Following Invoice Formula fields will are not be created for Delta, however, we need to document the formula so that customers can create their custom fieldsthey can be created as custom fields if needed.

Formula

Delta API Name

Delta Label

Normal Formula API Name (can be taken as reference)

NonTaxableAmountDstDelta__c + TaxableAmountDstOutstanding__c + DstAmountOutstanding__c

InvoicedAmountDstOutstanding__c

Delta Outstanding Invoiced Amount Gross (DST)

InvoicedAmountDst__c

VATAmount1Outstanding__c + VATAmount1BOutstanding__c

VatTotalType1Outstanding__c

Delta Outstanding VAT Total (Type 1)

VatTotalType1__c

VATAmount2Outstanding__c + VATAmount2BOutstanding__c

VatTotalType2Outstanding__c

Delta Outstanding VAT Total (Type 2)

VatTotalType2__c

TaxableAmountVatType1Outstanding__c + TaxableAmountVatType2Outstanding__c

TaxableAmountTotalOutstanding__c

Delta Outstanding Taxable Amount (VAT Total)

TaxableAmountTotal__c

VatTotalType1Outstanding__c + VatTotalType2Outstanding__c

VatTotalOutstanding__c

Delta Outstanding VAT Total

VatTotal__c

TaxableAmountTotalOutstanding__c + VatTotalOutstanding__c + NonTaxableAmountTotalOutstanding__c

InvoicedAmountTotalOutstanding__c

Delta Outstanding Invoiced Amount Gross (Total)

InvoicedAmountTotal__c

ROUND(InvoicedAmountTotalOutstanding__c * Early_Payment_Discount__c,2)

EarlyPaymentDiscountAbsOutstanding__c

Delta Outstanding Early Payment Discount abs.

EarlyPaymentDiscountAbs__c

InvoicedAmountTotaOutstanding__c - EarlyPaymentDiscountAbsOutstanding__c

InvoicedAmountGrossInclEpdOutstanding__c

Delta Outstanding Invoiced Amount Gross (incl. EPD)

InvoicedAmountGrossInclEpd__c

Assigning Accounting Periods

The Delta Pre-Invoice Generation process ensures that all pre-invoices have an assigned accounting period. If Suppose accounting periods are not yet created when the pre-invoices are generated, . In that case, the accounting period field will remain empty and will be updated during the next pre-invoice generation once the accounting periods are created.

...

  1. Functionality of Status “Reviewed”:

    • Reviewed pre-invoices are not updated, similar to invoiced invoices.

    • Draft pre-invoices can be updated or reassigned as needed.

  2. Resetting Status to Draft:

    • If any amounts (B3 → N3) change or new pre-invoice items match a reviewed pre-invoice or pre-invoice item get deleted, the status is reset to Draft and the pre-invoice and pre-invoice items will be updated.

    • Prevents creation of unnecessary additional delta pre-invoices.

  3. Invoice Assignment Rules:

    • Ensures that pre-invoice assignments are managed efficiently without creating duplicate pre-invoices.

...

Following validations are in place for Media campaign and Campaign items for when the pre-invoice generation is triggered

Media Champaign Campaign Conditions

 Error Message

MediaCampaign__c.PaymentInterval__c is not filledset

Missing fields: Payment Interval, Payment Start, ...

MediaCampaign__c.PaymentStart__c is not filledset

MediaCampaign__c.PaymentDueDate__c is not filledset

MediaCampaign__c.Campaign_Start_Date__c is not filledset

MediaCampaign__c.Campaign_End_Date__c is not filledset

MediaCampaign__c.PaymentInterval__c
is weekly in combination with Custom Fiscal Period enabled on Admin Settings

A payment interval weekly (1 week) is not supported when fiscal periods are activated.

Champaign Campaign Item Condition

Error Message

Campaign_Item__c.BillMe__c
is not set

items without bill me set will be ignored

/

PacketItem__r.BillMe__c
is not set

package components with bill me set will be ignored if the related package header doesn’t have bill me set

Note

Packages are not supported yet in the delta pre-invoice generation.

/

MediaCampaign__c.PaymentInterval__c is weekly and the Billing category is Budget

The first encountered budget item related to a weekly media campaign will throw an error

Pre-invoice generation is not supported for the Budget billing category with a weekly payment interval.

Info

Using the media campaign button with standard pre-invoice generation:
Weekly invoicing is not supported for Media Buying.

...

Info

The “Update delivery data” button has been removed from the Invoice object and this action of updating . Updating the delivered quantity is included in the PreInvoice generation and the Pre-invoice update stage is included in the old billing run. We strongly advise removing all the custom flows or actions related to this button.

When the pre-invoices are generated for the media champaign campaign with weekly payment interval when the Admin Setting “Enable calculation of Revenue Schedules Daily“ is disabled it will create Pre-Invoices with a 0 as invoice item InvoicedQuantity__c and QuantityDelivered__c. Kindly report if it gives a null pointer error.

If the campaign item is changed/edited without optimizer the changes will not be reflected automatically in the pre-invoices and the run pre-invoices button has to be triggered to have the change reflected in the pre-invoice. With the optimizer, the pre-invoice gets updated automatically

...

  • Positive absolute surcharges make use of the rounding mode HALF_DOWN

  • Negative absolute surcharges make use of the rounding mode HALF_UP

  • Absolute discounts make use of the rounding mode FLOOR

  • Amounts based on actuals make use of the rounding mode HALF_UP

  • For Linear, positive Invoiced Quantity make use of the rounding mode HALF_DOWN

  • For Linear, negative Invoiced Quantity make use of the rounding mode HALF_UP

Due to the new absolute surcharges and absolute discount rounding logic, the user may notice a cent difference between periods.The updated logic ensures that when the total campaign item amount matches the invoice amount (indicating the campaign item was fully invoiced), no delta pre-invoice items are created.

In cases where the campaign item amounts do not match the invoice item amounts combined, delta invoice items will still be created.

...