예제 #1
0
        private void CalculateSievesizeAndAvgDiamondPrize(DataGridView mapGrid, int rowIndex)
        {
            var avgDiaPrize    = default(decimal);
            var DiaPrize       = default(decimal);
            var sieveSize      = String.Empty;
            var diaPerticulars = mapGrid.Rows[0].GetCellValue(_columnstonetype);

            DataGridViewRow row = mapGrid.Rows[rowIndex];

            if (row.ValidateDependentProperties(_columndiawtdetails, _columnavrdia))
            {
                var avgDiamondvalue = Convert.ToDecimal(row.GetCellValue(_columnavrdia));
                var Diamondvalue    = Convert.ToDecimal(row.GetCellValue(_columndiawtdetails));
                sieveSize = LocalStore.SieveGroups.GetSieveGroupName(avgDiamondvalue);

                var item = CostingRate.CostingItems.FirstOrDefault(x => x.Particulars == diaPerticulars && x.ConfigurationValue == sieveSize && x.ProductCategory == ProductCategory.Stone);

                avgDiaPrize = item == null ? default(decimal) : item.Amount;
                DiaPrize    = Diamondvalue * avgDiaPrize;
            }

            row.Cells[_columnsievsz.ToLowerCaseColumnName()].Value = sieveSize;
            row.Cells[_columndiapr.ToLowerCaseColumnName()].Value  = avgDiaPrize;
            row.Cells[_columndiaval.ToLowerCaseColumnName()].Value = DiaPrize;
        }
예제 #2
0
        public void CalculateNetMetalWeight(DataGridView mapGrid, Int32 rowIndex)
        {
            var             returnVal = default(decimal);
            DataGridViewRow row       = mapGrid.Rows[rowIndex];

            if (JewelHasStone)
            {
                if (row.ValidateDependentProperties(_columngrwt, _columndiawt))
                {
                    if (returnVal > 0)
                    {
                        returnVal = Math.Max(returnVal
                                             - (Convert.ToDecimal(row.GetCellValue(_columndiawt)) / 5), 0);
                    }
                    else
                    {
                        returnVal = Math.Max(Convert.ToDecimal(row.GetCellValue(_columngrwt))
                                             - (Convert.ToDecimal(row.GetCellValue(_columndiawt)) / 5), 0);
                    }
                }
                if (row.ValidateDependentProperties(_columngrwt, _columncstonewt))
                {
                    returnVal = returnVal > 0 ? Math.Max(returnVal - Convert.ToDecimal(row.GetCellValue(_columncstonewt)), 0) : Math.Max(Convert.ToDecimal(row.GetCellValue(_columngrwt)) - Convert.ToDecimal(row.GetCellValue(_columncstonewt)), 0);
                }
            }
            else
            {
                if (row.ValidateDependentProperties(_columngrwt))
                {
                    returnVal = Math.Max(Convert.ToDecimal(row.GetCellValue(_columngrwt)), 0);
                }
            }

            row.Cells[_columnntwt.ToLowerCaseColumnName()].Value = returnVal;
        }
예제 #3
0
        private void CalculateLabourAmount(DataGridView mapGrid, int RowIndex)
        {
            var             returnVal = default(Decimal);
            DataGridViewRow row       = mapGrid.Rows[RowIndex];

            if (row.ValidateDependentProperties(_columnntwt, _columntype))
            {
                var prodType = row.GetCellValue(_columntype);

                var labour = CostingRate.CostingItems.SingleOrDefault(x => x.Particulars == prodType && x.ProductCategory == ProductCategory.Labour);

                if (labour == null)
                {
                    return;
                }

                var labourCost    = labour.Amount;
                var minlabourCost = labour.MinimumAmount;

                if (Convert.ToDecimal(row.GetCellValue(_columnntwt)) * labourCost <= minlabourCost)
                {
                    returnVal = Math.Max(minlabourCost, 0);
                }
                else
                {
                    returnVal = Convert.ToDecimal(row.GetCellValue(_columnntwt)) * labourCost;
                }
            }

            row.Cells[_columnlabr.ToLowerCaseColumnName()].Value = returnVal;
        }
예제 #4
0
        private void CalculateAverageDiamondWeigth(DataGridView mapGrid, int rowIndex)
        {
            var             returnVal = default(decimal);
            DataGridViewRow row       = mapGrid.Rows[rowIndex];

            if (row.ValidateDependentProperties(_columndiapcsdetails, _columndiawtdetails))
            {
                if (Convert.ToDecimal(row.GetCellValue(_columndiapcsdetails)) != 0)
                {
                    returnVal = Math.Max(Convert.ToDecimal(row.GetCellValue(_columndiawtdetails))
                                         / Convert.ToDecimal(row.GetCellValue(_columndiapcsdetails)), 0);
                }
            }

            row.Cells[_columnavrdia.ToLowerCaseColumnName()].Value = returnVal;
        }
