Managerul de magazin recepționează factura
Când Managerul de magazin inregistrează o Factură de intrare si produsul este Marfa, Sistemul actualizează prețul furnizorului și îl setează ca furnizor principal pentru marfa recepționată.
Când Managerul de magazin înregistrează o linie de intrare și cantitatea e mai mare ca 0, Sistemul șterge comenzile puse pentru produsul respectiv.
Managerul receptioneaza eFactura
Povestea
Sistemul descarca facturile primite de pe ANAF. Managerul incarca eFacturile de pe o anumita perioada, apoi selecteaza o factura care nu a fost receptionata. Sistemul gaseste partenerul dupa CUI si il selecteaza. Managerul face receptia cu unul din modurile:
- Receptioneaza. Sistemul deschide fereastra Manager -> Receptii si precompleteaza campurile cu datele de pe factura, apoi deschide dialogul Adauga si precompleteaza campurile cu datele de la prima linie de pe factura. Dupa ce Managerul salveaza linia, Sistemul actualizeaza codul furnizorului pentru produsul respectiv, marcheaza linia de pe eFactura ca receptionata si continua cu urmatoarele linii de pe factura. Dupa ce ultima linie a fost receptionata, Sistemul marcheaza eFactura ca receptionata.
- Fara linii. Sistemul deschide fereastra Urmarire Parteneri, selecteaza partenerul de pe factura si modul CUMPARARE, apoi deschide Adauga Document si precompleteaza campurile. Dupa ce Managerul salveaza factura, Sistemul marcheaza eFactura ca receptionata.
- Doar marcheaza. Sistemul marcheza eFactura ca receptionata.
Data mapping
A received ANAF eInvoice is stored as:
moqui.service.message.SystemMessage
- systemMessageId: AnafReceivedMessage.id
- systemMessageTypeId: ANAFReceivedInvoice
- statusId: SmsgReceived
- isOutgoing: N
- initDate: now
- processedDate: confirmed date
- messageText: rawXml
- senderId: AccountingSupplierParty.Party.PartyTaxScheme.CompanyID
- receiverId: AccountingCustomerParty.Party.PartyTaxScheme.CompanyID
- messageId: cbc:ID(invoice number)
- messageDate: IssueDate
- docType: "Invoice" or "CreditNote"
- docSubType: InvoiceTypeCode or CreditNoteTypeCode
- docControl: LegalMonetaryTotal.TaxInclusiveAmount.value
moqui.service.message.SystemMessageType
- systemMessageTypeId: ANAFReceivedInvoice
- description: "Invoice received through a message from ANAF eFactura"
mantle.account.invoice.InvoiceSystemMessage
- invoiceId: AccountingDocument.id
- systemMessageId: AnafReceivedMessage.id
And the invoice lines are split into one message each:
moqui.service.message.SystemMessage
- systemMessageId: AnafReceivedMessage.id+"_"+InvoiceLine.id
- systemMessageTypeId: ANAFReceivedInvoiceLine
- statusId: SmsgReceived
- isOutgoing: N
- initDate: now
- processedDate: confirmed date
- parentMessageId: AnafReceivedMessage.id
- messageText: InvoiceLineXml
moqui.service.message.SystemMessageType
- systemMessageTypeId: ANAFReceivedInvoiceLine
- description: "Invoice line split from an ANAF eInvoice"
Data statements
- A received(posted in the books) ANAF eInvoice is SystemMessage with statusId=SmsgConfirmed.
- A received ANAF eInvoice line is a SystemMessage with statusId=SmsgConfirmed
Service data mapping
Managerul incarca eFacturile de pe o anumita perioada
Managerul interogheaza Moqui pe o perioada intre from si to.
Moqui interogheaza cloud-anaf-connector la /invoices/search/between (from, to). Cloud-anaf-connector returneaza List<ReceivedInvoice>. Pentru fiecare ReceivedInvoice.id=systemMessageId care nu exista Moqui creeaza un SystemMessage. Moqui consuma SystemMessages noi.
Moqui returneaza Managerului efacturile intre from si to.
find#AnafInvoices
SystemMessage SM
JOIN InvoiceSystemMessage ISM on systemMessageId
WHERE SM.systemMessageTypeId=ANAFReceivedInvoice AND SM.messageDate between(from, to)
IN
- start: start
- end: end
OUT
- id: SM.systemMessageId
- senderId: SM.senderId
- senderName: AccountingSupplierParty.Party.PartyLegalEntity.RegistrationName
- issueDate: SM.messageDate
- invoiceNumber: SM.messageId
- invoiceTotal: LegalMonetaryTotal.TaxInclusiveAmount.value
- taxTotal: TaxTotal.TaxAmount.value
- taxExclusiveAmount: LegalMonetaryTotal.TaxExclusiveAmount.value
- invoiceId: ISM.invoiceId
- statusId: SM.statusId
- rawXml: messageText
find#AnafInvoiceLines
SystemMessage SML WHERE SML.systemMessageTypeId=ANAFReceivedInvoiceLine AND SML.parentMessageId=systemMessageId
IN
- systemMessageId: systemMessageId
OUT
- id: SML.systemMessageId
- lineId: ID
- itemId: Item.SellersItemIdentification.ID
- name: Item.Name + Item.Description
- price: Price.PriceAmount
- priceCurrency: Price.PriceAmount(currencyID)
- quantity: InvoicedQuantity or CreditedQuantity
- uom: UNECERec20ToDisplay(InvoicedQuantity(unitCode) or CreditedQuantity(unitCode))
- total: LineExtensionAmount
- totalCurrency: LineExtensionAmount(currencyID)
- statusId: SML.statusId
Screen data mapping
| Table | find#anafInvoices |
| id | id |
| cif emitent | senderId |
| nume emitent |
senderName |
| data | issueDate |
| numar | invoiceNumber |
| ValCuTVA | invoiceTotal |
| id factura | invoiceId |
| receptionat | true if statusId=SmsgConfirmed else false |
| Receptie popup | selected AnafInvoice AI |
| Partener | Partner P WHERE P.codFiscal=AI.senderId |
| Factura | AI.invoiceNumber |
| Data | AI.issueDate |
| ValFaraTVA | AI.taxExclusiveAmount |
| ValTVA | AI.taxTotal |
| ValCuTVA | AI.invoiceTotal |
| lines summary |
foreach find#AnafInvoiceLines IL IL.lineId IL.name IL.price IL.priceCurrency X IL.quantity uom = IL.total IL.totalCurrency |
No comments to display
No comments to display