Sale

De Stoq Wiki
Ir para: navegação, pesquisa

== Sale ==

Uma venda está sempre ligada à uma operação de caixa (veja documentação de uma operação de caixa, Till).

Uma venda não contêm referência para os seus items, são os items que contêm referência para a venda. Outro detalhe importante é que uma venda se comporta como um container de items (implementando a interface IContainer), então seus items pode ser obtidos através do método getitems, removidos através de removeitem e adicionados através de add_item. É certo que os items retornados serão sempre subclasses de AbstractSellableItem, podendo ser serviços (ServiceSellableItem), produtos (ProductSellableItem) ou qualquer outro objeto que seja criado posteriormente (que deve ser subclasse da classe abstrata AbstractSellableItem).

O objeto Sale também pode ser adaptado para um grupo de pagamentos (vide interface IPaymentGroup), de forma a permitir fácil acesso ao modo como a venda foi paga e seus respectivos pagamentos.

XXX: Documentar renegociação (como funciona? quais objetos entram em cena? o que sobre os pagamentos?)

XXX: Documentar faturas (como funciona?)

 - order_number (~AutoIncCol)
 - coupon_id (~IntCol)
 - serviceinvoicenumber (~IntCol)
 - open_date (~DateTime)
 - close_date (~DateTime)
 - confirm_date (~DateTime)
 - cancel_date (~DateTime)
 - status (~IntCol)
   - Possíveis status:
     - Opened
     - Confirmed
     - Closed
     - Cancelled
     - Order (?)
 - discount_value (~PriceCol)
 - surcharge_value (~PriceCol)
 - notes (~UnicodeCol)
 - client_role (~IntCol)
   - Guardamos qual papel do cliente fez a venda. Isso é importante desde que um cliente pode ter mais de um cargo associado, por exemplo, Individual e Company e precisamos saber qual dos papéis que realmente fez a venda (o uso primário desse atributo é durante a emissão de nota fiscal, onde precisamos saber qual documento usar para um cliente que é tanto uma pessoa física quanto uma pessoa jurídica (usamos cpf ou cnpj?). Os possíveis valores para esse atributo são:
     - CLIENT_INDIVIDUAL
     - CLIENT_COMPANY
 - client (PersonAdaptToClient)
   - Um cliente não é obrigatório para uma venda
 - cfop (CfopData)
   - CFOP = Código Fiscal de Operações e Prestações
 - till (Till)
 - salesperson (PersonAdaptToSalesPerson)
 - renegotiation_data (AbstractRenegotiationAdapter)