예제 #1
0
        private EnterCurrentQuote GetCurrentQuote_Model(EWS.Domain.Data.DataModel.Quote entity)
        {
            EnterCurrentQuote model = new EnterCurrentQuote();

            model.QuoteID             = entity.ID;
            model.TenderNumber        = entity.TenderNo;
            model.VAT                 = entity.VAT;
            model.SellingPriceExclVAT = entity.SellingPrice;
            model.SellingPriceInclVAT = Math.Round(entity.SellingPrice * Convert.ToDecimal(entity.VAT / 100 + 1), 2);
            model.NoOfMonths          = entity.ContractTerm;

            model.Customer = GetCustomer_Model(entity.CustomerID);

            DeviceQuery dqry = new Domain.Data.Queries.DeviceQuery()
            {
                DeviceID = entity.DeviceID
            };

            model.Device = _queryProcessor.Execute(dqry);

            model.ExchangeRate = new ExchangeRate()
            {
                Rate = entity.ROE,
                Date = entity.ROEDate
            };

            model.ContractCalculations = GetNewContractCalculationModels(model.SellingPriceExclVAT);
            UpdateModelFromSavedValues(model.ContractCalculations, model.QuoteID);

            return(model);
        }
예제 #2
0
        private EnterEquipmentQuote GetEquipmentQuote_Model(string QuoteRef)
        {
            if (string.IsNullOrEmpty(QuoteRef))
            {
                return(null);
            }
            else
            {
                EWS.Domain.Data.DataModel.Quote quote = GetExistingQuote(QuoteRef);
                if (quote != null)
                {
                    return(GetEquipmentQuote_Model(quote));
                }
                else
                {
                    Domain.Model.SourceQuote sourcequote = GetSourceQuote(QuoteRef);
                    if (sourcequote == null)
                    {
                        return(null);
                    }
                    else
                    {
                        EnterEquipmentQuote model = new EnterEquipmentQuote();

                        model.QuoteRef = QuoteRef;

                        DeviceQuery query = new Domain.Data.Queries.DeviceQuery()
                        {
                            DeviceID = sourcequote.DeviceID
                        };
                        model.Device = _queryProcessor.Execute(query);

                        model.TenderNumber        = sourcequote.TenderNumber;
                        model.VAT                 = sourcequote.VAT;
                        model.SellingPriceExclVAT = sourcequote.SellingPriceInclVAT / Convert.ToDecimal(1 + sourcequote.VAT / 100);
                        model.SellingPriceInclVAT = sourcequote.SellingPriceInclVAT;

                        model.ContractCalculations = GetNewEquipmentContractCalculationModels(model.SellingPriceExclVAT);


                        if (quote == null)   // fill in from source quote:
                        {
                            // Exchange Rate
                            CurrencyQuery cquery = new CurrencyQuery()
                            {
                                ID = "USD"
                            };
                            Domain.Data.DataModel.Currency usd = _queryProcessor.Execute(cquery);

                            model.ExchangeRate = new ExchangeRate()
                            {
                                Rate = Convert.ToDecimal(usd.DefaultRateOfExchange),
                                Date = DateTime.Today
                            };
                        }
                        return(model);
                    }
                }
            }
        } //GetEquipmentQuote_Model
예제 #3
0
        public EWS.Domain.Data.DataModel.ContractInclusion[] GetContractInclusions(int QuoteID)
        {
            QuoteQuery quotequery = new QuoteQuery()
            {
                ID = QuoteID
            };

            EWS.Domain.Data.DataModel.Quote quote = _queryProcessor.Execute(quotequery);

            DeviceQuery devicequery = new DeviceQuery()
            {
                DeviceID = quote.DeviceID
            };

            EWS.Domain.Model.Device device = _queryProcessor.Execute(devicequery);

            ContractInclusionsQuery inclquery = new ContractInclusionsQuery()
            {
                ModalityID = device.ModalityID
            };
            IEnumerable <EWS.Domain.Data.DataModel.ContractInclusion> result1 = _queryProcessor.Execute(inclquery);

            inclquery = new ContractInclusionsQuery()
            {
                ModalityID = null
            };
            IEnumerable <EWS.Domain.Data.DataModel.ContractInclusion> result2 = _queryProcessor.Execute(inclquery);


            EWS.Domain.Data.DataModel.ContractInclusion[] inclusions = result1.Concat(result2).ToArray();


            return(inclusions);
        }
예제 #4
0
        private EWS.Domain.Data.DataModel.Quote GetExistingQuote(int ContractID)
        {
            QuoteQuery query = new Domain.Data.Queries.QuoteQuery()
            {
                BaseContractID = ContractID
            };

            EWS.Domain.Data.DataModel.Quote founditem = _queryProcessor.Execute <EWS.Domain.Data.DataModel.Quote>(query);

            return(founditem);
        }
