Exemplul RON - RON cu discount valoric brut pe factură¶
Atenționare
La nivelul header-ului facturii, NU la nivelul detaliilor:
{
'discountType': 'Value',
'discountPercent': null,
'discountValueOnNet': False,
'discountNetValue': 21.01,
'discountVatValue': 3.99,
'discountGrossValue': 25
}
Discount-ul BRUT trebuie specificat la nivel de detaliu de factură și trebuie însumat la nivelul întregii facturi
In exemplul de mai jos se poate observa cum la nivelul detaliilor avem discount-urile brute 9.37 + 12.5 + 3.13, iar însumat acestea sunt de 25 RON la nivelul întregii facturi
from working_examples.keez_public_api import KeezPublicApi
class Service:
def __init__(self):
token_url = 'https://staging.keez.ro/idp/connect/token'
api_url = f'https://staging.keez.ro/api/v1.0/public-api'
application_id = {APPLICATION_ID}
secret = {SECRET}
self.client_eid = {CLIENT_EID}
self.wrapper_service = KeezPublicApi(application_id=application_id, secret=secret, token_url=token_url, api_url=api_url)
def getItems(self):
return self.wrapper_service.items(self.client_eid)
def validateInvoice(self, invoiceEid):
self.wrapper_service.validate_invoice(self.client_eid, invoiceEid)
def createItem(self):
code = 'SERV_DIV' # Se completează codul articolului pe baza căruia articolul poate fi găsit ulterior
data = {
'code': 'SERV_DIV',
'name': 'Servicii diverse', # Se completează numele articolului, acesta trebuie să fie unic, iar dacă mai există în aplicație, se va căuta pe baza codului
'currencyCode': 'RON',
'measureUnitId': 1,
'isActive': True,
'categoryExternalId': 'MISCSRV'
}
# Se caută articolul deja existent pe baza codului, dacă acesta există se va folosi, dacă nu, se va crea
items = self.getItems()
itemExternalId = next((p for p in items if p['code'] == code), None)
if itemExternalId:
return itemExternalId
return self.wrapper_service.create_item(self.client_eid, data)
def createInvoice(self, itemEid):
data = {
'series': 'SERIE',
'documentDate': 20241212,
'dueDate': 20241212,
'vatOnCollection': False,
'currencyCode': 'RON',
'paymentTypeId': 3,
'originalNetAmount': 80,
'originalVatAmount': 15.2,
'netAmount': 58.99,
'vatAmount': 11.21,
'grossAmount': 70.2,
'discountType': 'Value',
'discountPercent': None,
'discountValueOnNet': False,
'discountNetValue': 21.01,
'discountVatValue': 3.99,
'discountGrossValue': 25,
'partner': {
'isLegalPerson': True,
'partnerName': 'DIGITAL KEEZ SRL',
'identificationNumber': '37888790',
'countryCode': 'RO'
},
'invoiceDetails': [
{
'itemExternalId': itemEid,
'measureUnitId': 1,
'unitPrice': 15,
'quantity': 2,
'originalNetAmount': 30,
'originalVatAmount': 5.7,
'netAmount': 22.13,
'vatPercent': 19,
'vatAmount': 4.2,
'grossAmount': 26.33,
'discountType': 'Value',
'discountPercent': None,
'discountValueOnNet': False,
'discountNetValue': 7.87,
'discountVatValue': 1.5,
'discountGrossValue': 9.37
},
{
'itemExternalId': itemEid,
'measureUnitId': 1,
'unitPrice': 10,
'quantity': 4,
'originalNetAmount': 40,
'originalVatAmount': 7.6,
'netAmount': 29.49,
'vatPercent': 19,
'vatAmount': 5.61,
'grossAmount': 35.1,
'discountType': 'Value',
'discountPercent': None,
'discountValueOnNet': False,
'discountNetValue': 10.51,
'discountVatValue': 1.99,
'discountGrossValue': 12.5
},
{
'itemExternalId': itemEid,
'measureUnitId': 1,
'unitPrice': 10,
'quantity': 1,
'originalNetAmount': 10,
'originalVatAmount': 1.9,
'netAmount': 7.37,
'vatPercent': 19,
'vatAmount': 1.4,
'grossAmount': 8.77,
'discountType': 'Value',
'discountPercent': None,
'discountValueOnNet': False,
'discountNetValue': 2.63,
'discountVatValue': 0.5,
'discountGrossValue': 3.13
}
]
}
return self.wrapper_service.create_invoice(self.client_eid, data)
if __name__ == '__main__':
service = Service()
itemEid = service.createItem().get('externalId')
print('Create item all good!')
invoiceEid = service.createInvoice(itemEid).get('externalId')
print('Create invoice all good!')
service.validateInvoice(invoiceEid)
print('Validate invoice all good!')
print('Done!')