protected virtual void InsertDetails(ARInvoiceEntry invoiceEntry, ARInvoice scheduledInvoice, ARInvoice newInvoice)
        {
            foreach (ARTran originalLine in PXSelect <
                         ARTran,
                         Where <
                             ARTran.tranType, Equal <Required <ARTran.tranType> >,
                             And <ARTran.refNbr, Equal <Required <ARTran.refNbr> >,
                                  And <Where <
                                           ARTran.lineType, IsNull,
                                           Or <ARTran.lineType, NotEqual <SOLineType.discount> > > > > > >
                     .Select(invoiceEntry, scheduledInvoice.DocType, scheduledInvoice.RefNbr))
            {
                ARTran newLine = PXCache <ARTran> .CreateCopy(originalLine);

                newLine.FinPeriodID  = null;
                newLine.TranPeriodID = null;
                newLine.RefNbr       = null;
                newLine.CuryInfoID   = null;
                newLine.ManualPrice  = true;
                newLine.ManualDisc   = true;
                newLine.NoteID       = null;

                newLine = invoiceEntry.Transactions.Insert(newLine);

                PXNoteAttribute.CopyNoteAndFiles(Caches[typeof(ARTran)], originalLine, invoiceEntry.Transactions.Cache, newLine);
            }

            foreach (ARInvoiceDiscountDetail originalDiscountDetail in PXSelect <
                         ARInvoiceDiscountDetail,
                         Where <
                             ARInvoiceDiscountDetail.docType, Equal <Required <ARInvoiceDiscountDetail.docType> >,
                             And <ARInvoiceDiscountDetail.refNbr, Equal <Required <ARInvoiceDiscountDetail.refNbr> > > > >
                     .Select(invoiceEntry, scheduledInvoice.DocType, scheduledInvoice.RefNbr))
            {
                ARInvoiceDiscountDetail newDiscountDetail =
                    PXCache <ARInvoiceDiscountDetail> .CreateCopy(originalDiscountDetail);

                newDiscountDetail.RefNbr     = null;
                newDiscountDetail.CuryInfoID = null;
                newDiscountDetail.IsManual   = true;

                DiscountEngineProvider.GetEngineFor <ARTran, ARInvoiceDiscountDetail>().InsertDiscountDetail(invoiceEntry.ARDiscountDetails.Cache, invoiceEntry.ARDiscountDetails, newDiscountDetail);
            }
        }
 protected virtual void AddDiscountDetails(PXCache sender, PXRowUpdatedEventArgs e)
 {
     foreach (SOInvoiceDiscountDetail dDetail in DiscountDetails.Select())
     {
         ARInvoiceDiscountDetail arDiscountDetail = new ARInvoiceDiscountDetail();
         SOInvoiceDiscountDetail discountCopy = (SOInvoiceDiscountDetail)DiscountDetails.Cache.CreateCopy(dDetail);
         foreach (ARInvoiceDiscountDetail aDetail in ARDiscountDetails.Select())
         {
             if (aDetail.DiscountID == discountCopy.DiscountID && aDetail.DiscountSequenceID == discountCopy.DiscountSequenceID && aDetail.Type == discountCopy.Type)
             {
                 arDiscountDetail = aDetail;
             }
         }
         arDiscountDetail.CuryDiscountableAmt = discountCopy.CuryDiscountableAmt;
         arDiscountDetail.CuryDiscountAmt = discountCopy.CuryDiscountAmt;
         arDiscountDetail.CuryInfoID = discountCopy.CuryInfoID;
         arDiscountDetail.DiscountableAmt = discountCopy.DiscountableAmt;
         arDiscountDetail.DiscountableQty = discountCopy.DiscountableQty;
         arDiscountDetail.DiscountAmt = discountCopy.DiscountAmt;
         arDiscountDetail.DiscountID = discountCopy.DiscountID;
         arDiscountDetail.DiscountPct = discountCopy.DiscountPct;
         arDiscountDetail.DiscountSequenceID = discountCopy.DiscountSequenceID;
         arDiscountDetail.FreeItemID = discountCopy.FreeItemID;
         arDiscountDetail.FreeItemQty = discountCopy.FreeItemQty;
         arDiscountDetail.Type = discountCopy.Type;
         ARDiscountDetails.Update(arDiscountDetail);
     }
 }