public static string GetNextNumber(int insuranceCompanyID) { string nextNumber = ""; InsuranceCompany ic = InsuranceCompany.Get(insuranceCompanyID); List <BrokerageSlip> lstBrokerageSlips = Table.Where(c => c.InsuranceCompanyID == insuranceCompanyID).ToList(); if (lstBrokerageSlips.Count > 0) { List <int> codes = new List <int>(); foreach (BrokerageSlip bs in lstBrokerageSlips) { string[] spliter = bs.Number.Split('/'); codes.Add(Convert.ToInt32(spliter[0])); } codes.Sort(); nextNumber = (codes.Last() + 1).ToString() + "/" + ic.Code; } else { nextNumber = "1" + "/" + ic.Code; } return(nextNumber); }
public static Facture Generate(DateTime startDate, DateTime endDate, InsuranceCompany ic, User u, DateTime dateOfPayment, List <PolicyItem> policiesToRemove) { List <Payment> paymentList = Payment.GetForFactureByDateAndInsuranceCompany(endDate, ic.ID); decimal brokerageValue = 0; decimal totalSum = 0; decimal currentBrokerageValue = 0; Dictionary <int, decimal[]> dictionary = new Dictionary <int, decimal[]>(); List <PolicyItem> policyItemList = new List <PolicyItem>(); foreach (Payment p in paymentList) { //Koeficient so cel da se presmetuva brokerazata na polisiranata premija decimal k = 1; if (p.Rate.PolicyItem.PremiumValue > 0) { k = p.Rate.PolicyItem.RealPremiumValue / p.Rate.PolicyItem.PremiumValue; } PolicyItem policyItem = p.Rate.PolicyItem; if (!policiesToRemove.Contains(policyItem)) { if (!policyItemList.Contains(policyItem)) { policyItemList.Add(policyItem); } if (policyItem.Policy.PacketID != null) { if (policyItem.Policy.Client.IsLaw) { currentBrokerageValue = k * p.Value * policyItem.PacketsInsuranceSubType.BrokeragePecentageForLaws / 100; } else { currentBrokerageValue = k * p.Value * policyItem.PacketsInsuranceSubType.BrokeragePecentageForPrivates / 100; } } else { if (policyItem.Policy.Client.IsLaw) { currentBrokerageValue = k * p.Value * policyItem.Brokerage.PercentageForLaws / 100; } else { currentBrokerageValue = k * p.Value * policyItem.Brokerage.PercentageForPrivates / 100; } } brokerageValue += currentBrokerageValue; if (dictionary.ContainsKey(policyItem.InsuranceSubTypeID)) { dictionary[policyItem.InsuranceSubTypeID][0] += currentBrokerageValue; dictionary[policyItem.InsuranceSubTypeID][1] += p.Value; // dictionary[policyItem.InsuranceSubTypeID][2] += 1; } else { decimal[] newValues = { currentBrokerageValue, p.Value /*, 1 */ }; dictionary.Add(policyItem.InsuranceSubTypeID, newValues); } totalSum += p.Value; } } //da se zemat vo predvid i zaokruzuvanjata decimal calcBrokValue = 0; foreach (KeyValuePair <int, decimal[]> kvp in dictionary) { calcBrokValue += ScaleController.Scale5(kvp.Value[0]); } if (policyItemList.Count > 0) { Facture f = new Facture(); //f.BrokerageValue = ScaleController.Scale5(brokerageValue); f.BrokerageValue = calcBrokValue; f.TotalCost = totalSum; int clientID = 1; Client client = Client.GetByEmbg(ic.EMBG); if (client != null) { clientID = client.ID; } else { Client newClient = new Client(); newClient.Address = ic.Address; newClient.EMail = string.Empty; newClient.EMBG = ic.EMBG; newClient.Fax = string.Empty; newClient.IsInsuranceCompany = true; newClient.Mobile = string.Empty; newClient.Name = ic.Name; newClient.Phone = string.Empty; newClient.PlaceID = Place.Table.First().ID; newClient.Insert(); clientID = newClient.ID; } f.ClientID = clientID; f.DateOfCreation = DateTime.Today; f.DocumentSubTypeID = DocumentSubType.GetByCode(DocumentSubType.FAKTURA_PROVIZIJA).ID; //f.FactureNumber = CodeGenerator.GenerateFactureNumber(); f.FactureNumber = CodeGenerator.GenerateFactureNumberForBrokerageFactures(); f.FromDate = startDate; f.ToDate = endDate; f.StatusID = Statuse.GetByCode(Statuse.NEPLATENA_IZLEZNA_FAKTURA_ZA_PROVIZIJA).ID; f.DateOfPayment = dateOfPayment; f.Discard = false; f.InsuranceCompanyID = ic.ID; f.UserID = u.ID; f.Insert(); //List<FactureItem> listFactureItems = new List<FactureItem>(); int ordinalNumber = 1; foreach (KeyValuePair <int, decimal[]> kvPair in dictionary) { FactureItem fi = new FactureItem(); fi.Facture = f; fi.BrokerageValue = ScaleController.Scale5(kvPair.Value[0]); fi.PremiumValue = kvPair.Value[1]; fi.Number = ordinalNumber; fi.InsuranceSubTypeID = kvPair.Key; List <PolicyItem> subList = policyItemList.Where(c => c.InsuranceSubTypeID == kvPair.Key).ToList(); fi.Count = subList.Count; fi.Description = InsuranceSubType.Get(kvPair.Key).ShortDescription; ordinalNumber++; f.FactureItems.Add(fi); fi.Insert(); PolicyItemFactureItem.InsertForFacture(fi, subList); } Payment.SetFactured(paymentList, f, policiesToRemove); return(f); } return(null); }
public static Facture GenerateForLife(DateTime startDate, DateTime endDate, InsuranceCompany ic, User u, DateTime dateOfPayment, List <LifePolicy> policiesToRemove) { List <LifePolicyBrokerage> paymentList = LifePolicyBrokerage.Table.Where(c => c.LifePolicy.InsuranceCompanyID == ic.ID && c.LifePolicy.Discard == false && c.FromDate.Date <= endDate.Date).ToList(); decimal brokerageValue = 0; decimal totalSum = 0; Dictionary <int, decimal[]> dictionary = new Dictionary <int, decimal[]>(); List <LifePolicy> policyItemList = new List <LifePolicy>(); foreach (LifePolicyBrokerage p in paymentList) { if (!policiesToRemove.Contains(p.LifePolicy)) { if (!policyItemList.Contains(p.LifePolicy)) { policyItemList.Add(p.LifePolicy); } brokerageValue += p.Value; if (dictionary.ContainsKey(p.LifePolicy.InsuranceSubTypeID)) { dictionary[p.LifePolicy.InsuranceSubTypeID][0] += brokerageValue; dictionary[p.LifePolicy.InsuranceSubTypeID][1] += p.LifePolicy.TotalPremumValue; } else { decimal[] newValues = { brokerageValue, p.LifePolicy.TotalPremumValue }; dictionary.Add(p.LifePolicy.InsuranceSubTypeID, newValues); } totalSum += p.LifePolicy.TotalPremumValue; } } //da se zemat vo predvid i zaokruzuvanjata decimal calcBrokValue = 0; foreach (KeyValuePair <int, decimal[]> kvp in dictionary) { calcBrokValue += ScaleController.Scale5(kvp.Value[0]); } if (policyItemList.Count > 0) { Facture f = new Facture(); //f.BrokerageValue = ScaleController.Scale5(brokerageValue); f.BrokerageValue = calcBrokValue; f.TotalCost = totalSum; int clientID = 1; Client client = Client.GetByEmbg(ic.EMBG); if (client != null) { clientID = client.ID; } else { Client newClient = new Client(); newClient.Address = ic.Address; newClient.EMail = string.Empty; newClient.EMBG = ic.EMBG; newClient.Fax = string.Empty; newClient.IsInsuranceCompany = true; newClient.Mobile = string.Empty; newClient.Name = ic.Name; newClient.Phone = string.Empty; newClient.PlaceID = Place.Table.First().ID; newClient.Insert(); clientID = newClient.ID; } f.ClientID = clientID; f.DateOfCreation = DateTime.Today; f.DocumentSubTypeID = DocumentSubType.GetByCode(DocumentSubType.IZLEZNA_FAKTURA_ZA_PROVZIJA_ZA_ZIVOTNO_OSUGURUVANjE).ID; f.FactureNumber = CodeGenerator.GenerateFactureNumber(); f.FromDate = startDate; f.ToDate = endDate; f.StatusID = Statuse.GetByCode(Statuse.NEPLATENA_IZLEZNA_FAKTURA_ZA_PROVIZIJA_ZA_ZIVOTNO).ID; f.DateOfPayment = dateOfPayment; f.Discard = false; f.InsuranceCompanyID = ic.ID; f.UserID = u.ID; f.Insert(); //List<FactureItem> listFactureItems = new List<FactureItem>(); int ordinalNumber = 1; foreach (KeyValuePair <int, decimal[]> kvPair in dictionary) { FactureItem fi = new FactureItem(); fi.Facture = f; fi.BrokerageValue = ScaleController.Scale5(kvPair.Value[0]); fi.PremiumValue = kvPair.Value[1]; fi.Number = ordinalNumber; fi.InsuranceSubTypeID = kvPair.Key; List <LifePolicy> subList = policyItemList.Where(c => c.InsuranceSubTypeID == kvPair.Key).ToList(); fi.Count = subList.Count; fi.Description = InsuranceSubType.Get(kvPair.Key).ShortDescription; ordinalNumber++; f.FactureItems.Add(fi); fi.Insert(); LifePolicyFactureItem.InsertForFacture(fi, subList); } LifePolicyBrokerage.SetFactured(paymentList, f, policiesToRemove); return(f); } return(null); }
public static AccountFacture Generate(string factureNumber, DateTime startDate, DateTime endDate, InsuranceCompany ic, User u, DateTime dateOfPayment, List <PolicyItem> policiesToInclude, Branch branch) { decimal brokerageValue = 0; decimal totalSum = 0; decimal currentBrokerageValue = 0; Dictionary <int, decimal[]> dictionary = new Dictionary <int, decimal[]>(); Dictionary <int, List <int> > dictionaryPolList = new Dictionary <int, List <int> >(); foreach (PolicyItem policyItem in policiesToInclude) { if (policyItem.Policy.PacketID != null) { if (policyItem.Policy.Client.IsLaw) { currentBrokerageValue = policyItem.PremiumValue * policyItem.PacketsInsuranceSubType.BrokeragePecentageForLaws / 100; } else { currentBrokerageValue = policyItem.PremiumValue * policyItem.PacketsInsuranceSubType.BrokeragePecentageForPrivates / 100; } } else { if (policyItem.Policy.Client.IsLaw) { currentBrokerageValue = policyItem.PremiumValue * policyItem.Brokerage.PercentageForLaws / 100; } else { currentBrokerageValue = policyItem.PremiumValue * policyItem.Brokerage.PercentageForPrivates / 100; } } brokerageValue += currentBrokerageValue; if (dictionary.ContainsKey(policyItem.InsuranceSubTypeID)) { dictionary[policyItem.InsuranceSubTypeID][0] += currentBrokerageValue; dictionary[policyItem.InsuranceSubTypeID][1] += policyItem.PremiumValue; //dictionary[policyItem.InsuranceSubTypeID][2] += 1; dictionaryPolList[policyItem.InsuranceSubTypeID].Add(policyItem.ID); } else { decimal[] newValues = { currentBrokerageValue, policyItem.PremiumValue /*, 1*/ }; dictionary.Add(policyItem.InsuranceSubTypeID, newValues); List <int> cL = new List <int>(); cL.Add(policyItem.ID); dictionaryPolList.Add(policyItem.InsuranceSubTypeID, cL); } totalSum += policyItem.PremiumValue; } //da se zemat vo predvid i zaokruzuvanjata decimal calcBrokValue = 0; foreach (KeyValuePair <int, decimal[]> kvp in dictionary) { calcBrokValue += ScaleController.Scale5(kvp.Value[0]); } if (policiesToInclude.Count > 0) { AccountFacture f = new AccountFacture(); //f.BrokerageValue = ScaleController.Scale5(brokerageValue); f.BrokerageValue = calcBrokValue; f.TotalCost = totalSum; int clientID = 1; Client client = Client.GetByEmbg(ic.EMBG); if (client != null) { clientID = client.ID; } else { Client newClient = new Client(); newClient.Address = ic.Address; newClient.EMail = string.Empty; newClient.EMBG = ic.EMBG; newClient.Fax = string.Empty; newClient.IsInsuranceCompany = true; newClient.Mobile = string.Empty; newClient.Name = ic.Name; newClient.Phone = string.Empty; newClient.PlaceID = Place.Table.First().ID; newClient.Insert(); clientID = newClient.ID; } f.ClientID = clientID; f.DateOfCreation = DateTime.Today; f.DocumentSubTypeID = DocumentSubType.GetByCode(DocumentSubType.FAKTURA_PROVIZIJA).ID; f.FactureNumber = factureNumber; //CodeGenerator.GenerateFactureNumber(); f.FromDate = startDate; f.ToDate = endDate; f.BranchID = branch.ID; f.StatusID = Statuse.GetByCode(Statuse.NEPLATENA_IZLEZNA_FAKTURA_ZA_PROVIZIJA).ID; f.DateOfPayment = dateOfPayment; f.Discard = false; f.InsuranceCompanyID = ic.ID; f.UserID = u.ID; f.IsAccountBooked = false; f.Insert(); int ordinalNumber = 1; foreach (KeyValuePair <int, decimal[]> kvPair in dictionary) { AccountFactureItem fi = new AccountFactureItem(); fi.FactureID = f.ID; fi.BrokerageValue = ScaleController.Scale5(kvPair.Value[0]); fi.PremiumValue = kvPair.Value[1]; fi.Number = ordinalNumber; fi.InsuranceSubTypeID = kvPair.Key; fi.Count = dictionaryPolList[kvPair.Key].Count; fi.Description = InsuranceSubType.Get(kvPair.Key).ShortDescription; ordinalNumber++; fi.Insert(); AccountFactureItemPolicyItem.InsertForFacture(fi.ID, dictionaryPolList[kvPair.Key]); } PolicyItem.SetIsAccountFactured(policiesToInclude); return(f); } return(null); }