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" } },
])
}