예제 #5
0
        private EWS.Domain.Data.DataModel.Quote GetExistingQuote(string QuoteRef)
        {
            QuoteQuery query = new Domain.Data.Queries.QuoteQuery()
            {
                QuoteRef = QuoteRef
            };

            EWS.Domain.Data.DataModel.Quote founditem = _queryProcessor.Execute <EWS.Domain.Data.DataModel.Quote>(query);

            return(founditem);
        }
예제 #6
0
        private EWS.Domain.Model.Quote GetQuote_Model(EWS.Domain.Data.DataModel.Quote entity)
        {
            EWS.Domain.Model.Quote model = new EWS.Domain.Model.Quote();
            model.QuoteID             = entity.ID;
            model.QuoteRef            = entity.QuoteRef;
            model.ContractID          = entity.BaseContractID;
            model.TenderNumber        = entity.TenderNo;
            model.VAT                 = entity.VAT;
            model.SellingPriceExclVAT = entity.SellingPrice;
            model.SellingPriceInclVAT = Math.Round(entity.SellingPrice * Convert.ToDecimal(entity.VAT / 100 + 1), 2);
            model.NoOfMonths          = entity.ContractTerm;

            model.Customer = GetCustomer_Model(entity.CustomerID);

            DeviceQuery dqry = new Domain.Data.Queries.DeviceQuery()
            {
                DeviceID = entity.DeviceID
            };

            model.Device = _queryProcessor.Execute(dqry);

            model.ExchangeRate = new ExchangeRate()
            {
                Rate = entity.ROE,
                Date = entity.ROEDate
            };

            QuoteCalculationsQuery qcqry = new QuoteCalculationsQuery()
            {
                QuoteID = entity.ID
            };
            IEnumerable <Domain.Data.DataModel.QuoteCalculation> listofQuoteCalcs = _queryProcessor.Execute(qcqry);

            model.ContractCalculations = new List <QuoteCalculation>();

            foreach (Domain.Data.DataModel.QuoteCalculation calc in listofQuoteCalcs)
            {
                QuoteCalculation calcmodel = new QuoteCalculation();
                MapEntityToModel(calc, calcmodel);
                model.ContractCalculations.Add(calcmodel);

                QuoteCalculationItem[] years = GetQuoteCalculationItemsStructure(calc, (short)(model.NoOfMonths / 12), model.StartDate);
                calcmodel.QuoteCalculationItems = Recalculate(calcmodel, years, model.StartDate);
            }


            return(model);
        }
예제 #7
0
        } //GetCurrentQuote_Model

        private EWS.Domain.Model.Quote GetQuote_Model(int QuoteID)
        {
            if (QuoteID <= 0)
            {
                return(null);
            }
            else
            {
                QuoteQuery query = new Domain.Data.Queries.QuoteQuery()
                {
                    ID = QuoteID
                };
                EWS.Domain.Data.DataModel.Quote entity = _queryProcessor.Execute <EWS.Domain.Data.DataModel.Quote>(query);

                return(GetQuote_Model(entity));
            }
        }
예제 #8
0
        public Device[] GetCoveredItems(int QuoteID)
        {
            QuoteQuery quotequery = new QuoteQuery()
            {
                ID = QuoteID
            };

            EWS.Domain.Data.DataModel.Quote quote = _queryProcessor.Execute(quotequery);

            DeviceQuery devicequery = new DeviceQuery()
            {
                DeviceID = quote.DeviceID
            };

            EWS.Domain.Model.Device device = _queryProcessor.Execute(devicequery);

            return(new Device[1] {
                device
            });                                 //Todo finish this so it returns the individual components
        }
