Skip to content

INFO

Obiekty w bazie danych dla faktury zakupu i sprzedaży są identyczne.

W interfejsie są to dwa komponenty, odpowiadajace wybranej fakturze.

  • v_orderinvoice - faktura zakupu
  • v_saleinvoice - faktura sprzedaży

Na razie w procedurze [erp].[invoice_InsertUpdate] @invoiceCategory jest ustawione na (5). Większe wartości mogą wyrzucać błąd (Potrzebna zmiana wielkości w tabeli docelowej).

API

Wypisanie wszystkich api, które są używane przez komponenty. Szczegółowy opis konkretnych API jest poniżej.

NR API z s Opis
10.1 {{host}}/api/erp/invoice/get/{{app_name}}/ X X Pobiera dokument
10.2 {{host}}/api/erp/invoice/set-header/{{app_name}}/{{invoiceid}} X X Zapisuje nagłówek
10.3.1 {{host}}/api/erp/invoice/set-line/{{app_name}}/{{invoiceid}} X X Zapisuje pozycję
10.3.2 {{host}}/api/erp/invoice/set-lines/{{app_name}}/{{invoiceid}} X X Zapisuje tablice pozycji
10.4 {{host}}/api/erp/invoice/set-status/{{app_name}}/{{invoiceid}} X X Zapisuje status
10.5 {{host}}/api/srs/914-bankAccountGet X X Lista kont bankowych
10.6 {{host}}/api/srs/972-invoice-document-relations X - Powiązania dokumentu przyjęcia
10.7 {{host}}/api/srs/973-invoice-order-relations X - Powiązania

Faktura

1 DB - Objects

Tabele

  • [document].[invoice] - nagłówek faktury
    • invoiceCategory - typ dokumentu
    • invoiceIssueDate - data wystawienia faktury
  • [document].[invoiceline] - pozycje faktury

Procedury

  • [erp].[invoice_InsertUpdate] - dodanie / aktualizacja nagłówka
  • [erp].[invoice_get] - pobranie danych z faktury
  • [erp].[invoiceLine_InsertUpdate] - dodanie / akutalizacja pozycji faktury
  • [erp].[invoiceline_list] - lista pozycji faktury

Słowniki

Zobacz dokumentację słowników

2. Ustawienia / zmienne / parametry

General

  • {app_name} moze byc zastapiony [[app_name]]

Parametry

  • instance.sales.advanceindex - Indeks zaliczkowy używany przy wystawianiu zaliczki z zamówienia sprzedażowego"
  • instance.salesparts.advanceindex - indeks zaliczkowy dla zamowienia sprzedaży czesci
  • instance.purchase.defaultPaymentType - (obsolete) Domyślna wartość sposobu płatności na fakturze zakupu

3 UI - User Interface

Przykład

localhost:5500/pages/erp/v-new-document?componentname=orderinvoice&app_name=erp - tworzenie nowego dokumentu

10 API - REST API

10.1 API Pobranie faktury

REQUEST

HTTP
GET {{host}}/api/erp/invoice/get/{{app_name}}/{{invoice_id}}

RESPONSE

  • JSON
    • invoice
    • invoiceline

DB

  • [erp].[invoice_get]
  • [erp].[invoiceline_list]

10.2 API Zapisanie nagłówka faktury

REQUEST - Zapisanie nagłówka

HTTP
POST {{host}}/api/erp/invoice/set-header/{{app_name}}/{{invoiceid}}
HTTP
1
2
3
4
5
@invoiceid = {{$guid}}
curl '{{host}}/api/erp/invoice/set-header/erp/{{invoiceid}}' \
  -H 'content-type: application/json' \
  --data-raw '{"countryCode":"pl","city":"Warszawa","description":"Faktura zakupowa","summaryCalculationType":1,"organisationUnitID":"","bankAccount":"","termsOfdelivery":"","deliveryCode":"","definedHints":"","deliveryWayID":"f90234ef-7791-46d0-a189-428a2a08b378","paymentTypeID":"cb07cf76-7fc0-4cdd-be2c-41265d357a49","currency":"PLN","invoiceMemo":"","currencyExchangeTableNumber":"","currencyExchangeRate":"","currencyExchangeDate":"","invoiceIssueDate":"2023-06-29","saleDate":"2023-06-23","status":0,"paymentDate":"2023-07-13","issuerID":"c832add5-90e6-4a98-8982-2ef0c13e53dc","invoiceFullNR":"","invoiceCategory":"FZ-S","warehouseID":"","username":"","productID":"","documentType":"","invoiceAcceptUser":"","groupID":"","groupID_Name":"","draftVatValue":"","draftNetValue":"","draftGrossValue":"","invoiceID":"{{invoiceid}}","statusName":"Szkic","documentTypeConfig":"invoiceMemoExport","paymentTime":14,"taxCode":"","invoiceFullNR2":"{{$timestamp}}","invoiceReceiveDate":"2023-06-29"}' \
  --compressed

DB

  • [erp].[invoice_InsertUpdate]

10.3.1 API Zapisanie pojedyńczej pozycji faktury

