# Entwickler-Dokumentation

## Erweiterungspunkte

### API, HTTP und Logging

{% code title="codeunit BFN Api Download" %}

```al
OnAfterJObjectCustomFieldsBFNSWOrder(JObjectCustomFields: JsonObject; var BFNSWOrder: Record "BFN SW Order"; Changed: Boolean)
OnAfterProcessBFNSWCustomerAddress(var BFNSWCustomerAddress: Record "BFN SW Customer Address"; var Changed: Boolean; var JObject: JsonObject)
```

{% endcode %}

{% code title="codeunit BFN Api Upload" %}

```al
OnAddTokenToItemJson(Item: Record Item; var JObject: JsonObject)
OnAfterCreateItemAttributeValueTranslation(Item: Record Item; ItemAttributeValue: Record "Item Attribute Value"; var TranslationArray: JsonArray; var LanguagesFound: Boolean)
OnBeforeCreateProductTextUploadCustomer(var JObject: JsonObject; BFNSWCustomer: Record "BFN SW Customer"; BFNSWLead: Record "BFN SW Lead")
OnBeforeCreateProductTextUploadCustomerAddress(var JObject: JsonObject; BFNSWCustomerAddress: Record "BFN SW Customer Address"; BFNSWLead: Record "BFN SW Lead")
OnBeforeGetItemStock(ItemNo: Code[20]; var VariantCode: Code[20]; var IsHandled: Boolean; var ItemStock: Decimal)
OnBeforeOrderDelivery3JObjectWrite(JObject: JsonObject; BFNSWOrderDelivery: Record "BFN SW Order Delivery3")
OnBeforeWriteItemVariantToProductText(ItemVariant: Record "Item Variant"; var JObject: JsonObject)
OnBeforeWriteItemToProductText(Item: Record Item; var JObject: JsonObject)
OnBeforeWriteItemToProductbfnTicketingProduct(var Item: Record Item; JObject2: JsonObject)
```

{% endcode %}

{% code title="codeunit BFN Api Upload" %}

```al
OnBeforeInsertOrModifySWRecordRef(RecordRef: RecordRef; JObject: JsonObject)
OnAfterInsertOrModifySWRecordRef(RecordRef: RecordRef; JObject: JsonObject)
```

{% endcode %}

{% code title="codeunit BFN SW Services" %}

```al
OnInsertSalesLine(var SalesLine: Record "Sales Line")
OnCreatePriceDifference(var SalesLine: Record "Sales Line"; var SalesLinePrice: Record "Sales Line"; vAmount: Decimal; PromotionCode: Code[50])
OnAfterCreateOrderLine(var BFNOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item")
OnBeforeFillBFNOrderLineSWNo(BFNSWProduct: Record "BFN SW Product"; BFNSWOrderLine: Record "BFN SW Order Line"; IsHandeld: Boolean)
OnBeforeSendInStreamToSWInvoice(InStream: InStream; PreviewMode: Boolean; var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
OnBeforeSendInStreamToSWCrMemo(InStream: InStream; PreviewMode: Boolean; var SalesCrMemoHeader: Record "Sales Cr.Memo Header"; var IsHandled: Boolean)
OnAfterCreateBlobFile(ReportSelectionUsage: Enum "Report Selection Usage"; var TempBlob: Codeunit "Temp Blob"; DocNo: Code[20])
OnAfterCreateOrderLinePayLoad(var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; TempText: Text)
OnAfterCreateSWOrderLineJObjectPayLoad(var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; var JObject: JsonObject)
OnAfterCreateOrderFromSWOrderVar(var BFNSWOrderHeader: Record "BFN SW Order Header"; var BFNSWOrder: Record "BFN SW Order")
OnCreateSalesLineForPaymentSurcharge(var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderHeader: Record "BFN SW Order Header"; var IsHandeld: Boolean)
OnAfterCreateCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateOrderTransactionCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateOrderDeliveryCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateOrderAddressBillCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateOrderAddressShipCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateOrderCustomerCustomFields(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateExtensions(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateCustomerComment(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
OnAfterCreateInternalComment(var BFNSWOrder: Record "BFN SW Order"; var BFNSWOrderHeader: Record "BFN SW Order Header"; JObject: JsonObject)
CreateSWOrderHeaderFromAnotherApplication(var BFNSWOrder: Record "BFN SW Order"; var IsProcessed: Boolean)
CreateSWOrderLineFromAnotherApplication(var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderHeader: Record "BFN SW Order Header"; ProductNumber: Text; var IsHandled: Boolean)
OnAfterItemNoFoundFillSWOrderline(var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; var IsHandled: Boolean; var ItemFound: Boolean)
OnTransferCustomFieldsToOrderLine(var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; TempText: Text)
OnAfterCreateSWOrderLineJObjectCustomFields(var BFNSWOrderLine: Record "BFN SW Order Line"; var BFNSWOrderLineItem: Record "BFN SW Order Line Item"; JObjectCustomFields: JsonObject)
OnBeforeInssertBFNCoreEMailSendSendEMailOrderPosted(var BFNCoreEMailSend: Record "BFN Core E-Mail Send"; SalesInvoiceHeader: Record "Sales Invoice Header")
```

