package de.effigenix.domain.masterdata.customer;

/**
 * Rohe Eingabe für partielle Customer-Updates.
 * null-Felder bedeuten "nicht ändern".
 * Wird vom Application Layer aus dem Command gebaut und an Customer.update() übergeben.
 *
 * @param name              null = nicht ändern
 * @param phone             null = ContactInfo nicht ändern
 * @param email             Teil von ContactInfo (nur relevant wenn phone != null)
 * @param contactPerson     Teil von ContactInfo (nur relevant wenn phone != null)
 * @param street            null = billingAddress nicht ändern
 * @param houseNumber       Teil von billingAddress
 * @param postalCode        Teil von billingAddress
 * @param city              Teil von billingAddress
 * @param country           Teil von billingAddress
 * @param paymentDueDays    null = PaymentTerms nicht ändern
 * @param paymentDescription Teil von PaymentTerms
 */
public record CustomerUpdateDraft(
        String name,
        String phone,
        String email,
        String contactPerson,
        String street,
        String houseNumber,
        String postalCode,
        String city,
        String country,
        Integer paymentDueDays,
        String paymentDescription
) {}
