Beispiel #1
0
        public virtual ARTran CreateReversalARTran(ARTran srcTran, ReverseInvoiceArgs reverseArgs, Func <ARTran, ReverseInvoiceArgs, ARTran> baseMethod)
        {
            if (srcTran.LineType == SOLineType.Freight)
            {
                return(null);
            }

            var ret = baseMethod(srcTran, reverseArgs);

            ret.OrigInvoiceType    = srcTran.TranType;
            ret.OrigInvoiceNbr     = srcTran.RefNbr;
            ret.OrigInvoiceLineNbr = srcTran.LineNbr;

            return(ret);
        }
Beispiel #2
0
        public virtual ARInvoice CreateReversalARInvoice(ARInvoice doc, ReverseInvoiceArgs reverseArgs, Func <ARInvoice, ReverseInvoiceArgs, ARInvoice> baseMethod)
        {
            var result = baseMethod(doc, reverseArgs);

            if (reverseArgs.PreserveOriginalDocumentSign)
            {
                result.IsCorrection = true;
            }
            else
            {
                result.IsCancellation = true;
            }

            return(result);
        }
        public virtual void ReverseInvoiceProc(ARRegister doc, ReverseInvoiceArgs reverseArgs, ReverseInvoiceProcDelegate baseMethod)
        {
            baseMethod(doc, reverseArgs);

            ARInvoice reverce_invoice = Base.Document.Current;

            foreach (RUTROTDistribution rutrotDetail in PXSelect <RUTROTDistribution,
                                                                  Where <RUTROTDistribution.docType, Equal <Required <ARRegister.docType> >,
                                                                         And <RUTROTDistribution.refNbr, Equal <Required <ARRegister.refNbr> > > > > .Select(Base, doc.DocType, doc.RefNbr))
            {
                RUTROTDistribution new_detail = (RUTROTDistribution)Base.RRDistribution.Cache.CreateCopy(rutrotDetail);
                new_detail.RefNbr  = reverce_invoice.RefNbr;
                new_detail.DocType = reverce_invoice.DocType;
                Base.RRDistribution.Insert(new_detail);
            }
        }
Beispiel #4
0
        public virtual void ReverseInvoiceProc(ARRegister doc, ReverseInvoiceArgs reverseArgs, Action <ARRegister, ReverseInvoiceArgs> baseMethod)
        {
            baseMethod(doc, reverseArgs);

            foreach (SOFreightDetail freight in Base.FreightDetails.View.SelectMultiBound(new[] { (ARInvoice)doc }))
            {
                SOFreightDetail newfreight = PXCache <SOFreightDetail> .CreateCopy(freight);

                newfreight.DocType    = null;
                newfreight.RefNbr     = null;
                newfreight.CuryInfoID = null;
                newfreight.NoteID     = null;

                Base.FreightDetails.Insert(newfreight);
            }
        }
Beispiel #5
0
        public virtual IEnumerable CancelInvoice(PXAdapter adapter)
        {
            if (Base.Document.Current == null)
            {
                return(adapter.Get());
            }
            Base.Save.Press();

            EnsureCanCancel(Base.Document.Current, false);

            var reverseArgs = new ReverseInvoiceArgs {
                ApplyToOriginalDocument = true
            };

            if (this.CancellationInvoiceCreationOnRelease)
            {
                var existingCorrectionInvoiceSet = (PXResult <ARInvoice, CurrencyInfo>)
                                                   PXSelectReadonly2 <ARInvoice,
                                                                      InnerJoin <CurrencyInfo, On <CurrencyInfo.curyInfoID, Equal <ARInvoice.curyInfoID> > >,
                                                                      Where <ARInvoice.origDocType, Equal <Current <ARInvoice.docType> >,
                                                                             And <ARInvoice.origRefNbr, Equal <Current <ARInvoice.refNbr> >,
                                                                                  And <ARInvoice.isCorrection, Equal <True> > > > >
                                                   .Select(Base);

                ARInvoice    existingCorrectionInvoice = existingCorrectionInvoiceSet;
                CurrencyInfo currencyInfo = existingCorrectionInvoiceSet;

                if (existingCorrectionInvoice == null)
                {
                    throw new RowNotFoundException(Base.Document.Cache, Base.Document.Current.DocType, Base.Document.Current.RefNbr);
                }
                reverseArgs.DateOption           = ReverseInvoiceArgs.CopyOption.Override;
                reverseArgs.DocumentDate         = existingCorrectionInvoice.DocDate;
                reverseArgs.DocumentFinPeriodID  = existingCorrectionInvoice.FinPeriodID;
                reverseArgs.CurrencyRateOption   = ReverseInvoiceArgs.CopyOption.Override;
                reverseArgs.CurrencyRate         = currencyInfo;
                reverseArgs.OverrideDocumentHold = false;
                using (new PXLocaleScope(Base.customer.Current.LocaleName))
                {
                    reverseArgs.OverrideDocumentDescr = PXMessages.LocalizeFormatNoPrefixNLA(Messages.CorrectionOfInvoice, Base.Document.Current.RefNbr);
                }
            }

            return(Base.ReverseDocumentAndApplyToReversalIfNeeded(adapter, reverseArgs));
        }