Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,43 +1,59 @@
import { PurchaseInvoiceRepository } from "../../gen/codbex-invoices/dao/PurchaseInvoice/PurchaseInvoiceRepository";
import { PurchaseInvoiceItemRepository } from "../../gen/codbex-invoices/dao/PurchaseInvoice/PurchaseInvoiceItemRepository";
import { PurchaseInvoiceRepository } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoiceRepository";
import { PurchaseInvoiceItemRepository } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoiceItemRepository";
import { PurchaseInvoiceItemEntity } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoiceItemEntity";
import { EntityEvent, Operator } from "@aerokit/sdk/db";

export const trigger = (event) => {
const PurchaseInvoiceDao = new PurchaseInvoiceRepository();
const PurchaseInvoiceItemDao = new PurchaseInvoiceItemRepository();
const validate = () => { };

export const trigger = (event: EntityEvent<PurchaseInvoiceItemEntity>): void => {
const purchaseInvoiceDao = new PurchaseInvoiceRepository();
const purchaseInvoiceItemDao = new PurchaseInvoiceItemRepository();
const item = event.entity;

const items = PurchaseInvoiceItemDao.findAll({
$filter: {
equals: {
PurchaseInvoice: item.PurchaseInvoice
if (!item.PurchaseInvoice) {
return;
}

const items = purchaseInvoiceItemDao.findAll({
conditions: [
{
propertyName: "PurchaseInvoice",
operator: Operator.EQ,
value: item.PurchaseInvoice
}
}
]
});

let net = 0;
let vat = 0;
let gross = 0;
let total = 0;

for (let i = 0; i < items.length; i++) {
if (items[i].Net) {
net += items[i].Net;
vat += items[i].VAT;
gross += items[i].Gross;
}
for (const row of items) {
net += row.Net ?? 0;
vat += row.VAT ?? 0;
gross += row.Gross ?? 0;
}

const header = PurchaseInvoiceDao.findById(item.PurchaseInvoice);
const header = purchaseInvoiceDao.findById(item.PurchaseInvoice);

if (!header) {
return;
}

const discount = header.Discount ?? 0;
const taxes = header.Taxes ?? 0;

header.Total ??= 0;
header.Net = net;
header.VAT = vat;
header.Gross = gross;
header.Total = gross - (gross * discount / 100) + (gross * taxes / 100) + vat;

total = header.Gross - (header.Gross * header.Discount / 100) + (header.Gross * header.Taxes / 100) + header.VAT;
header.Total = total;

header.Name = header.Name.substring(0, header.Name.lastIndexOf("/") + 1) + header.Total;
if (header.Name) {
const index = header.Name.lastIndexOf("/");
if (index >= 0) {
header.Name = header.Name.substring(0, index + 1) + header.Total;
}
}

PurchaseInvoiceDao.update(header);
}
purchaseInvoiceDao.update(header);
};
Original file line number Diff line number Diff line change
@@ -1,40 +1,59 @@
import { PurchaseInvoiceRepository } from "../../gen/codbex-invoices/dao/PurchaseInvoice/PurchaseInvoiceRepository";
import { PurchaseInvoicePaymentRepository } from "../../gen/codbex-invoices/dao/PurchaseInvoice/PurchaseInvoicePaymentRepository";
import { SupplierPaymentRepository } from "codbex-payments/gen/codbex-payments/dao/SupplierPayment/SupplierPaymentRepository";

export const trigger = (event) => {

const PurchaseInvoiceDao = new PurchaseInvoiceRepository();
const PurchaseInvoicePaymentDao = new PurchaseInvoicePaymentRepository();
const SupplierPaymentDao = new SupplierPaymentRepository();

let item = event.entity;
import { PurchaseInvoiceRepository } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoiceRepository";
import { PurchaseInvoicePaymentRepository } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoicePaymentRepository";
import { PurchaseInvoicePaymentEntity } from "../../gen/codbex-invoices/data/PurchaseInvoice/PurchaseInvoicePaymentEntity";
import { SupplierPaymentRepository } from "codbex-payments/gen/codbex-payments/data/SupplierPayment/SupplierPaymentRepository";
import { EntityEvent, Operator } from "@aerokit/sdk/db";

export const trigger = (event: EntityEvent<PurchaseInvoicePaymentEntity>): void => {
const purchaseInvoiceDao = new PurchaseInvoiceRepository();
const purchaseInvoicePaymentDao = new PurchaseInvoicePaymentRepository();
const supplierPaymentDao = new SupplierPaymentRepository();

const item = event.entity;
const operation = event.operation;

if (operation == "create") {
if (!item.PurchaseInvoice) {
return;
}

const supplierPayment = SupplierPaymentDao.findById(item.SupplierPayment);
if (operation === "create" && item.SupplierPayment && item.Id) {
const dbItem = purchaseInvoicePaymentDao.findById(item.Id);
if (!dbItem) {
return;
}

item.Amount = Math.min(supplierPayment.Amount, item.Amount);
const supplierPayment = supplierPaymentDao.findById(item.SupplierPayment);
if (!supplierPayment) {
return;
}

PurchaseInvoicePaymentDao.update(item);
dbItem.Amount = Math.min(supplierPayment.Amount ?? 0, dbItem.Amount ?? 0);
purchaseInvoicePaymentDao.update(dbItem);
}

const items = PurchaseInvoicePaymentDao.findAll({
$filter: {
equals: {
PurchaseInvoice: item.PurchaseInvoice

const items = purchaseInvoicePaymentDao.findAll({
conditions: [
{
propertyName: "PurchaseInvoice",
operator: Operator.EQ,
value: item.PurchaseInvoice
}
}
]
});

let amount = 0;
items.forEach(item => amount += item.Amount);
for (const row of items) {
amount += row.Amount ?? 0;
}

const purchaseInvoice = PurchaseInvoiceDao.findById(item.PurchaseInvoice);
purchaseInvoice.Paid = amount;
purchaseInvoice.Status = purchaseInvoice.Paid >= purchaseInvoice.Total ? 6 : 5;
const purchaseInvoice = purchaseInvoiceDao.findById(item.PurchaseInvoice);
if (!purchaseInvoice) {
return;
}

purchaseInvoice.Paid = amount;
purchaseInvoice.Status = amount >= (purchaseInvoice.Total ?? 0) ? 6 : 5;

PurchaseInvoiceDao.update(purchaseInvoice);
}
purchaseInvoiceDao.update(purchaseInvoice);
};
66 changes: 40 additions & 26 deletions codbex-invoices/events/SalesInvoiceItem/SalesInvoiceItemHandler.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,57 @@
import { SalesInvoiceRepository } from "../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoiceRepository";
import { SalesInvoiceItemRepository } from "../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoiceItemRepository";

export const trigger = (event) => {
const SalesInvoiceDao = new SalesInvoiceRepository();
const SalesInvoiceItemDao = new SalesInvoiceItemRepository();
import { SalesInvoiceRepository } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceRepository";
import { SalesInvoiceItemRepository } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceItemRepository";
import { SalesInvoiceItemEntity } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceItemEntity";
import { EntityEvent, Operator } from "@aerokit/sdk/db";

export const trigger = (event: EntityEvent<SalesInvoiceItemEntity>): void => {
const salesInvoiceDao = new SalesInvoiceRepository();
const salesInvoiceItemDao = new SalesInvoiceItemRepository();
const item = event.entity;

const items = SalesInvoiceItemDao.findAll({
$filter: {
equals: {
SalesInvoice: item.SalesInvoice
if (!item.SalesInvoice) {
return;
}

const items = salesInvoiceItemDao.findAll({
conditions: [
{
propertyName: "SalesInvoice",
operator: Operator.EQ,
value: item.SalesInvoice
}
}
]
});

let net = 0;
let vat = 0;
let gross = 0;
let total = 0;

for (let i = 0; i < items.length; i++) {
if (items[i].Net) {
net += items[i].Net;
vat += items[i].VAT;
gross += items[i].Gross;
}
for (const row of items) {
net += row.Net ?? 0;
vat += row.VAT ?? 0;
gross += row.Gross ?? 0;
}

const header = SalesInvoiceDao.findById(item.SalesInvoice);
const header = salesInvoiceDao.findById(item.SalesInvoice);

if (!header) {
return;
}

const discount = header.Discount ?? 0;
const taxes = header.Taxes ?? 0;

header.Total ??= 0;
header.Net = net;
header.VAT = vat;
header.Gross = gross;
header.Total = gross - (gross * discount / 100) + (gross * taxes / 100) + vat;

total = header.Gross - (header.Gross * header.Discount / 100) + (header.Gross * header.Taxes / 100) + header.VAT;
header.Total = total;

header.Name = header.Name.substring(0, header.Name.lastIndexOf("/") + 1) + header.Total;
if (header.Name) {
const index = header.Name.lastIndexOf("/");
if (index >= 0) {
header.Name = header.Name.substring(0, index + 1) + header.Total;
}
}

SalesInvoiceDao.update(header);
}
salesInvoiceDao.update(header);
};
Original file line number Diff line number Diff line change
@@ -1,39 +1,58 @@
import { SalesInvoiceRepository } from "../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoiceRepository";
import { SalesInvoicePaymentRepository } from "../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoicePaymentRepository";
import { CustomerPaymentRepository } from "codbex-payments/gen/codbex-payments/dao/CustomerPayment/CustomerPaymentRepository";

export const trigger = (event) => {

const SalesInvoiceDao = new SalesInvoiceRepository();
const SalesInvoicePaymentDao = new SalesInvoicePaymentRepository();
const CustomerPaymentDao = new CustomerPaymentRepository();

let item = event.entity;
import { SalesInvoiceRepository } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceRepository";
import { SalesInvoicePaymentRepository } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoicePaymentRepository";
import { SalesInvoicePaymentEntity } from "../../gen/codbex-invoices/data/SalesInvoice/SalesInvoicePaymentEntity";
import { CustomerPaymentRepository } from "codbex-payments/gen/codbex-payments/data/CustomerPayment/CustomerPaymentRepository";
import { EntityEvent, Operator } from "@aerokit/sdk/db";

export const trigger = (event: EntityEvent<SalesInvoicePaymentEntity>): void => {
const salesInvoiceDao = new SalesInvoiceRepository();
const salesInvoicePaymentDao = new SalesInvoicePaymentRepository();
const customerPaymentDao = new CustomerPaymentRepository();

const item = event.entity;
const operation = event.operation;

if (operation == "create") {
if (!item.SalesInvoice) {
return;
}

if (operation === "create" && item.CustomerPayment) {
const customerPayment = customerPaymentDao.findById(item.CustomerPayment);

const customerPayment = CustomerPaymentDao.findById(item.CustomerPayment);
if (customerPayment && item.Id) {
const dbItem = salesInvoicePaymentDao.findById(item.Id);

item.Amount = Math.min(customerPayment.Amount, item.Amount);
if (!dbItem) {
return;
}

SalesInvoicePaymentDao.update(item);
dbItem.Amount = Math.min(customerPayment.Amount ?? 0, dbItem.Amount ?? 0);
salesInvoicePaymentDao.update(dbItem);
}
}

const items = SalesInvoicePaymentDao.findAll({
$filter: {
equals: {
SalesInvoice: item.SalesInvoice
const items = salesInvoicePaymentDao.findAll({
conditions: [
{
propertyName: "SalesInvoice",
operator: Operator.EQ,
value: item.SalesInvoice
}
}
]
});

let amount = 0;
items.forEach(item => amount += item.Amount);
for (const row of items) {
amount += row.Amount ?? 0;
}

const salesInvoice = salesInvoiceDao.findById(item.SalesInvoice);
if (!salesInvoice) {
return;
}

const salesInvoice = SalesInvoiceDao.findById(item.SalesInvoice);
salesInvoice.Paid = amount;
salesInvoice.Status = salesInvoice.Paid >= salesInvoice.Total ? 6 : 5;
salesInvoice.Status = amount >= (salesInvoice.Total ?? 0) ? 6 : 5;

SalesInvoiceDao.update(salesInvoice);
}
salesInvoiceDao.update(salesInvoice);
};
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { SalesInvoiceRepository as SalesInvoiceDao } from "../../../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoiceRepository";
import { Controller, Get } from "sdk/http";
import { SalesInvoiceRepository as SalesInvoiceDao } from "../../../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceRepository";

import { Controller, Get, Documentation } from "@aerokit/sdk/http";

@Controller
@Documentation("codbex-invoices - Generate Credit Note")
class GenerateCreditNoteService {

private readonly salesInvoiceDao;

constructor() {
this.salesInvoiceDao = new SalesInvoiceDao();
}

@Get("/salesInvoiceData/:salesInvoiceId")
@Documentation("Get Sales Invoice Data")
public salesInvoiceData(_: any, ctx: any) {
const salesInvoiceId = ctx.pathParameters.salesInvoiceId;
const salesInvoice = this.salesInvoiceDao.findById(salesInvoiceId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { SalesInvoiceRepository as SalesInvoiceDao } from "../../../../gen/codbex-invoices/dao/SalesInvoice/SalesInvoiceRepository";
import { Controller, Get } from "sdk/http";
import { SalesInvoiceRepository as SalesInvoiceDao } from "../../../../gen/codbex-invoices/data/SalesInvoice/SalesInvoiceRepository";

import { Controller, Get, Documentation } from "@aerokit/sdk/http";

@Controller
@Documentation("codbex-invoices - Generate Debit Note")
class GenerateDebitNoteService {
private readonly salesInvoiceDao;

Expand All @@ -10,6 +12,7 @@ class GenerateDebitNoteService {
}

@Get("/salesInvoiceData/:salesInvoiceId")
@Documentation("Get Sales Invoice Data")
public salesInvoiceData(_: any, ctx: any) {
const salesInvoiceId = ctx.pathParameters.salesInvoiceId;
const salesInvoice = this.salesInvoiceDao.findById(salesInvoiceId);
Expand Down
Loading
Loading