Body of POST /v3/commands/s4c/quote: the Dynamics quote (Angebot) that
mirrors a job in a proposal status. Sent by the S4C "gid - salesorder
endpoint" flow at the end of its quote phase.
Why it exists: in that phase the flow creates only a quote and terminates
before any salesorder — so SetJobS4COrderId never fires and the admin app
had no S4C number to show until the job was accepted.
A request DTO rather than a BaseCommand subclass on purpose: the
command is kept out of supportedCommands (see SetJobS4CQuote), and
BaseCommand validates _type against that list.
Exactly one of jobApiId, invoicingEid, or gidOrderNumber identifies the
job; the flow sends gidOrderNumber.
Body of
POST /v3/commands/s4c/quote: the Dynamics quote (Angebot) that mirrors a job in a proposal status. Sent by the S4C "gid - salesorder endpoint" flow at the end of its quote phase.Why it exists: in that phase the flow creates only a quote and terminates before any salesorder — so
SetJobS4COrderIdnever fires and the admin app had no S4C number to show until the job was accepted.A request DTO rather than a BaseCommand subclass on purpose: the command is kept out of
supportedCommands(see SetJobS4CQuote), and BaseCommand validates_typeagainst that list.Exactly one of
jobApiId,invoicingEid, orgidOrderNumberidentifies the job; the flow sendsgidOrderNumber.