{% endcode %}

### Stammdaten und Belege

{% code title="page BFN Additinal Picture2" %}

```al
OnAfterTakeNewPicture(var BFNSWAdditionalPicture: Record "BFN SW Additional Picture2"; IsPictureAdded: Boolean)
OnImportFromDeviceOnAfterModify(var BFNSWAdditionalPicture: Record "BFN SW Additional Picture2")
```

{% endcode %}

{% code title="page BFN Lead Search2" %}

```al
OnBeforeBFNSetContactOnAction(var BFNSWLeadContacts2: Record "BFN SW Lead Contacts2"; BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnAfterBFNSetContactOnAction(var BFNSWLeadContacts2: Record "BFN SW Lead Contacts2"; BFNSWLead: Record "BFN SW Lead")
OnBeforeBFNNewPersonforCompanyOnAction(Rec: Record "BFN SW Lead Contacts2"; BFNLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnAfterBFNNewPersonforCompanyOnAction(var BFNSWLeadContacts2: Record "BFN SW Lead Contacts2"; BFNSWLead: Record "BFN SW Lead")
```

{% endcode %}

{% code title="table BFN SW Customer" %}

```al
OnBeforeTransferToLead(var BFNSWCustomer: Record "BFN SW Customer"; var IsHandled: Boolean)
OnAfterTransferToSWLead(var BFNSWLead: Record "BFN SW Lead"; var BFNSWCustomer: Record "BFN SW Customer")
OnTransferCustomFieldsToLeadVar(var BFNSWLead: Record "BFN SW Lead"; var BFNSWCustomer: Record "BFN SW Customer"; var Changed: Boolean)
OnTransferCustomFieldsToLeadAddressVar(var BFNSWLead: Record "BFN SW Lead"; var BFNSWCustomerAddress: Record "BFN SW Customer Address"; var Changed: Boolean)
```

{% endcode %}

{% code title="table BFN SW Customer Address" %}

```al
OnTransferCustomFieldsToLeadVar(var BFNSWLead: Record "BFN SW Lead"; var BFNSWCustomerAddress: Record "BFN SW Customer Address"; Changed: Boolean)
OnAfterTransferToLead(var BFNSWCustomerAddress: Record "BFN SW Customer Address"; var BFNSWLead: Record "BFN SW Lead"; var Changed: Boolean)
```

{% endcode %}

{% code title="table BFN SW Lead" %}

