Beispiel #1
0
        protected void baseVATPeriodFilterRowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            VATPeriodFilter filter = e.Row as VATPeriodFilter;

            if (filter?.OrganizationID == null)
            {
                return;
            }

            Organization organization = OrganizationMaint.FindOrganizationByID(this, filter.OrganizationID);

            if (organization.FileTaxesByBranches == true && filter.BranchID == null ||
                filter.VendorID == null || filter.TaxPeriodID == null)
            {
                return;
            }

            TaxPeriod taxPeriod = Period.Select();

            int?maxRevision = ReportTaxProcess.CurrentRevisionId(sender.Graph, filter.OrganizationID, filter.BranchID, filter.VendorID, filter.TaxPeriodID);

            filter.StartDate = taxPeriod?.StartDateUI;
            filter.EndDate   = taxPeriod?.EndDate != null     ? (DateTime?)(((DateTime)taxPeriod.EndDate).AddDays(-1)) : null;

            PXUIFieldAttribute.SetEnabled <VATPeriodFilter.revisionId>(sender, null, maxRevision > 1);
            PXUIFieldAttribute.SetEnabled <VATPeriodFilter.taxPeriodID>(sender, null, true);
        }
Beispiel #2
0
        public void SetVRN(VATPeriodFilter p)
        {
            if (p.OrganizationID == null)
            {
                return;
            }

            string vrn;
            OrganizationTaxInfo org =
                PXSelect <OrganizationTaxInfo,
                          Where <OrganizationTaxInfo.organizationID, Equal <Required <OrganizationTaxInfo.organizationID> > > >
                .SelectSingleBound(this, null, p.OrganizationID).FirstOrDefault();

            vrn = org.TaxRegistrationID;
            if (org.FileTaxesByBranches == true && p.BranchID != null)
            {
                BranchTaxInfo branch =
                    PXSelect <BranchTaxInfo,
                              Where <BranchTaxInfo.branchID, Equal <Required <BranchTaxInfo.branchID> > > >
                    .SelectSingleBound(this, null, p.BranchID).FirstOrDefault();

                vrn = branch.TaxRegistrationID;
            }
            VATProvider.setVRN(vrn);
        }
Beispiel #3
0
        public virtual IEnumerable CheckVATReturn(PXAdapter adapter)
        {
            VATPeriodFilter tp = Period_Header.Current;

            //PXLongOperation.StartOperation(this, () => HMRCReportTax.CheckVATReturnProc(this, tp));
            VATMaint.CheckVATReturnProc(this, tp.PeriodKey);
            return(adapter.Get());
        }
Beispiel #4
0
        public virtual IEnumerable SignInHMRC(PXAdapter adapter)
        {
            VATPeriodFilter filter = Period_Header.Current;

            //PXLongOperation.StartOperation(this, () => VATMaint.SignInHMRCProc(this, filter));
            VATMaint.SignInHMRCProc(this, filter);
            return(adapter.Get());
        }
Beispiel #5
0
        protected virtual IEnumerable period_Details()
        {
            VATPeriodFilter filter = Period_Header.Current;

            using (new PXReadBranchRestrictedScope(filter.OrganizationID.SingleToArray(), filter.BranchID.SingleToArrayOrNull()))
            {
                return(Period_Details_Expanded.Select());
            }
        }
Beispiel #6
0
        protected void VATPeriodFilter_RowUpdated(PXCache sender, PXRowUpdatedEventArgs e)
        {
            baseTaxPeriodFilterRowUpdated(sender, e);
            VATPeriodFilter filter = (VATPeriodFilter)e.Row;

            if (!sender.ObjectsEqual <VATPeriodFilter.organizationID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.branchID>(e.Row, e.OldRow))
            {
                SetVRN(filter);
            }
            if (!sender.ObjectsEqual <VATPeriodFilter.organizationID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.branchID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.vendorID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.taxPeriodID>(e.Row, e.OldRow)
                )
            {
                filter.Start     = null;
                filter.End       = null;
                filter.PeriodKey = null;
                filter.Due       = null;
                filter.Status    = null;
                filter.Received  = null;
            }
            if (!sender.ObjectsEqual <VATPeriodFilter.periodKey>(e.Row, e.OldRow))
            {
                Obligation o = (Obligation)this.Obligations.Cache.Locate(new Obligation()
                {
                    PeriodKey = filter.PeriodKey
                });
                if (o != null)
                {
                    filter.Start    = o.Start;
                    filter.End      = o.End;
                    filter.Status   = o.Status;
                    filter.Due      = o.Due;
                    filter.Received = o.Received;
                }
            }
            if (!sender.ObjectsEqual <VATPeriodFilter.endDate>(e.Row, e.OldRow))
            {
                try
                {
                    GetVATObligationsForYearProc(this, filter.EndDate ?? DateTime.UtcNow);
                }
                catch (Exception)
                {
                }
            }
        }
Beispiel #7
0
        public virtual IEnumerable SendVATReturn(PXAdapter adapter)
        {
            VATPeriodFilter tp = Period_Header.Current;

            if (tp.RevisionId == null)
            {
                return(adapter.Get());
            }

            WebDialogResult dialogResult = Period_Header.Ask(Messages.VatReturnWillBeSentToHMRC, MessageButtons.YesNoCancel);

            Period_Header.ClearDialog();
            if (dialogResult == WebDialogResult.Cancel)
            {
                return(adapter.Get());
            }

            VATMaint.SendVATReturnProc(this, tp, dialogResult == WebDialogResult.Yes);

            return(adapter.Get());
        }
