Example #1
0
 public DPPVATBankExpenditureNoteItemDto(DPPVATBankExpenditureNoteItemModel item, List <DPPVATBankExpenditureNoteDetailModel> details)
 {
     InternalNote      = new InternalNoteDto(item, details);
     OutstandingAmount = item.OutstandingAmount;
     Id     = item.Id;
     Select = true;
 }
 public ReportDto(DPPVATBankExpenditureNoteDetailModel detail, DPPVATBankExpenditureNoteItemModel itemDetail, DPPVATBankExpenditureNoteModel documentItem)
 {
     ExpenditureId     = documentItem.Id;
     ExpenditureNoteNo = documentItem.DocumentNo;
     ExpenditureDate   = documentItem.Date;
     CategoryName      = detail.CategoryName;
     PaymentMethod     = detail.PaymentMethod;
     DPP                = itemDetail.DPP;
     VAT                = itemDetail.VATAmount;
     Amount             = documentItem.Amount;
     CurrencyCode       = documentItem.CurrencyCode;
     CurrencyRate       = documentItem.CurrencyRate;
     BankName           = documentItem.BankName;
     SupplierId         = itemDetail.SupplierId;
     SupplierName       = itemDetail.SupplierName;
     InternalNoteId     = itemDetail.InternalNoteId;
     InternalNoteNo     = itemDetail.InternalNoteNo;
     InternalNoteAmount = itemDetail.TotalAmount;
     OutstandingAmount  = itemDetail.OutstandingAmount;
     InvoiceId          = detail.InvoiceId;
     InvoiceNo          = detail.InvoiceNo;
     InvoiceAmount      = detail.Amount;
     PaidAmount         = itemDetail.TotalAmount;
     Difference         = InternalNoteAmount - PaidAmount;
     BillsNo            = detail.BillsNo;
     PaymentBills       = detail.PaymentBills;
     SupplierCode       = itemDetail.SupplierCode;
     DeliveryOrdersNo   = detail.DeliveryOrdersNo;
     AmountDetail       = detail.Amount;
 }