```al
OnBeforeUploadToCS(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnAfterUploadToCS(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead")
OnBeforeUpdateFromContact(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead"; Contact: Record Contact; var IsHandled: Boolean)
OnAfterUpdateFromContact(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead"; Contact: Record Contact; Lead: Record "BFN SW Lead")
OnBeforeUpdateDataRecToContact(var BFNSWLead: Record "BFN SW Lead"; Changed: Boolean; var Contact: Record Contact; var IsHandled: Boolean)
OnAfterUpdateDataRecToContact(var BFNSWLead: Record "BFN SW Lead"; var Contact: Record Contact)
OnAfterCreateCustomer(var BFNSWLead: Record "BFN SW Lead"; Contact: Record Contact; CustomerNo: Code[20])
OnBeforeCreateCustomer(var BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnBeforeCreateContact(var BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnAfterCreateContactVar(var BFNSWLead: Record "BFN SW Lead"; Contact: Record Contact; var IsHandled: Boolean)
OnAfterCreateShiptoAddressVar(var BFNSWLead: Record "BFN SW Lead"; ShiptoAddress: Record "Ship-to Address"; var IsHandled: Boolean)
OnAfterOnInsert(var BFNSWLead: Record "BFN SW Lead")
OnAfterOnDelete(var BFNSWLead: Record "BFN SW Lead")
OnBeforeOnDelete(var BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnBeforeOnInsert(var BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnAfterOnModify(var BFNSWLead: Record "BFN SW Lead")
OnAfterDeleteAll(var BFNSWLead: Record "BFN SW Lead"; var Successfull: Boolean)
OnSetUseContPersonforCompany(BFNSWLead: Record "BFN SW Lead"; var UseContPersonforCompany: Boolean)
```

{% endcode %}

{% code title="table BFN SW Order Header" %}

