public DeliveryOrderDetail UndoInvoiceObject(DeliveryOrderDetail deliveryOrderDetail, int Quantity, IDeliveryOrderService _deliveryOrderService)
        {
            DeliveryOrder deliveryOrder = _deliveryOrderService.GetObjectById(deliveryOrderDetail.DeliveryOrderId);

            _deliveryOrderService.UnsetInvoiceComplete(deliveryOrder);

            deliveryOrderDetail.IsAllInvoiced            = false;
            deliveryOrderDetail.PendingInvoicedQuantity += Quantity;
            _repository.UpdateObject(deliveryOrderDetail);
            return(deliveryOrderDetail);
        }
 public SalesInvoice UnconfirmObject(SalesInvoice salesInvoice, ISalesInvoiceDetailService _salesInvoiceDetailService,
                                     IDeliveryOrderService _deliveryOrderService, IDeliveryOrderDetailService _deliveryOrderDetailService,
                                     IReceiptVoucherDetailService _receiptVoucherDetailService, IReceivableService _receivableService)
 {
     if (_validator.ValidUnconfirmObject(salesInvoice, _salesInvoiceDetailService, _receiptVoucherDetailService, _receivableService))
     {
         IList <SalesInvoiceDetail> details = _salesInvoiceDetailService.GetObjectsBySalesInvoiceId(salesInvoice.Id);
         foreach (var detail in details)
         {
             detail.Errors = new Dictionary <string, string>();
             _salesInvoiceDetailService.UnconfirmObject(detail, _deliveryOrderService, _deliveryOrderDetailService);
         }
         _repository.UnconfirmObject(salesInvoice);
         DeliveryOrder deliveryOrder = _deliveryOrderService.GetObjectById(salesInvoice.DeliveryOrderId);
         _deliveryOrderService.UnsetInvoiceComplete(deliveryOrder);
         Receivable receivable = _receivableService.GetObjectBySource(Constant.ReceivableSource.SalesInvoice, salesInvoice.Id);
         _receivableService.SoftDeleteObject(receivable);
     }
     return(salesInvoice);
 }