Example #3
0
        public async Task <int> Create(FormDto form)
        {
            var documentNo = await GetDocumentNo("K", form.Bank.BankCode, _identityService.Username);

            var model = new DPPVATBankExpenditureNoteModel(documentNo, form.Bank.Id, form.Bank.AccountNumber, form.Bank.BankName, form.Bank.BankCode, form.Currency.Id, form.Currency.Code, form.Currency.Rate, form.Supplier.Id, form.Supplier.Name, form.Supplier.IsImport, form.BGCheckNo, form.Amount, form.Date.GetValueOrDefault(), form.Bank.Currency.Code, form.Bank.Currency.Id, form.Bank.Currency.Rate);

            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
            _dbContext.DPPVATBankExpenditureNotes.Add(model);
            _dbContext.SaveChanges();

            foreach (var formItem in form.Items.Where(element => element.Select))
            {
                var item = new DPPVATBankExpenditureNoteItemModel(model.Id, formItem.InternalNote.Id, formItem.InternalNote.DocumentNo, formItem.InternalNote.Date, formItem.InternalNote.DueDate, formItem.InternalNote.Supplier.Id, formItem.InternalNote.Supplier.Name, formItem.InternalNote.Supplier.IsImport, formItem.InternalNote.VATAmount, formItem.InternalNote.IncomeTaxAmount, formItem.InternalNote.DPP, formItem.InternalNote.TotalAmount, formItem.InternalNote.Currency.Id, formItem.InternalNote.Currency.Code, formItem.OutstandingAmount, formItem.InternalNote.Supplier.Code);
                EntityExtension.FlagForCreate(item, _identityService.Username, UserAgent);
                _dbContext.DPPVATBankExpenditureNoteItems.Add(item);
                _dbContext.SaveChanges();

                foreach (var formDetail in formItem.InternalNote.Items.Where(element => element.SelectInvoice))
                {
                    var detail = new DPPVATBankExpenditureNoteDetailModel(model.Id, item.Id, formDetail.Invoice.Id, formDetail.Invoice.DocumentNo, formDetail.Invoice.Date, formDetail.Invoice.ProductNames, formDetail.Invoice.Category.Id, formDetail.Invoice.Category.Name, formDetail.Invoice.Amount, formDetail.Invoice.PaymentMethod, formDetail.Invoice.DeliveryOrdersNo, formDetail.Invoice.PaymentBills, formDetail.Invoice.BillsNo);
                    EntityExtension.FlagForCreate(detail, _identityService.Username, UserAgent);
                    _dbContext.DPPVATBankExpenditureNoteDetails.Add(detail);
                    _dbContext.SaveChanges();
                }
            }

            var internalNoteIds = form.Items.Where(element => element.Select).Select(element => element.InternalNote.Id).ToList();
            var invoiceNoteIds  = form.Items.Where(element => element.Select).SelectMany(element => element.InternalNote.Items).Where(element => element.SelectInvoice).Select(element => element.Invoice.Id).ToList();

            await UpdateInternalNoteInvoiceNoteIsPaid(true, model.Id, model.DocumentNo, internalNoteIds, invoiceNoteIds);

            return(model.Id);
        }
 public InternalNoteDto(DPPVATBankExpenditureNoteItemModel item, List <DPPVATBankExpenditureNoteDetailModel> details)
 {
     Id              = item.Id;
     DocumentNo      = item.InternalNoteNo;
     Date            = item.InternalNoteDate;
     DueDate         = item.DueDate;
     Supplier        = new SupplierDto(item.SupplierId, item.SupplierName, item.IsImportSupplier, item.SupplierCode);
     VATAmount       = item.VATAmount;
     IncomeTaxAmount = item.IncomeTaxAmount;
     DPP             = item.DPP;
     TotalAmount     = item.TotalAmount;
     Currency        = new CurrencyDto(item.CurrencyCode, item.CurrencyId, 0);
     Items           = details.Select(detail => new InternalNoteInvoiceDto(detail)).ToList();
 }
        public async Task <int> Update(int id, FormDto form)
        {
            var model = _dbContext
                        .DPPVATBankExpenditureNotes
                        .FirstOrDefault(entity => entity.Id == id);

            model.UpdateData(form.Amount, form.Supplier.Id, form.Supplier.IsImport, form.Supplier.Name, form.BGCheckNo, form.Date.GetValueOrDefault(), form.Currency.Rate);
            EntityExtension.FlagForUpdate(model, _identityService.Username, UserAgent);
            _dbContext.DPPVATBankExpenditureNotes.Update(model);

            var items = _dbContext.DPPVATBankExpenditureNoteItems
                        .Where(entity => entity.DPPVATBankExpenditureNoteId == id)
                        .ToList()
                        .Select(element =>
            {
                EntityExtension.FlagForDelete(element, _identityService.Username, UserAgent);
                return(element);
            })
                        .ToList();

            _dbContext.DPPVATBankExpenditureNoteItems.UpdateRange(items);

            var details = _dbContext.DPPVATBankExpenditureNoteDetails
                          .Where(entity => entity.DPPVATBankExpenditureNoteId == id)
                          .ToList()
                          .Select(element =>
            {
                EntityExtension.FlagForDelete(element, _identityService.Username, UserAgent);
                return(element);
            })
                          .ToList();

            _dbContext.DPPVATBankExpenditureNoteDetails.UpdateRange(details);

            var detailsDo = _dbContext.DPPVATBankExpenditureNoteDetailDos
                            .Where(entity => entity.DPPVATBankExpenditureNoteId == id)
                            .ToList()
                            .Select(element =>
            {
                EntityExtension.FlagForDelete(element, _identityService.Username, UserAgent);
                return(element);
            })
                            .ToList();

            _dbContext.DPPVATBankExpenditureNoteDetailDos.UpdateRange(detailsDo);

            var existingInternalNoteIds = items.Select(element => element.InternalNoteId).ToList();
            var existingInvoiceNoteIds  = details.Select(element => element.InvoiceId).ToList();

            await UpdateInternalNoteInvoiceNoteIsPaid(false, model.Id, model.DocumentNo, existingInternalNoteIds, existingInvoiceNoteIds);

            var formItems = form.Items.Where(item => item.Select);

            if (formItems != null)
            {
                foreach (var formItem in formItems)
                {
                    var item = new DPPVATBankExpenditureNoteItemModel(model.Id, formItem.InternalNote.Id, formItem.InternalNote.DocumentNo, formItem.InternalNote.Date, formItem.InternalNote.DueDate, formItem.InternalNote.Supplier.Id, formItem.InternalNote.Supplier.Name, formItem.InternalNote.Supplier.IsImport, formItem.InternalNote.VATAmount, formItem.InternalNote.IncomeTaxAmount, formItem.InternalNote.DPP, formItem.InternalNote.TotalAmount, formItem.InternalNote.Currency.Id, formItem.InternalNote.Currency.Code, formItem.OutstandingAmount, formItem.InternalNote.Supplier.Code);
                    EntityExtension.FlagForCreate(item, _identityService.Username, UserAgent);
                    _dbContext.DPPVATBankExpenditureNoteItems.Add(item);
                    _dbContext.SaveChanges();

                    var formDetails = formItem.InternalNote.Items.Where(invoiceItem => invoiceItem.SelectInvoice);

                    if (formDetails != null)
                    {
                        foreach (var formDetail in formItem.InternalNote.Items.Where(invoiceItem => invoiceItem.SelectInvoice))
                        {
                            var detailDoJson = JsonConvert.SerializeObject(formDetail.Invoice.DetailDO);
                            var detail       = new DPPVATBankExpenditureNoteDetailModel(model.Id, item.Id, formDetail.Invoice.Id, formDetail.Invoice.DocumentNo, formDetail.Invoice.Date, formDetail.Invoice.ProductNames, formDetail.Invoice.Category.Id, formDetail.Invoice.Category.Name, formDetail.Invoice.Amount, formDetail.Invoice.PaymentMethod, formDetail.Invoice.DeliveryOrdersNo, formDetail.Invoice.PaymentBills, formDetail.Invoice.BillsNo, detailDoJson);
                            EntityExtension.FlagForCreate(detail, _identityService.Username, UserAgent);
                            _dbContext.DPPVATBankExpenditureNoteDetails.Add(detail);
                            _dbContext.SaveChanges();

                            var detailDos = formDetail.Invoice.DetailDO;

                            if (detailDos != null)
                            {
                                foreach (var detailDo in formDetail.Invoice.DetailDO)
                                {
                                    var detailDoDd = new DPPVATBankExpenditureNoteDetailDoModel(detailDo.DONo, detailDo.TotalAmount, detailDo.PaymentBill, detailDo.BillNo, detailDo.DOId, detailDo.CurrencyRate);
                                    EntityExtension.FlagForCreate(detailDoDd, _identityService.Username, UserAgent);
                                    _dbContext.DPPVATBankExpenditureNoteDetailDos.Add(detailDoDd);
                                    _dbContext.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }

            var internalNoteIds = form.Items.Where(element => element.Select).Select(element => element.InternalNote.Id).ToList();
            var invoiceNoteIds  = form.Items.Where(element => element.Select).SelectMany(element => element.InternalNote.Items).Where(element => element.SelectInvoice).Select(element => element.Invoice.Id).ToList();

            await UpdateInternalNoteInvoiceNoteIsPaid(true, model.Id, model.DocumentNo, internalNoteIds, invoiceNoteIds);

            return(model.Id);
        }