REQUEST - Zapisanie pozycji

HTTP
POST {{host}}/api/erp/invoice/set-line/{{app_name}}/{invoiceid}

liczymy od netto, liczymy od brutto,wlasne

Algorytm

  • jesli wprowadzam cene netto ustawia sie netto i kalkulacja
  • jesli wprowadzam cene brutto ustawiana sie od brutto
  • jesli dokonuje zmiany w innym polu wtedy ustawia sie calculationtype=3 (custom)

(dla faktur zakupowych ni wyswietlamy discount)

TYP calculationtype 1 2 3 4 5 6 7 8
NETTO 1 initialnetprice itemQuantity discounRate itemPrice netValue itemTaxRate vatValue grossValue
BRUTTO 2 initialgrossprice itemQuantity discountRate itemGrossPrice netValue itemTaxRate vatValue grossValue
INNY 3 initialnetprice itemQuantity discountRate itemPrice netValue itemTaxRate vatValue grossValue
SQL
/*Kalkulacje*/
set @calculationTaxrate = case when @itemTaxRate is null or @itemTaxRate < 0 then 0 else @itemTaxRate end
set @calculationDiscountRate = case when isnull(@discountRate, 0) <= 0 then 100.0 else 100 - @discountRate end
if (@calculationtype =1) --od netto
Begin
    set @itemPrice =    ROUND(@initialNetPrice * @calculationDiscountRate / 100, 4)
    set @netValue =     ROUND(@itemPrice * @itemQuantity, 2)
    set @grossValue =   ROUND(@netValue + @netValue * (@calculationTaxrate / 100.0), 2)
    set @vatValue =     ROUND(@grossValue - @netValue, 2);
end

if (@calculationtype =2) --od brutto
Begin
    set @itemGrossPrice =   ROUND(@initialGrossPrice * (@calculationDiscountRate / 100), 4)
    set @itemprice =    @itemGrossPrice
    set @netValue =     ROUND(@grossValue * 100.0 / (100.0 + @calculationTaxrate), 2);
    set @grossValue =   ROUND(@itemGrossPrice * @itemQuantity, 2);
    set @vatValue =     ROUND(@grossValue - @netValue, 2);

end

if (@calculationtype =3) --custom
Begin
    set @itemPrice =    ROUND(@initialNetPrice * (@calculationTaxrate / 100), 4)
End
SQL
invoiceLineCalculate(calculationtype, model,ktora wartosc sie zeminila 'grossvalue')

Parametry

  • calculationtype - wymagane
    • 1 netto (default)
    • 2 brutto
    • 3 custom
  • itemQuantity - wymagane
  • initialnetPrice (4 miejsca)
  • initialgrossPrice (4 miejsca)
  • discount (default 0) rabaty sa tylko jesli calculation type netto
  • itemprice (4 miejsca)
  • itemgrossprice (4 miejsca)
  • netValue (2 miejsca)
  • taxrate - wymagane
    • -3 SNPUU Nie podlega
    • -2 SZL Odwrotne obciazenie
    • empty SPU
    • 8
    • 23
    • ..
  • vatvalue
  • grossValue - wymagane jesli brutto

DB

  • [erp].[invoiceLine_InsertUpdate]

10.3.2 API Zapisanie listy pozycji faktury

REQUEST - Zapisanie listy pozycji

HTTP
POST {{host}}/api/erp/invoice/set-lines/{{app_name}}/{invoiceid}

DB

  • [erp].[invoiceLine_InsertUpdate]

10.4 API Zapisanie statusu faktury

REQUEST

HTTP
POST {{host}}/api/erp/invoice/set-status/[[app_name]]/{invoiceid}

DB

  • [erp].[invoice_InsertUpdate]

10.5 API Lista kont bankowych

REQUEST

HTTP
POST {{host}}/api/srs/914-bankAccountGet/list?ptype=object-ocase&dictionary=invoice_purchase

DB

- [erp].[bankAccount_List]

10.6 API Lista możliwych połączeń dokumentu przyjęcia

REQUEST

HTTP
POST {{host}}/api/srs/972-invoice-document-relations/list?ptype=object-ocase&invoiceID={invoiceID}&baseDocumentType={baseDocumentType}&username={username}

DB

  • [erp].[document_List_DictionaryForPurchaseInvoice]

10.7 API Lista dostępnych połączeń zamówień

REQUEST

HTTP
POST {{host}}/api/srs/973-invoice-order-relations/list?ptype=object-ocase&invoiceID={invoiceID}&baseDocumentType={baseDocumentType}&username={username}

DB

  • [erp].[order_List_DictionaryForPurchaseInvoice]

OBSOLETE

API Kopiowanie faktury

SQL
1
2
3
  sql.execute("[document].[invoice_copy]"
  , new { username = cc.auth.profile.userName(), sourceInvoiceID = sourceInvoiceID, invoiceID = invoiceID, invoiceIssueDate = invoiceIssueDate,
  resultInvoiceType = resultInvoiceType, copyAutoAssignItemTaxRatesAndCalculateTax = copyAutoAssignItemTaxRatesAndCalculateTax });