Beispiel #8
0
        public static void SendVATReturnProc(VATMaint graph, VATPeriodFilter p, bool finalised = false)
        {
            #region Tax Box

            /*
             *          Outputs
             *          Box 1 (vatDueSales) VAT due in the period on sales and other outputs
             *          Box 2 (vatDueAcquisitions) VAT due in the period on acquisitions from other EU member states
             *          Box 3 (totalVatDue) Total VAT due (Box 1 + Box 2)
             *
             *          Inputs
             *          Box 4 (vatReclaimedCurrPeriod) VAT reclaimed in the period on purchases and other inputs (including acquisitions from the EU)
             *          Box 5 (netVatDue) net VAT to be paid to HMRC or reclaimed (difference between Box 3 and Box 4)
             *          Box 6 (totalValueSalesExVAT) total value of sales and all other outputs excluding any VAT
             *          Box 7 (totalValuePurchasesExVAT) the total value of purchases and all other inputs excluding any VAT
             *          Box 8 (totalValueGoodsSuppliedExVAT) total value of all supplies of goods and related costs, excluding any VAT, to other EU member states
             *          Box 9 (totalAcquisitionsExVAT) total value of all acquisitions of goods and related costs, excluding any VAT, from other EU member states
             */
            #endregion

            Model.VATreturn ret = new Model.VATreturn()
            {
                periodKey = p.PeriodKey, finalised = finalised
            };
            #region fill report
            decimal amt = 0;
            foreach (PXResult <TaxReportLine, TaxHistoryReleased> res in graph.Period_Details.Select())
            {
                TaxReportLine      line = res;
                TaxHistoryReleased hist = res;
                amt = hist.ReportFiledAmt ?? 0;
                switch (line.ReportLineNbr)
                {
                case "1": ret.vatDueSales = amt; break;

                case "2": ret.vatDueAcquisitions = amt; break;

                case "3": ret.totalVatDue = amt; break;

                case "4": ret.vatReclaimedCurrPeriod = amt; break;

                case "5": ret.netVatDue = amt; break;

                case "6": ret.totalValueSalesExVAT = amt; break;

                case "7": ret.totalValuePurchasesExVAT = amt; break;

                case "8": ret.totalValueGoodsSuppliedExVAT = amt; break;

                case "9": ret.totalAcquisitionsExVAT = amt; break;
                }
            }
            #endregion
            try
            {
                VATreturnResponse response = graph.VATProvider.SendReturn(ret);
                PXTrace.WriteInformation(JsonConvert.SerializeObject(response));
            }
            catch (Exceptions.VATAPIInvalidToken eToken)
            {
                PXTrace.WriteError(eToken);
                throw new PXException(Messages.PleaseAuthorize);
            }
            catch (Exceptions.VATAPIException eApi)
            {
                PXTrace.WriteError(eApi);
                if (eApi.Data.Contains("errorJson"))
                {
                    PXTrace.WriteError(eApi.Data["errorJson"].ToString());
                }
                throw eApi;
            }
            catch (Exception e)
            {
                PXTrace.WriteError(e);
                throw e;
            }
            throw new PXException(Messages.VATreturnIsAccepted);
        }
Beispiel #9
0
 public static void SignInHMRCProc(VATMaint graph, VATPeriodFilter filter)
 {
     graph.VATProvider.SignIn();
     throw new PXRefreshException();
 }
Beispiel #10
0
        protected virtual void baseTaxPeriodFilterRowUpdated(PXCache sender, PXRowUpdatedEventArgs e)
        {
            VATPeriodFilter filter = (VATPeriodFilter)e.Row;

            if (filter == null)
            {
                return;
            }

            if (!sender.ObjectsEqual <VATPeriodFilter.organizationID, VATPeriodFilter.branchID>(e.Row, e.OldRow))
            {
                List <PXView> views = this.Views.Select(view => view.Value).ToList();
                foreach (var view in views)
                {
                    view.Clear();
                }
            }

            if (!sender.ObjectsEqual <VATPeriodFilter.organizationID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.branchID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.vendorID>(e.Row, e.OldRow))
            {
                if (filter.OrganizationID != null && filter.VendorID != null)
                {
                    PX.Objects.TX.TaxPeriod taxper = TaxYearMaint.FindPreparedPeriod(this, filter.OrganizationID, filter.VendorID);

                    if (taxper != null)
                    {
                        filter.TaxPeriodID = taxper.TaxPeriodID;
                    }
                    else
                    {
                        taxper             = TaxYearMaint.FindLastClosedPeriod(this, filter.OrganizationID, filter.VendorID);
                        filter.TaxPeriodID = taxper != null ? taxper.TaxPeriodID : null;
                    }
                }
                else
                {
                    filter.TaxPeriodID = null;
                }
            }

            Organization organization = OrganizationMaint.FindOrganizationByID(this, filter.OrganizationID);

            if (!sender.ObjectsEqual <VATPeriodFilter.organizationID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.branchID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.vendorID>(e.Row, e.OldRow) ||
                !sender.ObjectsEqual <VATPeriodFilter.taxPeriodID>(e.Row, e.OldRow) ||
                filter.RevisionId == null)
            {
                if (filter.OrganizationID != null &&
                    (filter.BranchID != null && organization.FileTaxesByBranches == true || organization.FileTaxesByBranches != true) &&
                    filter.VendorID != null && filter.TaxPeriodID != null)
                {
                    filter.RevisionId = ReportTaxProcess.CurrentRevisionId(this, filter.OrganizationID, filter.BranchID, filter.VendorID, filter.TaxPeriodID);
                }
                else
                {
                    filter.RevisionId = null;
                }
            }
        }