예제 #5
0
        private void CalculateNetMetalAmount(DataGridView mapGrid, int rowIndex)
        {
            var             returnVal = default(decimal);
            DataGridViewRow row       = mapGrid.Rows[rowIndex];

            if (row.ValidateDependentProperties(_columnmetaltype, _columnntwt))
            {
                var metalType = row.GetCellValue(_columnmetaltype);
                var rate      = CostingRate.CostingItems.FirstOrDefault(x => x.ProductCategory == ProductCategory.Metal && x.Particulars == metalType);


                returnVal = Math.Max(Convert.ToDecimal(row.GetCellValue(_columnntwt))
                                     * Convert.ToDecimal(rate.Amount), 0);
            }

            row.Cells[_columngamt.ToLowerCaseColumnName()].Value = returnVal;
        }
예제 #6
0
        void OnAddtoListClick(object sender, EventArgs e)
        {
            if (_validateForm(this) == false)
            {
                MessageBox.Show(Resources.frmCostingRates_OnAddtoListClick_Incomplete_information_provided_, Constants.ALERTMESSAGEHEADER);
                return;
            }

            ItemDetail transactionDetails;

            if (!_validateDataGrid(dgCostingFormat, out transactionDetails))
            {
                return;
            }

            // Create a local collection of costing rates
            DataGridViewRow row = dgCostingFormat.Rows[0];

            // make a list of purchaseJewelsRequest and save it to database.
            var item = new JewelTransaction
            {
                JewelItemCategory = ItemCategory,
                CostingDetail     = new CostingDetail {
                    Properties = CostingRate
                },
                TransactionType = TransactionType.PurchaseTransaction,
                KT = row.GetCellValue(_columnmetaltype),
                CertificateNumber = row.GetCellValue(_columncerno),
                DesignCode        = row.GetCellValue(_columndesignno),
                StonePcs          = JewelHasStone ? row.GetParsedCellValue <int>(_columndiapcs) : 0,
                StoneWeight       = JewelHasStone ? row.GetParsedCellValue <decimal>(_columndiawt) : 0,
                CStonePcs         = JewelHasStone ? row.GetParsedCellValue <int>(_columncstonepcs) : 0,
                CStoneWeight      = JewelHasStone ? row.GetParsedCellValue <decimal>(_columncstonewt) : 0,
                JewelType         = row.GetCellValue(_columntype),
                TotalWeight       = Convert.ToDecimal(row.GetCellValue(_columngrwt)),
                MetalWeight       = Convert.ToDecimal(row.GetCellValue(_columnntwt)),
                MetalColor        = row.GetCellValue(_columnmetalcolor),
                Properties        = new TransactionDetails {
                    ItemDetails = transactionDetails
                },
                TransactionPartyRef   = ((Supplier)cboCustomer.SelectedItem).SupplierCode,
                TransactionDate       = dtCosting.Value,
                JewelTransactionRowId = Guid.NewGuid(),
            };

            PurchaseTransactionItems.Add(item);

            _addtoPanel(item);

            ResetDataGridView(dgCostingFormat);
        }
예제 #7
0
        private void CalculateFinalAmount(DataGridView mapGrid, int rowIndex)
        {
            var             returnVal = default(decimal);
            DataGridViewRow row       = mapGrid.Rows[rowIndex];

            if (JewelHasStone)
            {
                decimal stamp;
                Decimal.TryParse(row.GetCellValue(_columnstamp, true), out stamp);

                if (row.ValidateDependentProperties(_columngamt, _columndiavalsum, _columnlabr))
                {
                    returnVal = Math.Max(
                        Convert.ToDecimal(row.GetCellValue(_columngamt))
                        + Convert.ToDecimal(row.GetCellValue(_columndiavalsum))
                        + Convert.ToDecimal(row.GetCellValue(_columnlabr))
                        + stamp, 0);

                    if (row.ValidateDependentProperties(_columncert))
                    {
                        returnVal += Math.Max(Convert.ToDecimal(row.GetCellValue(_columncert)), 0);
                    }
                }
            }
            else
            {
                if (row.ValidateDependentProperties(_columngamt, _columnlabr))
                {
                    returnVal = Math.Max(Convert.ToDecimal(row.GetCellValue(_columngamt))
                                         + Convert.ToDecimal(row.GetCellValue(_columnlabr))
                                         , 0);
                }
            }

            row.Cells[_columnamount.ToLowerCaseColumnName()].Value = returnVal;
        }
