コード例 #1
0
 public SalesOrderBalanceValidator(decimal maxDiff, SalesOrderSettlement settlement)
 {
     MaxSettlementDifference = maxDiff;
     GrossBalance            = settlement.GrossValue;
     NetBalance = settlement.NetValue;
     VatBalance = settlement.VatValue;
 }
コード例 #2
0
        public void LoadPrepaids(XElement source)
        {
            this.Prepaids.Clear();

            foreach (XElement vr in source.Elements())
            {
                SalesOrderSettlement so = new SalesOrderSettlement(new Guid(vr.Attribute("id").Value));
                so.NetValue   = Convert.ToDecimal(vr.Attribute("netValue").Value, CultureInfo.InvariantCulture);
                so.GrossValue = Convert.ToDecimal(vr.Attribute("grossValue").Value, CultureInfo.InvariantCulture);
                so.VatValue   = Convert.ToDecimal(vr.Attribute("vatValue").Value, CultureInfo.InvariantCulture);
                this.Prepaids.Add(so);
            }
        }
コード例 #3
0
        internal void LoadSalesOrder(CommercialDocument salesOrder)
        {
            this.SalesOrder.Clear();

            foreach (var vtEntry in salesOrder.VatTableEntries)
            {
                SalesOrderSettlement so = new SalesOrderSettlement(vtEntry.VatRateId);
                so.NetValue   = vtEntry.NetValue;
                so.GrossValue = vtEntry.GrossValue;
                so.VatValue   = vtEntry.VatValue;
                this.SalesOrder.Add(so);
            }

            this.CurrentMaxSettlementDifference = ProcessManager.Instance.GetMaxSettlementDifference(salesOrder);
        }
コード例 #4
0
        public ICollection <SalesOrderSettlement> GetUnsettledValues()
        {
            List <SalesOrderSettlement> retList = new List <SalesOrderSettlement>();

            foreach (var so in this.SalesOrder)
            {
                SalesOrderSettlement diff = new SalesOrderSettlement(so.VatRateId);
                diff.NetValue   = so.NetValue;
                diff.GrossValue = so.GrossValue;
                diff.VatValue   = so.VatValue;

                var pp = this.Prepaids.Where(p => p.VatRateId == so.VatRateId).FirstOrDefault();

                if (pp != null)
                {
                    diff.NetValue   -= pp.NetValue;
                    diff.GrossValue -= pp.GrossValue;
                    diff.VatValue   -= pp.VatValue;
                }

                SalesOrderBalanceValidator validator = new SalesOrderBalanceValidator(this.CurrentMaxSettlementDifference, diff);

                if (!validator.IsIllegalOverPayment)                 //pomijamy gdyż i tak zostanie rzucony wyjątek
                {
                    if (!validator.IsAcceptableOverPayment)          //pomijamy gdyż nastąpi automatyczna korekta
                    {
                        if (diff.NetValue > 0 || diff.GrossValue > 0 || diff.VatValue > 0)
                        {
                            retList.Add(diff);
                        }
                    }
                }
            }

            return(retList);
        }