Exemple #1
0
        //bill calculate with 7 Layer detail with Box Type(Flat or Block Type)
        private decimal getMeterFeesAmountwith7LayerCode(MBMS.DAL.MeterUnitCollect meterUnitCollect)
        {
            decimal        result         = 0;
            decimal        sumUnits       = 0;
            BillCode7Layer billCode7Layer = meterbillcalculateservice.GetBillCode7LayerByBillCode(Convert.ToInt64(meterUnitCollect.Customer.BillCode7Layer.BillCode7LayerNo));
            List <BillCode7LayerDetail> billCode7LayerDetailList = meterbillcalculateservice.GetBillCode7LayerDetailByBillCode7LayerID(billCode7Layer.BillCode7LayerID).OrderBy(y => y.LowerLimit).ToList();

            foreach (BillCode7LayerDetail item in billCode7LayerDetailList)
            {
                if (billCode7Layer.BillCodeLayerType.Equals("Block Type"))
                {
                    //before calculate the value,multiply totol meter unit with multiplier value
                    if ((meterUnitCollect.TotalMeterUnit * meterMultiplier) > (sumUnits + item.RateUnit))
                    {
                        result   += (decimal)(item.RateUnit * item.AmountPerUnit);
                        sumUnits += (decimal)item.RateUnit;
                    }
                    else
                    {
                        decimal diffUnits = meterUnitCollect.TotalMeterUnit - sumUnits;
                        result += (decimal)diffUnits * item.AmountPerUnit;
                        if ((diffUnits + sumUnits) == meterUnitCollect.TotalMeterUnit)
                        {
                            return(result);
                        }
                    } //end of else
                }     //end of Block Type condition
                else
                {
                    result = meterUnitCollect.TotalMeterUnit * item.AmountPerUnit;
                }
            } //end of foreach loop
            return(result);
        }     //end of method
        private bool SaveMeterUnitCollection(List <NodeMeter> data)
        {
            ErrorList.Clear();
            DateTime fromDate      = dtpfromDate.Value.Date;
            DateTime toDate        = dtptoDate.Value.Date;
            string   transformerId = string.Empty;

            if (!cboTransformer.SelectedValue.Equals("0"))
            {
                transformerId = cboTransformer.SelectedValue.ToString();
            }
            bool checkData = false;

            if (!string.IsNullOrEmpty(transformerId))
            {
                checkData = mbmsEntities.MeterBills.Any(x => EntityFunctions.TruncateTime(x.InvoiceDate) >= fromDate && EntityFunctions.TruncateTime(x.InvoiceDate) <= toDate &&
                                                        x.MeterUnitCollect.TransformerID == transformerId);
            }
            else
            {
                checkData = mbmsEntities.MeterBills.Any(x => EntityFunctions.TruncateTime(x.InvoiceDate) >= fromDate && EntityFunctions.TruncateTime(x.InvoiceDate) <= toDate);
            }

            if (checkData)
            {
                MessageBox.Show("Bill Units can't re-collect because data is already calculated and printed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
            try {
                List <MBMS.DAL.MeterUnitCollect> meterUnitCollectList = new List <MBMS.DAL.MeterUnitCollect>();
                foreach (NodeMeter item in data)
                {
                    MBMS.DAL.MeterUnitCollect meterUnit = new MBMS.DAL.MeterUnitCollect();
                    Customer customerinfo = mbmsEntities.Customers.Where(x => x.CustomerCode == item.nod_csm_id && x.Active == true).SingleOrDefault();//eg >>450-050-545-450-TPYTR05-00000428
                    if (customerinfo == null)
                    {
                        ErrorList.Append("Set customer record for :" + item.nod_csm_id);
                        MessageBox.Show(ErrorList.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }
                    meterUnit.MeterUnitCollectID = Guid.NewGuid().ToString();
                    meterUnit.CustomerID         = customerinfo.CustomerID;
                    string y = item.nod_bill_from;
                    string m = item.nod_bill_from;
                    string d = item.nod_bill_from;
                    meterUnit.FromDate       = item.nod_bill_from == ""?dtpfromDate.Value:Convert.ToDateTime(y.Substring(0, 4) + "-" + m.Substring(4, 2) + "-" + d.Substring(6, 2));
                    meterUnit.ToDate         = item.nod_bill_to == ""?dtptoDate.Value:Convert.ToDateTime(item.nod_bill_to);
                    meterUnit.TotalMeterUnit = (decimal)item.nod_pres_eng;
                    meterUnit.BillMonth      = (int)item.nod_bill_month;
                    Transformer transformer = mbmsEntities.Transformers.Where(x => x.QuarterID == customerinfo.QuarterID && x.Active == true).SingleOrDefault();
                    if (transformer == null)
                    {
                        ErrorList.Append("Set transformer record for :" + customerinfo.Quarter.QuarterNameInEng);
                        MessageBox.Show(ErrorList.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }
                    meterUnit.TransformerID = transformer.TransformerID;
                    Pole p = mbmsEntities.Poles.Where(x => x.TransformerID == transformer.TransformerID && x.Active == true).SingleOrDefault();
                    if (p == null)
                    {
                        ErrorList.Append("Set Pole record for :" + customerinfo.Quarter.QuarterNameInEng);
                        MessageBox.Show(ErrorList.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }
                    meterUnit.PoleID         = p.PoleID;
                    meterUnit.MeterID        = customerinfo.MeterID;
                    meterUnit.GPSX           = Convert.ToDecimal(item.nod_gps_h);
                    meterUnit.GPSY           = Convert.ToDecimal(item.nod_gps_l);
                    meterUnit.MeterStatus    = item.nod_status;
                    meterUnit.OMRModelNo     = item.nod_model;
                    meterUnit.DigitalModelNo = item.nod_model;
                    meterUnit.BillCode       = customerinfo.BillCode7Layer.BillCode7LayerNo.ToString();
                    meterUnit.Active         = true;
                    meterUnit.CreatedDate    = DateTime.Now;
                    meterUnit.CreatedUserID  = UserID;
                    meterUnitCollectList.Add(meterUnit);
                }
                iMeterUnitColleciton.MeterUnitCollectionsProces(meterUnitCollectList);
                return(true);
            }
            catch (Exception ex) {
                MessageBox.Show("Error occur" + ex.Message, "Error");
                return(false);
            }
        }