public RetailSalesInvoice ConfirmObject(RetailSalesInvoice retailSalesInvoice, DateTime ConfirmationDate, int ContactId, IRetailSalesInvoiceDetailService _retailSalesInvoiceDetailService, IContactService _contactService, IPriceMutationService _priceMutationService, IReceivableService _receivableService, IRetailSalesInvoiceService _retailSalesInvoiceService, IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService, IClosingService _closingService) { retailSalesInvoice.ContactId = ContactId; retailSalesInvoice.ConfirmationDate = ConfirmationDate; if (_validator.ValidConfirmObject(retailSalesInvoice, _retailSalesInvoiceDetailService, _retailSalesInvoiceService, _warehouseItemService, _contactService)) { IList <RetailSalesInvoiceDetail> retailSalesInvoiceDetails = _retailSalesInvoiceDetailService.GetObjectsByRetailSalesInvoiceId(retailSalesInvoice.Id); retailSalesInvoice.Total = 0; retailSalesInvoice.CoGS = 0; foreach (var retailSalesInvoiceDetail in retailSalesInvoiceDetails) { retailSalesInvoiceDetail.Errors = new Dictionary <string, string>(); _retailSalesInvoiceDetailService.ConfirmObject(retailSalesInvoiceDetail, _retailSalesInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService); retailSalesInvoice.Total += retailSalesInvoiceDetail.Amount; retailSalesInvoice.CoGS += retailSalesInvoiceDetail.CoGS; } // Tax dihitung setelah Discount retailSalesInvoice.Total = (retailSalesInvoice.Total * ((100 - retailSalesInvoice.Discount) / 100) * ((100 + retailSalesInvoice.Tax) / 100)); Receivable receivable = _receivableService.CreateObject(retailSalesInvoice.ContactId, Core.Constants.Constant.ReceivableSource.RetailSalesInvoice, retailSalesInvoice.Id, retailSalesInvoice.Code, retailSalesInvoice.Total, (DateTime)retailSalesInvoice.DueDate.GetValueOrDefault()); retailSalesInvoice = _repository.ConfirmObject(retailSalesInvoice); } else { retailSalesInvoice.ConfirmationDate = null; //retailSalesInvoice.ContactId = 0; //null; } return(retailSalesInvoice); }
public SalesInvoice ConfirmObject(SalesInvoice salesInvoice, DateTime ConfirmationDate, ISalesInvoiceDetailService _salesInvoiceDetailService, ISalesOrderService _salesOrderService, IDeliveryOrderService _deliveryOrderService, IDeliveryOrderDetailService _deliveryOrderDetailService, IReceivableService _receivableService) { salesInvoice.ConfirmationDate = ConfirmationDate; if (_validator.ValidConfirmObject(salesInvoice, _salesInvoiceDetailService, _deliveryOrderService, _deliveryOrderDetailService)) { // confirm details // add all amount into amountreceivable IList <SalesInvoiceDetail> details = _salesInvoiceDetailService.GetObjectsBySalesInvoiceId(salesInvoice.Id); foreach (var detail in details) { detail.Errors = new Dictionary <string, string>(); _salesInvoiceDetailService.ConfirmObject(detail, ConfirmationDate, _deliveryOrderDetailService); } salesInvoice = CalculateAmountReceivable(salesInvoice, _salesInvoiceDetailService); // confirm object // create receivable salesInvoice = _repository.ConfirmObject(salesInvoice); DeliveryOrder deliveryOrder = _deliveryOrderService.GetObjectById(salesInvoice.DeliveryOrderId); _deliveryOrderService.CheckAndSetInvoiceComplete(deliveryOrder, _deliveryOrderDetailService); SalesOrder salesOrder = _salesOrderService.GetObjectById(deliveryOrder.SalesOrderId); Receivable receivable = _receivableService.CreateObject(salesOrder.ContactId, Constant.ReceivableSource.SalesInvoice, salesInvoice.Id, salesInvoice.AmountReceivable, salesInvoice.DueDate); } return(salesInvoice); }
public CashSalesInvoice ConfirmObject(CashSalesInvoice cashSalesInvoice, DateTime ConfirmationDate, decimal Discount, decimal Tax, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService, IContactService _contactService, IPriceMutationService _priceMutationService, IReceivableService _receivableService, ICashSalesInvoiceService _cashSalesInvoiceService, IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService, ICashBankService _cashBankService, IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService, IClosingService _closingService) { cashSalesInvoice.ConfirmationDate = ConfirmationDate; if (_validator.ValidConfirmObject(cashSalesInvoice, _cashSalesInvoiceDetailService, _cashSalesInvoiceService, _warehouseItemService, _contactService, _cashBankService, _closingService)) { cashSalesInvoice.Discount = Discount; cashSalesInvoice.Tax = Tax; IList <CashSalesInvoiceDetail> cashSalesInvoiceDetails = _cashSalesInvoiceDetailService.GetObjectsByCashSalesInvoiceId(cashSalesInvoice.Id); cashSalesInvoice.Total = 0; cashSalesInvoice.CoGS = 0; foreach (var cashSalesInvoiceDetail in cashSalesInvoiceDetails) { cashSalesInvoiceDetail.Errors = new Dictionary <string, string>(); _cashSalesInvoiceDetailService.ConfirmObject(cashSalesInvoiceDetail, _cashSalesInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService); cashSalesInvoice.Total += cashSalesInvoiceDetail.Amount; cashSalesInvoice.CoGS += cashSalesInvoiceDetail.CoGS; } // Tax dihitung setelah Discount cashSalesInvoice.Total = (cashSalesInvoice.Total * ((100 - cashSalesInvoice.Discount) / 100) * ((100 + cashSalesInvoice.Tax) / 100)); Contact contact = _contactService.GetObjectByName(Core.Constants.Constant.BaseContact); Receivable receivable = _receivableService.CreateObject(contact.Id, Core.Constants.Constant.ReceivableSource.CashSalesInvoice, cashSalesInvoice.Id, cashSalesInvoice.Code, cashSalesInvoice.Total, (DateTime)cashSalesInvoice.DueDate.GetValueOrDefault()); _generalLedgerJournalService.CreateConfirmationJournalForCashSalesInvoice(cashSalesInvoice, _accountService); cashSalesInvoice = _repository.ConfirmObject(cashSalesInvoice); } else { cashSalesInvoice.ConfirmationDate = null; } return(cashSalesInvoice); }