Files
bigcapital/packages/server/src/interfaces/InventoryTransaction.ts
2023-02-03 11:57:50 +02:00

96 lines
2.1 KiB
TypeScript

import { Knex } from 'knex';
import { IItem } from './Item';
import { ISaleInvoice } from './SaleInvoice';
import { ISaleReceipt } from './SaleReceipt';
export type TInventoryTransactionDirection = 'IN' | 'OUT';
export interface IInventoryTransaction {
id?: number;
date: Date | string;
direction: TInventoryTransactionDirection;
itemId: number;
quantity: number | null;
rate: number;
transactionType: string;
transcationTypeFormatted?: string;
transactionId: number;
costAccountId?: number;
entryId: number;
meta?: IInventoryTransactionMeta;
costLotAggregated?: IInventoryCostLotAggregated;
createdAt?: Date;
updatedAt?: Date;
warehouseId?: number;
}
export interface IInventoryTransactionMeta {
id?: number;
transactionNumber: string;
description: string;
}
export interface IInventoryCostLotAggregated {
cost: number;
quantity: number;
}
export interface IInventoryLotCost {
id?: number;
date: Date;
direction: string;
itemId: number;
quantity: number;
rate: number;
remaining: number;
cost: number;
transactionType: string;
transactionId: number;
costAccountId: number;
entryId: number;
createdAt: Date;
exchangeRate: number;
currencyCode: string;
item?: IItem;
invoice?: ISaleInvoice;
receipt?: ISaleReceipt;
}
export interface IItemsQuantityChanges {
itemId: number;
balanceChange: number;
}
export interface IInventoryTransactionsCreatedPayload {
tenantId: number;
inventoryTransactions: IInventoryTransaction[];
trx: Knex.Transaction;
}
export interface IInventoryTransactionsDeletedPayload {
tenantId: number;
oldInventoryTransactions: IInventoryTransaction[];
transactionId: number;
transactionType: string;
trx: Knex.Transaction;
}
export interface IInventoryItemCostScheduledPayload {
startingDate: Date | string;
itemId: number;
tenantId: number;
}
export interface IComputeItemCostJobStartedPayload {
startingDate: Date | string;
itemId: number;
tenantId: number;
}
export interface IComputeItemCostJobCompletedPayload {
startingDate: Date | string;
itemId: number;
tenantId: number;
}