public void InsertEngineMaintainInvoice(EngineMaintainInvoiceDTO engineMaintainInvoice)
 {
     Supplier supplier = _supplierRepository.Get(engineMaintainInvoice.SupplierId);
     engineMaintainInvoice.SupplierName = supplier.CnName;
     EngineMaintainInvoice newEngineMaintainInvoice = MaintainInvoiceFactory.CreateEngineMaintainInvoice();
     newEngineMaintainInvoice.SetInvoiceNumber(GetMaxInvoiceNumber());
     MaintainInvoiceFactory.SetMaintainInvoice(newEngineMaintainInvoice, engineMaintainInvoice.SerialNumber,
         engineMaintainInvoice.InvoideCode, engineMaintainInvoice.InvoiceDate, engineMaintainInvoice.SupplierName,
         engineMaintainInvoice.SupplierId,
         engineMaintainInvoice.InvoiceValue, engineMaintainInvoice.PaidAmount, engineMaintainInvoice.OperatorName,
         engineMaintainInvoice.Reviewer, engineMaintainInvoice.Status, engineMaintainInvoice.CurrencyId,
         engineMaintainInvoice.DocumentName, engineMaintainInvoice.DocumentId,
         engineMaintainInvoice.PaymentScheduleLineId,
         engineMaintainInvoice.InMaintainTime, engineMaintainInvoice.OutMaintainTime);
     newEngineMaintainInvoice.SetType(engineMaintainInvoice.Type);
     if (engineMaintainInvoice.MaintainInvoiceLines != null)
     {
         foreach (MaintainInvoiceLineDTO maintainInvoiceLine in engineMaintainInvoice.MaintainInvoiceLines)
         {
             MaintainInvoiceLine newMaintainInvoiceLine = MaintainInvoiceFactory.CreateInvoiceLine();
             MaintainInvoiceFactory.SetInvoiceLine(newMaintainInvoiceLine, maintainInvoiceLine.MaintainItem,
                 maintainInvoiceLine.ItemName, maintainInvoiceLine.UnitPrice, maintainInvoiceLine.Amount,
                 maintainInvoiceLine.Note);
             newEngineMaintainInvoice.InvoiceLines.Add(newMaintainInvoiceLine);
         }
     }
     newEngineMaintainInvoice.SetInvoiceValue();
     _invoiceRepository.Add(newEngineMaintainInvoice);
     if (newEngineMaintainInvoice.Type == EngineMaintainInvoiceType.非FHA超包修)
     {
         var maintainCost = new NonFhaMaintainCostDTO
         {
             MaintainInvoiceId = newEngineMaintainInvoice.Id,
             Year = newEngineMaintainInvoice.InvoiceDate.Year,
             SupplierId = newEngineMaintainInvoice.SupplierId
         };
         _maintainCostAppService.InsertNonFhaMaintainCost(maintainCost);
     }
     else
     {
         var maintainCost = new FhaMaintainCostDTO
         {
             MaintainInvoiceId = newEngineMaintainInvoice.Id,
             Year = newEngineMaintainInvoice.InvoiceDate.Year
         };
         _maintainCostAppService.InsertFhaMaintainCost(maintainCost);
     }
 }
 public void ModifyEngineMaintainInvoice(EngineMaintainInvoiceDTO engineMaintainInvoice)
 {
     Supplier supplier = _supplierRepository.Get(engineMaintainInvoice.SupplierId);
     engineMaintainInvoice.SupplierName = supplier.CnName;
     var updateEngineMaintainInvoice =
         _invoiceRepository.Get(engineMaintainInvoice.EngineMaintainInvoiceId) as EngineMaintainInvoice;
         //获取需要更新的对象。
     MaintainInvoiceFactory.SetMaintainInvoice(updateEngineMaintainInvoice, engineMaintainInvoice.SerialNumber,
         engineMaintainInvoice.InvoideCode, engineMaintainInvoice.InvoiceDate, engineMaintainInvoice.SupplierName,
         engineMaintainInvoice.SupplierId,
         engineMaintainInvoice.InvoiceValue, engineMaintainInvoice.PaidAmount, engineMaintainInvoice.OperatorName,
         engineMaintainInvoice.Reviewer, engineMaintainInvoice.Status, engineMaintainInvoice.CurrencyId,
         engineMaintainInvoice.DocumentName, engineMaintainInvoice.DocumentId,
         engineMaintainInvoice.PaymentScheduleLineId,
         engineMaintainInvoice.InMaintainTime, engineMaintainInvoice.OutMaintainTime);
     updateEngineMaintainInvoice.SetType(engineMaintainInvoice.Type);
     UpdateMaintainInvoiceLines(engineMaintainInvoice.MaintainInvoiceLines, updateEngineMaintainInvoice);
     _invoiceRepository.Modify(updateEngineMaintainInvoice);
 }
 public void DeleteEngineMaintainInvoice(EngineMaintainInvoiceDTO engineMaintainInvoice)
 {
     MaintainInvoice deleteEngineMaintainInvoice =
         _invoiceRepository.GetMaintainInvoice(engineMaintainInvoice.EngineMaintainInvoiceId); //获取需要删除的对象。
     UpdateMaintainInvoiceLines(new List<MaintainInvoiceLineDTO>(), deleteEngineMaintainInvoice);
     _invoiceRepository.Remove(deleteEngineMaintainInvoice); //删除发动机维修发票。
 }