Untitled

mail@pastecode.io avatar
unknown
typescript
2 years ago
1.9 kB
4
Indexable
export const FiscalDocumentRelatedsInvoiceColSchema = new Schema<IFiscalDocumentRelatedInvoiceCol>({
    ...FiscalDocumentRelatedInvoiceSchema.obj,
    ffuid: { type: String, required: true }
});

export const FiscalDocumentItemPromotionsCol = new Schema<IFiscalDocumentItemPromotion>({
    ...FiscalDocumentItemPromotionSchema.obj,
    baseAmount: { type: Number, required: true },
});

export const FiscalDocumentItemSchemaColSchema = FiscalDocumentItemSchema.add({
    promotions: { type: [FiscalDocumentItemPromotionsCol], default: [] }
})

class FiscalDocumentService extends FiscalDocumentCoreService<IFiscalDocument> {

            customer: { type: CustomerSchema, required: true },
            paymentDueDate: { type: Date, required: false },
            authorizationDate: { type: Date, required: false },
            ffuid: { type: String, required: false },
            qr: { type: String, required: false },
            authorizationTime: { type: Number, required: false },
            authorizationTimeDIAN: { type: Number, required: false },
            period: { type: String, required: true },
            operator: { type: String, required: true },
            /** Flag para proceso de computeFiscalDocuments */
            computedIndicators: { type: Boolean, default: false },
            /** Pisar items */
            items: { type: [FiscalDocumentItemSchemaColSchema], required: true },
            /** Pisar relatedInvoices */
            relatedInvoices: { type: [FiscalDocumentRelatedsInvoiceColSchema], default: [] },
        }, [
            // Indice para el proceso de computeFiscalDocuments
            { fields: { "computedIndicators": 1, "status": "text" } },
            // Indice para los indicadores de dashboard
            { fields: { "period": "text", "companyCode": "text" } },
        ])
    }