```al
OnAfterCreateSalesHeaderFromOrderHeader(var BFNOrderHeader: Record "BFN SW Order Header"; var SalesHeader: Record "Sales Header")
OnBeforeReleaseSalesHeader(var ReleaseOrder: Boolean; var SalesHeader: Record "Sales Header")
OnBeforeCreateShopSales(var BFNSWOrderHeader: Record "BFN SW Order Header"; ShowDialog: Boolean; PostSalesOrder: Boolean; var IsHandled: Boolean)
OnAfterCreateShopSales(var BFNSWOrderHeader: Record "BFN SW Order Header"; SalesHeader: Record "Sales Header"; ShowDialog: Boolean; PostSalesOrder: Boolean)
OnBeforInsertSalesHeader(var SalesHeader: Record "Sales Header"; BFNSWOrderHeader: Record "BFN SW Order Header")
OnAfterCreateAllLines(var BFNSWOrderHeader: Record "BFN SW Order Header"; SalesHeader: Record "Sales Header")
OnBeforeSetSalesHeaderNoVar(var SalesHeader: Record "Sales Header"; var BFNSWOrderHeader: Record "BFN SW Order Header"; var IsHandled: Boolean)
BFNOnBeforeSetErrorMissingCustomerVar(var BFNSWOrderHeader: Record "BFN SW Order Header"; BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
OnBeforeValidateSalesHeaderSellTo(var BFNSWOrderHeader: Record "BFN SW Order Header"; var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
OnBeforeValidateSalesHeaderBillTo(var BFNSWOrderHeader: Record "BFN SW Order Header"; var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
OnBeforeValidateSalesHeaderShipTo(var BFNSWOrderHeader: Record "BFN SW Order Header"; var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table BFN SW Product" %}

```al
OnBeforeCreateBaseItem(var BFNSWProduct: Record "BFN SW Product"; Item: Record Item; var IsHandled: Boolean)
OnAfterCreateBaseItem(var BFNSWProduct: Record "BFN SW Product"; Item: Record Item)
OnBeforeBFNSWCreateItem(var BFNSWProduct: Record "BFN SW Product"; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table Item" %}

```al
BFNSWOnBeforeUpdateItemVariantByFieldNo(var Item: Record Item; ChangedFieldNo: Integer; AskQuestion: Boolean; var IsHandled: Boolean; xItem: Record Item)
BFNOnAfterSyncMediaToSW(var Item: Record Item)
BFNOnBeforeSyncMediaToSW(var Item: Record Item; var IsHandled: Boolean)
BFNSWOnBeforeItemVariantByChangedFieldNo(var Item: Record Item; ItemVariant: Record "Item Variant"; ChangedFieldNo: Integer; var IsHandled: Boolean; xRec: Record Item)
BFNSWOnUpdateItemVariantByChangedFieldName(var Item: Record Item; ItemVariant: Record "Item Variant"; FieldName: Text[30]; ChangedFieldNo: Integer)
BFNSWOnUpdateItemVariantsByFieldNoOnBeforeItemVariantModify(ItemVariant: Record "Item Variant"; ChangedFieldNo: Integer; CurrFieldNo: Integer)
BFNOnAfterSyncToSW(var Item: Record Item)
BFNOnBeforeSyncToSW(var Item: Record Item; var IsHandled: Boolean)
BFNSWOnBeforeBFNItemVariantsExist(var Item: Record Item; var returnVar: Boolean; var IsHandled: Boolean)
BFNSWOnAfterUpdateItemVariantsByFieldNo(Item: Record Item; xItem: Record Item; ChangedFieldNo: Integer)
BFNSWOnBeforeBFNGetProductId(var TempProductId: Guid; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table Item Variant" %}

```al
BFNSWOnBeforeBFNGetProductId(var TempProductId: Guid; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table Sales Header" %}

```al
BFNOnCapturePayment(var SalesHeader: Record "Sales Header")
```

{% endcode %}

{% code title="table Sales Line" %}

```al
BFNOnBeforeBFNFillFromOrderLine(var SalesLine: Record "Sales Line"; var BFNSWOrderLine: Record "BFN SW Order Line"; var ParSalesHeader: Record "Sales Header"; var LineNo: Integer; var IsHandled: Boolean)
BFNOnAfterBFNFillFromOrderLine(var SalesLine: Record "Sales Line"; var BFNSWOrderLine: Record "BFN SW Order Line"; var ParSalesHeader: Record "Sales Header"; var LineNo: Integer)
BFNOnBeforeBFNModifyFromOrderLine(var SalesLine: Record "Sales Line"; var BFNSWOrderLine: Record "BFN SW Order Line"; var ParSalesHeader: Record "Sales Header"; var LineNo: Integer; var IsHandled: Boolean)
BFNOnAfterBFNModifyFromOrderLine(var SalesLine: Record "Sales Line"; var BFNSWOrderLine: Record "BFN SW Order Line"; var ParSalesHeader: Record "Sales Header"; var LineNo: Integer)
BFNOnAfterBFNFillFromOrderLinePayload(var SalesLine: Record "Sales Line"; var BFNSWOrderLine: Record "BFN SW Order Line"; var ParSalesHeader: Record "Sales Header"; var LineNo: Integer)
```

{% endcode %}

### Veraltet

{% hint style="warning" %}
Dieses Event ist veraltet. Es sollte nur noch für Bestandslösungen genutzt werden.
{% endhint %}

{% code title="codeunit BFN Api Upload" %}

```al
OnBeforeRefundPaymentSalesHeader(PaymentMethod: Record "Payment Method"; var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
OnBeforeCapturePaymentSalesHeader(PaymentMethod: Record "Payment Method"; var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
OnBeforeOrderDeliveryJObjectWrite(JObject: JsonObject; BFNSWOrderDelivery: Record "BFN SW Order Delivery")
OnBeforeOrderDelivery2JObjectWrite(JObject: JsonObject; BFNSWOrderDelivery: Record "BFN SW Order Delivery2")
```

{% endcode %}

{% code title="codeunit BFN SW Http Services" %}

```al
OnAfterSetCreateApiLog(BFNServiceType: Enum "BFN SW Service Type"; var CreateApiLog: Boolean)
```

{% endcode %}

{% code title="codeunit BFN SW Json Services" %}

```al
OnBeforeInsertOrModifySWRecordRef(RecordRef: RecordRef; JObject: JsonObject)
OnAfterInsertOrModifySWRecordRef(RecordRef: RecordRef; JObject: JsonObject)
```

{% endcode %}

{% code title="codeunit BFN SW Services" %}

```al
OnAfterCreateOrderFromSWOrder(BFNSWOrderHeader: Record "BFN SW Order Header"; var BFNSWOrder: Record "BFN SW Order")
```

{% endcode %}

{% code title="table BFN SW Api Log" %}

```al
OnBeforeTryAgain(var BFNApiLog: Record "BFN SW API Log"; var IsHandeld: Boolean; var Response: Text)
OnAfterTryAgain(var BFNApiLog: Record "BFN SW API Log"; var Response: Text)
```

{% endcode %}

{% code title="table BFN SW Customer" %}

```al
OnAfterTransferToLead(var BFNSWCustomer: Record "BFN SW Customer")
OnTransferCustomFieldsToLead(BFNSWLead: Record "BFN SW Lead"; BFNSWCustomer: Record "BFN SW Customer"; Changed: Boolean)
OnTransferCustomFieldsToLeadAddress(BFNSWLead: Record "BFN SW Lead"; BFNSWCustomerAddress: Record "BFN SW Customer Address"; Changed: Boolean)
```

{% endcode %}

{% code title="table BFN SW Customer Address" %}

```al
OnTransferCustomFieldsToLead(BFNSWLead: Record "BFN SW Lead"; BFNSWCustomerAddress: Record "BFN SW Customer Address"; Changed: Boolean)
OnTransferCustomFieldsToLead(BFNSWLead: Record "BFN SW Lead"; BFNSWCustomerAddress: Record "BFN SW Customer Address"; Changed: Boolean)
```

{% endcode %}

{% code title="table BFN SW Lead" %}

```al
OnBeforeUpdateFromShipToAdr(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead"; ShiptoAddress: Record "Ship-to Address"; var IsHandled: Boolean)
OnAfterUpdateFromShipToAdr(var BFNSWLead: Record "BFN SW Lead"; var xBFNSWLead: Record "BFN SW Lead"; ShiptoAddress: Record "Ship-to Address")
OnAfterCreateContact(var BFNSWLead: Record "BFN SW Lead"; Contact: Record Contact; IsHandled: Boolean)
OnAfterCreateShiptoAddress(var BFNSWLead: Record "BFN SW Lead"; ShiptoAddress: Record "Ship-to Address"; IsHandled: Boolean)
```

{% endcode %}

{% code title="table BFN SW Order Header" %}

```al
OnBeforeSetSalesHeaderNo(var SalesHeader: Record "Sales Header"; BFNSWOrderHeader: Record "BFN SW Order Header"; var IsHandled: Boolean)
BFNOnBeforeSetErrorMissingCustomer(BFNSWOrderHeader: Record "BFN SW Order Header"; BFNSWLead: Record "BFN SW Lead"; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table BFN SW Voucher2" %}

```al
OnBeforeFillBFNCode(var BFNSWVoucher2: Record "BFN SW Voucher2"; var IsHandled: Boolean)
```

{% endcode %}

{% code title="table Item" %}

```al
BFNSWOnBeforeSyncToSW(var Item: Record Item; var IsHandled: Boolean)
BFNSWOnBeforeUpdateItemVariant(var Item: Record Item; ChangedFieldName: Text[100]; AskQuestion: Boolean)
BFNSWOnAfterUpdateItemVariant(var Item: Record Item)
```

{% endcode %}

{% code title="table Sales Line" %}

```al
BFNOnAfterModifyFromOrderLine(var Rec: Record "Sales Line"; var BFNOrderLine: Record "BFN SW Order Line")
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bfn-it.de/documentation/bcshopwareconnecor/shopware-connector/entwickler-dokumentation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
