import { CommonService as MediaCommonService, MediasModel } from '@tomei/media';
import { DocumentStatus, DocType } from '../enum';
import { IDocumentAttr } from './interfaces/document-attr.interface';
import { IDocumentFindAll } from './interfaces/document-find-all.interface';
import DocumentItem from './document-item';
import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
import { DocumentRepository } from './document.repository';
import FinanceCustomerBase from '../customer/customer';
import DocumentModel from '../models/document.entity';
import { LoginUserBase } from '@tomei/general';
import { IAccountSystem } from '../interfaces/account-system.interface';
export default class Document extends AccountSystemEntity {
    DocNo: string;
    private _DocType;
    private _DocDate;
    Currency: string;
    private _Amount;
    Description: string;
    private _Status;
    IssuedById: string;
    IssuedToId: string;
    IssuedToType: string;
    RelatedObjectId: string;
    RelatedObjectType: string;
    CreatedById: string;
    CreatedAt: Date;
    UpdatedById: string;
    UpdatedAt: Date;
    UseAccSystemDocYN: string;
    protected _ObjectType: string;
    get ObjectType(): string;
    private _DocHTMLFileMediaId;
    private _DocPDFFileMediaId;
    private static _RepositoryBase;
    private _DbTransaction;
    private _IsNewRecord;
    private _DocumentItems;
    private static _MediaRepository;
    mediaCommonService: MediaCommonService;
    private get IsNewRecord();
    private set IsNewRecord(value);
    get DocType(): DocType;
    set DocType(docType: DocType);
    get DocDate(): Date;
    set DocDate(date: Date);
    get DocHTMLFileMediaId(): string;
    set DocHTMLFileMediaId(mediaId: string);
    get DocPDFFileMediaId(): string;
    set DocPDFFileMediaId(mediaId: string);
    get Amount(): number;
    private set Amount(value);
    get Status(): DocumentStatus;
    set Status(status: DocumentStatus);
    get RepositoryBase(): DocumentRepository;
    get ObjectId(): string;
    get ObjectName(): string;
    get TableName(): string;
    constructor(dbTransaction?: any, documentData?: any);
    init(params: IDocumentAttr): void;
    static initDocument(dbTransaction: any, docNo: string): Promise<Document>;
    reCalculateAmount(): Promise<void>;
    get DocumentItems(): Promise<DocumentItem[]>;
    getDocumentItems(dbTransaction?: any): Promise<DocumentItem[]>;
    static settleByCreditNote(loginUser: LoginUserBase, dbTransaction: any, DocNo: string, AmountToReduce: number): Promise<Document>;
    static DEFAULT_INVOICE_TEMPLATE_HTML(): Promise<Express.Multer.File>;
    DEFAULT_INVOICE_TEMPLATE_PDF(customer: FinanceCustomerBase, date?: Date): Promise<Express.Multer.File>;
    DEFAULT_RECEIPT_TEMPLATE_PDF(customer: FinanceCustomerBase, date?: Date): Promise<Express.Multer.File>;
    get DocumentFileInHTML(): Promise<MediasModel>;
    get DocumentFileInPDF(): Promise<MediasModel>;
    generateInvoice(userId?: string, customer?: FinanceCustomerBase, dbTransaction?: any, date?: Date): Promise<{
        HTMLMedia: MediasModel;
        PDFMedia: MediasModel;
    }>;
    generateReceipt(userId?: string, customer?: FinanceCustomerBase, transaction?: any, date?: Date): Promise<{
        HTMLMedia: MediasModel;
        PDFMedia: MediasModel;
    }>;
    generateCreditNote(userId?: string, customer?: FinanceCustomerBase): Promise<void>;
    newDocumentItem(documentItem?: DocumentItem): Promise<DocumentItem>;
    getPreviousDocument(docType: DocType): Promise<DocumentModel>;
    static findAll(loginUser: LoginUserBase, dbTransaction: any, page?: number, row?: number, search?: IDocumentFindAll, order?: [string, string][], accountingSystem?: IAccountSystem): Promise<{
        count: number;
        rows: DocumentModel[];
    }>;
}
//# sourceMappingURL=document.d.ts.map