# 610 · salesquotesfrombc

> Technisches Mapping des Jobs `salesquotesfrombc` (`BCSalesQuotes`).

---

LLMS index: [llms.txt](/llms.txt)

---

| Eigenschaft | Wert |
|---|---|
| Order | 610 |
| Job | `salesquotesfrombc` |
| Mapping | `BCSalesQuotes` |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | `acdsalesheaders` aus `singhammerITConsulting/dyce/v2.0` |
| Zieltabelle | `quote` |
| Zeitplan | 0 */2 * * * * |
| Filter | `{{lastModifiedDateTime gt %watermark%}} and documentType eq 'Quote'` |
| Watermark | `lastModifiedDateTime` (Typ `datetime`) |
| Response-Job | — |
| Fachliche Doku | [Angebotskopf aus BC](../angebot/bcsalesquotes/) |

## Feldzuordnung

| Quellfeld | Zielfeld | Operation | Details |
|---|---|---|---|
| `amountIncludingVAT` | `wysa_bctotalamountvat` | — | — |
| `id` | `wysa_bcsystemid` | — | — |
| `number` | `quotenumber` | — · **Schlüssel** | — |
| `opportunityNumber` | `opportunityid` | Lookup | → `opportunity` über `wysa_bcopportunitynumberkey` (`opportunityNumber` → `wysa_bcopportunitynumber`) |
| `orderDate` | `effectivefrom` | — | — |
| `postingDescription` | `name` | — | — |
| `quoteValidUntilDate` | `effectiveto` | — | — |
| `salespersonCode` | `wysa_bcsalespersonid` | Lookup | → `wysa_bcsalesperson` über `wysa_bccodekey` (`salespersonCode` → `wysa_code`) |
| `sellToCompanyContactNumber` | `customerid` | Lookup | → `account` über `wysa_bccodekey` (`sellToCompanyContactNumber` → `wysa_bccontactnumber`) |
| `status` | `wysa_bcstatus` | — | — |

## Alternate Key

```json
{
  "keyType": "CustomKey",
  "keyName": "wysa_quotenumberkey",
  "keyValues": [
    {
      "attributeName": "number",
      "keyName": "quotenumber",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}
```

## Weitere technische Details

### Transformationen im Detail

Drei Lookups, jeder über einen Alternate Key:

| Quellfeld | Zieltabelle | Schlüsselfeld | Alternate Key |
|---|---|---|---|
| `opportunityNumber` | `opportunity` | `wysa_bcopportunitynumber` | `wysa_bcopportunitynumberkey` |
| `sellToCompanyContactNumber` | `account` | `wysa_bccontactnumber` | `wysa_bccodekey` |
| `salespersonCode` | `wysa_bcsalesperson` | `wysa_code` | `wysa_bccodekey` |

**Verkaufschance:**

```json
{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "opportunity",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bcopportunitynumberkey",
        "KeyValues": [
          { "keyName": "wysa_bcopportunitynumber", "attributeName": "opportunityNumber", "rank": 1 }
        ]
      }
    }
  }]
}
```

**Kunde** — seit der Umstellung über die Kontaktnummer (`wysa_bccontactnumber`) statt über die Debitorennummer:

```json
{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "account",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_bccontactnumber", "attributeName": "sellToCompanyContactNumber", "rank": 1 }
        ]
      }
    }
  }]
}
```

### Beobachtungen

Die API Page liefert alle Verkaufsbelege; die Einschränkung auf Angebote erfolgt über
`documentType eq 'Quote'` im Filter.

Der Schlüssel ist das Standardfeld `quotenumber` — die Angebotsnummer —, aufgelöst über
den Alternate Key `wysa_quotenumberkey`. In allen anderen Bereichen wird über
`wysa_bcsystemid` oder `wysa_bccontactnumber` adressiert.