예제 #9
0
        private EWS.Domain.Model.QuoteCalculationItem[] GetQuoteCalculationItemsStructure(Domain.Data.DataModel.QuoteCalculation calc, short NoOfYears, DateTime?StartDate = null)
        {
            QuoteCalculationItem[] models = new QuoteCalculationItem[NoOfYears];

            // new/old ROE and VAT values needed .........................................
            decimal oldROE;
            decimal newROE;
            float   VAT;


            QuoteQuery quotequery = new QuoteQuery()
            {
                ID = calc.QuoteID
            };

            EWS.Domain.Data.DataModel.Quote quoteEntity = _queryProcessor.Execute(quotequery);
            newROE = quoteEntity.ROE;

            if (!string.IsNullOrEmpty(quoteEntity.QuoteRef))
            {
                SourceQuoteQuery query = new SourceQuoteQuery()
                {
                    QuoteRef = quoteEntity.QuoteRef
                };
                SourceQuote entity = _queryProcessor.Execute(query);
                oldROE = entity.ROE;
                VAT    = entity.VAT;
            }
            else
            {
                ContractQuery query = new ContractQuery()
                {
                    ID = quoteEntity.BaseContractID.Value
                };
                EWS.Domain.Data.DataModel.Contract entity = _queryProcessor.Execute(query);
                oldROE = entity.ROE;
                VAT    = entity.VAT;
            }

            // Currently Saved values ....................................................
            QuoteCalculationItemsQuery qury = new QuoteCalculationItemsQuery()
            {
                QuoteCalculationID = calc.ID
            };
            IEnumerable <Domain.Data.DataModel.QuoteCalculationItem> calcs = _queryProcessor.Execute(qury);

            // Setup the structure .......................................................
            for (byte i = 0; i < NoOfYears; i++)
            {
                byte yearno = (byte)(i + 1);
                models[i] = new QuoteCalculationItem()
                {
                    YearNo    = yearno,
                    NewROE    = newROE, TOPSROE = oldROE, VAT = VAT,
                    UseNewROE = true,
                    Increment = (i == 0 ? 0 : EWS.Domain.Defaults.AnnualIncrement)
                };

                if (StartDate.HasValue)
                {
                    models[i].StartDate = StartDate.Value.AddYears(i);
                    models[i].EndDate   = StartDate.Value.AddYears(yearno).AddDays(-1);
                }

                Domain.Data.DataModel.QuoteCalculationItem item = calcs.FirstOrDefault(c => c.YearNo == yearno);
                if (item != null)
                {
                    models[i].ID        = item.ID;
                    models[i].Increment = item.IncrPerc;
                    models[i].UseNewROE = (item.ROE == newROE);
                }
            }



            return(models);
        }
예제 #10
0
        private EnterCurrentQuote GetCurrentQuote_Model(string ContractID)
        {
            if (string.IsNullOrEmpty(ContractID))
            {
                return(null);
            }
            else
            {
                int contractID = Convert.ToInt32(ContractID);
                EWS.Domain.Data.DataModel.Quote quote = GetExistingQuote(contractID);
                if (quote != null)
                {
                    return(GetCurrentQuote_Model(quote));
                }
                else
                {
                    EWS.Domain.Data.DataModel.Contract sourcecontract = GetContract(contractID);
                    if (sourcecontract == null)
                    {
                        return(null);
                    }
                    else
                    {
                        EnterCurrentQuote model = new EnterCurrentQuote();


                        DeviceQuery query = new Domain.Data.Queries.DeviceQuery()
                        {
                            DeviceID = sourcecontract.DeviceID
                        };
                        model.Device = _queryProcessor.Execute(query);

                        model.TenderNumber        = sourcecontract.TenderNo;
                        model.VAT                 = sourcecontract.VAT;
                        model.SellingPriceExclVAT = 0;
                        model.SellingPriceInclVAT = 0;


                        List <EWS.Domain.Data.DataModel.ContractItem> contractitems = GetContractItems(contractID);
                        model.ContractCalculations = new List <QuoteCalculation>();
                        foreach (EWS.Domain.Data.DataModel.ContractItem contractitem in contractitems)
                        {
                            model.ContractCalculations.Add(new QuoteCalculation()
                            {
                                Selected         = true,
                                BasePrice        = contractitem.BasePrice,
                                ContractTypeID   = contractitem.ContractTypeID,
                                ContractType     = contractitem.ContractType.ContractTypeName,
                                ROEPortion       = contractitem.ROEPortion,
                                ROEPortionAmount = contractitem.ROEPortionAmount,
                                ZARPortion       = contractitem.ZARPortion,
                                ZARPortionAmount = contractitem.ZARPortionAmount
                            });
                        }

                        CustomerQuery customerquery = new CustomerQuery()
                        {
                            ID = sourcecontract.CustomerID
                        };
                        Domain.Data.DataModel.Customer customer = _queryProcessor.Execute(customerquery);

                        model.Customer = new Customer()
                        {
                            Id             = sourcecontract.CustomerID,
                            CustomerName   = customer.CustomerNameFriendly,
                            Locality       = customer.CustomerLocality.CustomerLocalityName,
                            RegistrationNo = customer.RegistrationNo
                        };

                        model.ExchangeRate = new ExchangeRate()
                        {
                            Rate = sourcecontract.ROE,
                            Date = sourcecontract.ROEDate
                        };

                        return(model);
                    }
                }
            }
        } //GetCurrentQuote_Model