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); }