예제 #8
0
        private bool _validateDataGrid(DataGridView mapGrid, out ItemDetail itemDetail)
        {
            itemDetail = new ItemDetail();

            DataGridViewRow row = mapGrid.Rows[0];

            if (row == null)
            {
                throw new IndexOutOfRangeException("No rows found");
            }

            // Validate inline row details
            AllErrors.Clear();
            if (row.ValidateDependentProperties(_columntype) == false)
            {
                AllErrors.Add("JewelType", "JewelType is required.");
            }

            if (row.ValidateDependentProperties(_columnjewelnumber) == false)
            {
                AllErrors.Add("JewelNumber", "JewelNumber is required.");
            }

            if (row.ValidateDependentProperties(_columnntwt) == false)
            {
                AllErrors.Add("MetalWeight", "Total MetalWeight is required.");
            }

            if (JewelHasStone)
            {
                if (IsStoneMode)
                {
                    if (row.ValidateDependentProperties(_columndiawt) == false)
                    {
                        AllErrors.Add("DiamondWeight", "Total Diamond Weight is required.");
                    }

                    if (row.ValidateDependentProperties(_columndiapcs) == false)
                    {
                        AllErrors.Add("DiamondPcs", "Total Diamond Pcs required.");
                    }

                    if (row.ValidateDependentProperties(_columngrwt, _columndiawt))
                    {
                        if (row.GetParsedCellValue <decimal>(_columngrwt) - row.GetParsedCellValue <decimal>(_columndiawt) < 0)
                        {
                            AllErrors.Add("InvalidDiamondWeight", "Invalid diamond weight.");
                        }
                    }
                }
                else if (IsColorStoneMode)
                {
                    if (row.ValidateDependentProperties(_columncstonewt) == false)
                    {
                        AllErrors.Add("ColorStoneWeight", "Total ColorStone Weight is required.");
                    }

                    if (row.ValidateDependentProperties(_columncstonepcs) == false)
                    {
                        AllErrors.Add("ColorStonePcs", "Total ColorStone Pcs is required.");
                    }

                    if (row.ValidateDependentProperties(_columngrwt, _columncstonewt))
                    {
                        if (row.GetParsedCellValue <decimal>(_columngrwt) - row.GetParsedCellValue <decimal>(_columncstonewt) < 0)
                        {
                            AllErrors.Add("InvalidColorStoneWeight", "Invalid ColorStone weight.");
                        }
                    }
                }

                if (row.ValidateDependentProperties(_columngrwt, _columndiawt, _columncstonewt))
                {
                    if (row.GetParsedCellValue <decimal>(_columngrwt) - (row.GetParsedCellValue <decimal>(_columndiawt) + row.GetParsedCellValue <decimal>(_columncstonewt)) < 0)
                    {
                        AllErrors.Add("InvalidTotalWeight", "Invalid total stone weights.");
                    }
                }
            }

            if (row.ValidateDependentProperties(_columnamount) == false)
            {
                AllErrors.Add("TotalAmount", "TotalAmount is required.");
            }

            if (AllErrors.Count > 0)
            {
                MessageBox.Show(AllErrors.ErrorMessageString(), Constants.ALERTMESSAGEHEADER);
                return(false);
            }

            if (JewelHasStone)
            {
                if (IsStoneMode)
                {
                    // Validate DiamondPcs with the bifercation row details
                    Int32   returnValdiaPcs = default(Int32);
                    Decimal returnValdiaWt  = default(decimal);
                    var     diaPcs          = Convert.ToInt32(row.GetCellValue(_columndiapcs));
                    var     diaWt           = Convert.ToDecimal(row.GetCellValue(_columndiawt));

                    foreach (DataGridViewRow curRow in mapGrid.Rows)
                    {
                        if (curRow.ValidateDependentProperties(_columndiapcsdetails) && curRow.ValidateDependentProperties(_columndiawtdetails))
                        {
                            returnValdiaPcs += Convert.ToInt32(curRow.Cells[_columndiapcsdetails.ToLowerCaseColumnName()].Value);
                        }
                        if (curRow.ValidateDependentProperties(_columndiawtdetails) && curRow.ValidateDependentProperties(_columndiapcsdetails))
                        {
                            returnValdiaWt += Convert.ToDecimal(curRow.Cells[_columndiawtdetails.ToLowerCaseColumnName()].Value);
                        }
                    }

                    if (returnValdiaPcs != diaPcs)
                    {
                        AllErrors.Add("InvalidDiamondPcs", "Invalid diamond pcs count.");
                    }

                    if (returnValdiaWt != diaWt)
                    {
                        AllErrors.Add("TotalDiamondPcs", "Total diamond weight must match with sum of diamonds weight.");
                    }

                    if (mapGrid.Rows.Cast <DataGridViewRow>().Where(curRow => curRow.ValidateDependentProperties(_columnavrdia)).Any(curRow => row.ValidateDependentProperties(_columndiapr) == false))
                    {
                        AllErrors.Add("TotalDiamondPrices", "Invalid diamond prices, please define costing.");
                    }

                    if (ItemCategory == JewelItemCategory.Gold && false == CostingRate.CertificateRate.Items.Any(x => x.RangeMinValue <= diaWt && x.RangeMaxValue >= diaWt))
                    {
                        AllErrors.Add("CertificateCosting", "Certificate costing is not defined.");
                    }
                }
                else if (IsColorStoneMode)
                {
                    if (row.ValidateDependentProperties(_columncstonepcs) == false)
                    {
                        AllErrors.Add("ColorStonePices", "ColorStone pcs is required.");
                    }

                    if (row.ValidateDependentProperties(_columncstonewt) == false)
                    {
                        AllErrors.Add("ColorStoneWeight", "Total ColorStoneWeight is required.");
                    }
                    else
                    {
                        var grwt     = Convert.ToDecimal(row.Cells[_columngrwt.ToLowerCaseColumnName()].Value);
                        var cstonewt = Convert.ToDecimal(row.Cells[_columncstonewt.ToLowerCaseColumnName()].Value);
                        if ((grwt - cstonewt) <= 0)
                        {
                            AllErrors.Add("ColorStoneWeight", "Invalid Total ColorStone Weight.");
                        }
                    }
                }
            }

            if (AllErrors.Count > 0)
            {
                MessageBox.Show(AllErrors.ErrorMessageString(), Constants.ALERTMESSAGEHEADER);
                return(false);
            }

            itemDetail.ItemDescription   = row.GetCellValue(_columntype);
            itemDetail.CertificateNumber = row.GetCellValue(_columncerno);
            itemDetail.DesignCode        = row.GetCellValue(_columndesignno);
            itemDetail.ItemCategory      = ItemCategory.ToString();
            itemDetail.TotalWeight       = Convert.ToDecimal(row.GetCellValue(_columngrwt, true));
            itemDetail.StampingCharges   = Convert.ToDecimal(row.GetCellValue(_columnstamp, true));
            itemDetail.LabourCharges     = Convert.ToDecimal(row.GetCellValue(_columnlabr, true));

            row.GetCellValue(_columnmetaltype);

            itemDetail.MetalDetail = new MetalDetail
            {
                MetalKT        = row.GetCellValue(_columnmetaltype),
                MetalNetAmount = Convert.ToDecimal(row.GetCellValue(_columngamt)),
                MetalNetWt     = Convert.ToDecimal(row.GetCellValue(_columnntwt)),
                MetalType      = row.GetCellValue(_columnmetaltype)
            };

            if (JewelHasStone)
            {
                var stoneAmount = 0M;
                if (IsStoneMode)
                {
                    itemDetail.CertificateCharges = Convert.ToDecimal(row.GetCellValue(_columncert));
                    // I am unknown
                    Func <List <StoneMetaDetail> > getMetaData = () => (from DataGridViewRow gridRow in mapGrid.Rows
                                                                        where
                                                                        gridRow.ValidateDependentProperties(_columnavrdia) &&
                                                                        gridRow.ValidateDependentProperties(_columndiapr)
                                                                        select new StoneMetaDetail
                    {
                        StoneSieveSz = gridRow.GetCellValue(_columnsievsz),
                        StoneWt = Convert.ToDecimal(gridRow.GetCellValue(_columndiawtdetails)),
                        StonePcs = Convert.ToInt32(gridRow.GetCellValue(_columndiapcsdetails)),
                        StoneValue = Convert.ToDecimal(gridRow.GetCellValue(_columndiaval))
                    }).ToList();

                    var detail = new StoneDetail
                    {
                        StoneType     = row.GetCellValue(_columnstonetype),
                        StoneNetWt    = Convert.ToDecimal(row.GetCellValue(_columndiawt)),
                        TotalStonePcs = Convert.ToInt32(row.GetCellValue(_columndiapcs)),
                        StoneChart    = new StoneChart
                        {
                            StoneMetaDetailList = getMetaData.Invoke()
                        }
                    };

                    stoneAmount            = detail.StoneChart.StoneMetaDetailList.Sum(x => x.StoneValue);
                    detail.StoneNetAmount  = stoneAmount;
                    itemDetail.StoneDetail = detail;
                }
                if (IsColorStoneMode)
                {
                    itemDetail.ColorStoneDetail = new ColorStoneDetail
                    {
                        ColorStoneType      = row.GetCellValue(_columncsstonetype),
                        ColorStoneNetWt     = Convert.ToDecimal(row.GetCellValue(_columncstonewt)),
                        ColorStoneNetAmount = Convert.ToDecimal(row.GetCellValue(_columndiavalsum)) - stoneAmount,
                        ColorTotalStonePcs  = Convert.ToInt32(row.GetCellValue(_columncstonepcs))
                    };
                }
            }

            return(true);
        }