Example #1
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);
        }
Example #2
0
        void _addtoPanel(JewelTransaction item)
        {
            var panel = new Panel {
                Tag = item.JewelTransactionRowId
            };

            panel.MouseClick += JewelItemClick;
            var menu = new ContextMenu();

            menu.MenuItems.Add(new MenuItem("Remove Item", _itemremovefromPanel));
            panel.ContextMenu           = menu;
            panel.BorderStyle           = BorderStyle.FixedSingle;
            panel.Cursor                = Cursors.Hand;
            panel.BackgroundImageLayout = ImageLayout.Stretch;
            panel.Size            = new Size(71, 46);
            panel.BackgroundImage = ImageExtension.ResolveImage(item.DesignCode);
            flowLayout.Controls.Add(panel);
        }
        void Calculate(DataGridView mapGrid, CostingRates costingRates, out List <JewelTransaction> jewelTransaction)
        {
            jewelTransaction = new List <JewelTransaction>();
            var tranLookupKey = Guid.NewGuid();

            foreach (var item in mapGrid.Rows)
            {
                var row     = (DataGridViewRow)item;
                var jewelNo = row.GetCellValue(_columnjewelnumber);

                var tranDetails = _transactionServices.GetJewelTransactionsByJewelNo(jewelNo);
                var tran        = new JewelTransaction
                {
                    JewelTransactionRowId = tranLookupKey,
                    TransactionType       = ApprovalSelection ? TransactionType.ApprovalTransaction : TransactionType.MarketingTransaction,
                    CostingDetail         = new CostingDetail {
                        Properties = costingRates
                    },
                    CertificateNumber  = tranDetails.CertificateNumber,
                    CStonePcs          = tranDetails.CStonePcs,
                    CStoneWeight       = tranDetails.CStoneWeight,
                    DesignCode         = tranDetails.DesignCode,
                    JewelNumber        = tranDetails.JewelNumber,
                    JewelTransactionId = tranDetails.JewelTransactionId,
                    JewelType          = tranDetails.JewelType,
                    KT                  = tranDetails.KT,
                    MetalColor          = tranDetails.MetalColor,
                    JewelItemCategory   = tranDetails.JewelItemCategory,
                    MetalWeight         = tranDetails.MetalWeight,
                    Properties          = tranDetails.Properties,
                    StonePcs            = tranDetails.StonePcs,
                    StoneWeight         = tranDetails.StoneWeight,
                    TotalAmount         = tranDetails.TotalAmount,
                    TotalWeight         = tranDetails.TotalWeight,
                    TransactionDate     = dtCosting.Value,
                    TransactionPartyRef = ((Customer)cboCustomer.SelectedItem).CustomersCode,
                };

                jewelTransaction.Add(tran);
            }
            _jewelCalculation.Calculate(costingRates, jewelTransaction);
        }
Example #4
0
        private void lnkRTS_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var isYes = MessageBox.Show(Resources.frmManageTransaction_lnkRTS_LinkClicked_Are_you_sure_want_to_return_stock_into_account, Resources.frmManageTransaction_lnkRTS_LinkClicked_Return_To_Stock, MessageBoxButtons.OKCancel) == DialogResult.OK;

            if (isYes)
            {
                var transactionType = (TransactionType == TransactionType.MarketingTransaction) ? TransactionType.MarketingInReturnTransaction :
                                      (TransactionType == TransactionType.ApprovalTransaction ? TransactionType.ApprovalInReturnTransaction : TransactionType.NotSet);

                var request    = new JewelTransactionRequest();
                var memoNumber = (cboTran.SelectedValue as TransactionLookup).MemoNumber;

                var lookup  = _transactionServices.GetJewelTransactionsLookUp().Single(x => x.MemoNumber == memoNumber);
                var clookup = new TransactionLookup
                {
                    Remarks             = lookup.Remarks,
                    TransactionPartyRef = lookup.TransactionPartyRef,
                    ContactName         = lookup.ContactName,
                    DocNumber           = lookup.DocNumber,
                    TransactionLookupId = 0,
                    TransactionDate     = DateTime.Now,
                    TransactionType     = transactionType
                };

                foreach (object row in dgvJewel.Rows)
                {
                    var current = ((DataGridViewRow)(row));
                    if ((bool)current.Cells[_columnselectchk.ToLowerCaseColumnName()].Value)
                    {
                        var jewelno = current.Cells[_columnjewelnumber.ToLowerCaseColumnName()].Value;
                        var tran    = current.Cells[_columntrno.ToLowerCaseColumnName()].Value;
                        var jewel   = _transactionServices.GetJewelStockByJewelNo(jewelno.ToString());
                        var trans   = _transactionServices.GetJewelTransactionsById((Int32)tran);
                        if ((jewel.StockStatus == StockStatus.ItemLockedInStock && jewel.JewelState == JewelState.OnMarketing) ||
                            jewel.StockStatus == StockStatus.ItemOutOfStock && jewel.JewelState == JewelState.OnApproval)
                        {
                            var item = new JewelTransaction
                            {
                                CostingDetail     = trans.CostingDetail,
                                TransactionType   = transactionType,
                                MetalColor        = trans.MetalColor,
                                CStonePcs         = trans.CStonePcs,
                                CStoneWeight      = trans.CStoneWeight,
                                CertificateNumber = trans.CertificateNumber,
                                DesignCode        = trans.DesignCode,
                                StonePcs          = trans.StonePcs,
                                KT = trans.KT,
                                JewelItemCategory   = trans.JewelItemCategory,
                                JewelNumber         = trans.JewelNumber,
                                JewelType           = trans.JewelType,
                                TotalWeight         = trans.TotalWeight,
                                MetalWeight         = trans.MetalWeight,
                                StoneWeight         = trans.StoneWeight,
                                Properties          = trans.Properties,
                                TransactionPartyRef = trans.TransactionPartyRef,
                                TransactionDate     = DateTime.Today,
                                TotalAmount         = trans.TotalAmount
                            };
                            clookup.JewelTransactions.Add(item);
                        }
                    }
                }
                if (clookup.JewelTransactions.Any())
                {
                    request.TransactionLookup = clookup;
                    var response = _transactionServices.CreateJewelTransaction(request);
                    ShowManagedModalForm <frmCostingConfirmation>(Owner as frmMDIParent, response.TransactionLookup);
                }
                else
                {
                    MessageBox.Show(Resources.frmManageTransaction_lnkRTS_LinkClicked_no_item_available_to_be_returned_);
                    return;
                }

                btnGo_Click(new Object(), new EventArgs());
            }
        }
Example #5
0
        private void CancelTransaction(int lookupid)
        {
            var isYes = MessageBox.Show(Resources.frmManageTransaction_lnkRTS_LinkClicked_Are_you_sure_want_to_return_stock_into_account, Resources.frmManageTransaction_lnkRTS_LinkClicked_Return_To_Stock, MessageBoxButtons.OKCancel) == DialogResult.OK;

            if (isYes)
            {
                var request = new JewelTransactionRequest();

                var lookup  = _transactionService.GetJewelTransactionsLookUp().Single(x => x.TransactionLookupId == lookupid);
                var clookup = new TransactionLookup
                {
                    Remarks             = lookup.Remarks,
                    TransactionPartyRef = lookup.TransactionPartyRef,
                    ContactName         = lookup.ContactName,
                    ReferenceMemoNumber = lookup.MemoNumber,
                    DocNumber           = lookup.DocNumber,
                    TransactionType     = TransactionType.SalesInReturnTransaction,
                    TransactionLookupId = 0,
                    TransactionDate     = DateTime.Now
                };

                foreach (var trans in lookup.JewelTransactions)
                {
                    var item = new JewelTransaction
                    {
                        CostingDetail     = trans.CostingDetail,
                        TransactionType   = TransactionType.SalesInReturnTransaction,
                        MetalColor        = trans.MetalColor,
                        CStonePcs         = trans.CStonePcs,
                        CStoneWeight      = trans.CStoneWeight,
                        CertificateNumber = trans.CertificateNumber,
                        DesignCode        = trans.DesignCode,
                        StonePcs          = trans.StonePcs,
                        KT = trans.KT,
                        JewelItemCategory   = trans.JewelItemCategory,
                        JewelNumber         = trans.JewelNumber,
                        JewelType           = trans.JewelType,
                        TotalWeight         = trans.TotalWeight,
                        MetalWeight         = trans.MetalWeight,
                        StoneWeight         = trans.StoneWeight,
                        Properties          = trans.Properties,
                        TransactionPartyRef = trans.TransactionPartyRef,
                        TransactionDate     = DateTime.Today,
                        TotalAmount         = trans.TotalAmount
                    };
                    clookup.JewelTransactions.Add(item);
                }

                if (clookup.JewelTransactions.Any())
                {
                    request.TransactionLookup = clookup;
                    var response = _transactionService.CreateJewelTransaction(request);
                    ShowManagedModalForm <frmCostingConfirmation>(Owner as frmMDIParent, response.TransactionLookup);
                }
                else
                {
                    MessageBox.Show(Resources.frmManageTransaction_lnkRTS_LinkClicked_no_item_available_to_be_returned_);
                    return;
                }

                FindTransaction();
            }
        }
Example #6
0
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            PurchaseTransactionItems = new List <JewelTransaction>();
            txtUploadError.Text      = String.Empty;
            txtUploadError.Height    = 1;
            dgvJewel.Rows.Clear();

            txtUploadError.Text = Resources.frmExcelCostingRates_openFileDialog1_FileOk_Following_error_s__occoured_while_processing_your_excel + Environment.NewLine + Resources.frmExcelCostingRates_openFileDialog1_FileOk_ + Environment.NewLine + Environment.NewLine;

            var excel      = new ExcelQueryFactory(openFileDialog1.FileName);
            var uploadData = excel.Worksheet <ExcelData>("COSTING FORMAT");

            try { Queryable.Count(uploadData); }
            catch (Exception ex) { MessageBox.Show(Resources.frmExcelCostingRates_openFileDialog1_FileOk_ + "\n" + ex.Message); return; }

            var allRows = ProcessExcelData(uploadData.ToList());

            var rows = new JewelData {
                Items = allRows.Items.Where(x => x.IsValid).ToList()
            };

            if (allRows.Items.Count() != allRows.Items.Select(x => x.SRNO).Distinct().Count())
            {
                MessageBox.Show(Resources.frmExcelCostingRates_openFileDialog1_FileOk_Please_ensure_excel_file_is_numbered_correctly_); return;
            }

            foreach (var row in rows.Items)
            {
                var item = new ItemDetail
                {
                    TotalWeight       = row.GRWT,
                    CertificateNumber = row.CERTNO,
                    DesignCode        = row.DESIGNNO,
                    ItemCategory      = row.TYPE,
                    ItemDescription   = row.TYPE
                };

                var metalRate = CostingRate.CostingItems.Single(x => x.ProductCategory == ProductCategory.Metal && x.Particulars == row.KT);

                var labour = CostingRate.CostingItems.FirstOrDefault(x => x.Particulars == row.TYPE && x.ProductCategory == ProductCategory.Labour);

                if (labour == null)
                {
                    row.ErrorMessage = String.Format("Invalid metal type, for record {0}", row.SRNO);
                    continue;
                }

                decimal labourCharges;
                var     labourCost    = labour.Amount;
                var     minlabourCost = labour.MinimumAmount;
                var     netMetalWt    = Math.Max(row.GRWT - row.TOTALDIAWT / 5, 0);
                if (netMetalWt * labourCost <= minlabourCost)
                {
                    labourCharges = Math.Max(minlabourCost, 0);
                }
                else
                {
                    labourCharges = netMetalWt * labourCost;
                }

                item.LabourCharges = labourCharges;
                item.MetalDetail   = new MetalDetail
                {
                    MetalNetWt     = netMetalWt,
                    MetalType      = row.KT,
                    MetalNetAmount = Math.Max(row.GRWT - row.TOTALDIAWT / 5, 0) * Math.Max(metalRate.Amount, 0),
                    MetalKT        = row.KT
                };

                if (row.HasDiamond)
                {
                    var diawt = row.TOTALDIAWT;

                    var tempstncnt = row.DIAPCSDETAIL.Sum();
                    if (tempstncnt != row.TOTALDIAPCS)
                    {
                        row.ErrorMessage = String.Format("Invalid diamond pcs count for type {0}, for record {1}", row.TYPE, row.SRNO);
                        continue;
                    }

                    var tempstnwt = row.DIAWTDETAIL.Sum();
                    if (tempstnwt != row.TOTALDIAWT)
                    {
                        row.ErrorMessage = String.Format("Invalid diamond pcs wt for type {0}, for record {1}", row.TYPE, row.SRNO);
                        continue;
                    }

                    var metailDetail = new List <StoneMetaDetail>();

                    var tempflg = false;
                    for (int i = 0; i < row.SIEVESIZE.Count; i++)
                    {
                        var svSize = row.SIEVESIZE[i];

                        if (CostingRate.CostingItems.Any(x =>
                                                         x.ProductCategory == ProductCategory.Stone &&
                                                         x.Particulars == row.STONETYPE &&
                                                         x.ConfigurationValue == svSize) == false)
                        {
                            row.ErrorMessage = String.Format("SeiveSize {0} is not defined for record {1}", row.TYPE, row.SRNO);
                            tempflg          = true;
                            break;
                        }
                        var stonePcs = row.DIAPCSDETAIL[i];
                        var stoneWt  = row.DIAWTDETAIL[i];

                        var price = CostingRate.CostingItems.Single(x => x.ProductCategory == ProductCategory.Stone &&
                                                                    x.Particulars == row.STONETYPE && x.ConfigurationValue == svSize);
                        var stoneValue = Math.Max((stoneWt / stoneWt) * price.Amount, 0);
                        metailDetail.Add(new StoneMetaDetail {
                            StoneSieveSz = svSize, StonePcs = stonePcs, StoneWt = stoneWt, StoneValue = stoneValue
                        });
                    }
                    if (tempflg)
                    {
                        continue;
                    }
                    var stoneChart = new StoneChart {
                        StoneMetaDetailList = metailDetail
                    };

                    var cost = CostingRate.CertificateRate.Items.SingleOrDefault(x => x.RangeMinValue <= diawt && x.RangeMaxValue >= diawt);
                    if (cost == null) // for out of scope
                    {
                        item.CertificateCharges = Math.Max(CostingRate.CertificateRate.Items.Max(x => x.Amount) * diawt, 0);
                    }
                    else if (cost.RangeMinValue == CostingRate.CertificateRate.Items.Min(x => x.RangeMinValue))
                    {
                        item.CertificateCharges = Math.Max(cost.Amount, 0);
                    }
                    else
                    {
                        item.CertificateCharges = Math.Max(cost.Amount * diawt, 0);
                    }

                    item.StoneDetail = new StoneDetail
                    {
                        StoneType      = row.STONETYPE,
                        StoneNetWt     = row.TOTALDIAWT,
                        TotalStonePcs  = row.TOTALDIAPCS,
                        StoneChart     = stoneChart,
                        StoneNetAmount = metailDetail.Any() ? Math.Max(metailDetail.Sum(x => x.StoneValue) * row.TOTALDIAWT, 0) : 0
                    };
                }
                item.StampingCharges = Math.Max(row.STAMP, 0);

                var totalPrice = Math.Max(item.StoneDetail.StoneNetAmount + item.CertificateCharges
                                          + item.MetalDetail.MetalNetAmount + labourCharges + item.StampingCharges
                                          , 0);

                var jewelTran = new JewelTransaction
                {
                    CostingDetail   = _costingDetails,
                    TransactionType = TransactionType.PurchaseTransaction,
                    KT = row.KT,
                    CertificateNumber = row.CERTNO,
                    DesignCode        = row.DESIGNNO,
                    StonePcs          = row.HasDiamond ? row.TOTALDIAPCS : 0,
                    StoneWeight       = row.HasDiamond ? row.TOTALDIAWT : 0,
                    //CStonePcs = HasStoneMode && IsColorStoneMode ? Convert.ToInt32(row.GetCellValue(_columncstonepcs)) : 0,
                    //CStoneWeight = HasStoneMode && IsColorStoneMode ? Convert.ToDecimal(row.GetCellValue(_columncstonewt)) : 0,
                    JewelType         = row.TYPE,
                    JewelItemCategory = MetalType,
                    MetalWeight       = netMetalWt,
                    //MetalColor = row.MetalColor,
                    TotalWeight = row.GRWT,
                    Properties  = new TransactionDetails {
                        ItemDetails = item
                    },
                    TransactionPartyRef = ((Supplier)cboCustomer.SelectedItem).SupplierCode,
                    TransactionDate     = dtCosting.Value,
                    TotalAmount         = totalPrice
                };
                PurchaseTransactionItems.Add(jewelTran);
            }

            if (allRows.Items.Any(x => !x.IsValid))
            {
                txtUploadError.Height = 55;
                foreach (var row in allRows.Items.Where(x => x.IsValid == false))
                {
                    txtUploadError.Text = txtUploadError.Text + row.ErrorMessage + Environment.NewLine;
                }
            }
            else
            {
                txtUploadError.Height = 1;
            }

            //Bind to grid
            BindToGrid();
        }
Example #7
0
        void OnbtnSaveClick(object sender, EventArgs e)
        {
            if (IsValid == false)
            {
                MessageBox.Show(AllErrors.ErrorMessageString(), Constants.ALERTMESSAGEHEADER);
                return;
            }
            if (TotalRows == 0)
            {
                MessageBox.Show(Resources.frmSalesOrder_OnbtnSaveClick_Please_select_jewels_, Constants.ALERTMESSAGEHEADER);
                return;
            }

            var request = new SalesTransactionRequest();
            var lookup  = new TransactionLookup
            {
                ContactName         = txtContactName.Text,
                Remarks             = txtRemarks.Text,
                TransactionPartyRef = ((Customer)cboCustomer.SelectedItem).CustomersCode,
                TransactionType     = TransactionType.SalesInTransaction
            };
            var tranLookupKey = Guid.NewGuid();

            foreach (DataGridViewRow row in dgvJewel.Rows)
            {
                var chk = (DataGridViewCheckBoxCell)row.Cells[_columnselectchk.ToLowerCaseColumnName()];
                if ((bool)chk.Value)
                {
                    var trno      = (int)row.Cells[_columnselectchk.ToLowerCaseColumnName()].Tag;
                    var jewelTran = _transactionServices.GetJewelTransactionsById(trno);
                    var tran      = new JewelTransaction
                    {
                        JewelTransactionRowId = tranLookupKey,
                        TransactionType       = TransactionType.SalesInTransaction,
                        CostingDetail         = jewelTran.CostingDetail,
                        CertificateNumber     = jewelTran.CertificateNumber,
                        CStonePcs             = jewelTran.CStonePcs,
                        CStoneWeight          = jewelTran.CStoneWeight,
                        DesignCode            = jewelTran.DesignCode,
                        JewelNumber           = jewelTran.JewelNumber,
                        JewelType             = jewelTran.JewelType,
                        KT                  = jewelTran.KT,
                        MetalColor          = jewelTran.MetalColor,
                        JewelItemCategory   = jewelTran.JewelItemCategory,
                        MetalWeight         = jewelTran.MetalWeight,
                        Properties          = jewelTran.Properties,
                        StonePcs            = jewelTran.StonePcs,
                        StoneWeight         = jewelTran.StoneWeight,
                        TotalAmount         = jewelTran.TotalAmount,
                        TotalWeight         = jewelTran.TotalWeight,
                        TransactionDate     = dtSalesDt.Value,
                        TransactionPartyRef = ((Customer)cboCustomer.SelectedItem).CustomersCode,
                    };

                    lookup.JewelTransactions.Add(tran);
                }
            }

            request.TransactionLookup = lookup;

            var invoice = new TransactionInvoices
            {
                InvoiceDate = dtSalesDt.Value,
                NetAmount   = Convert.ToDecimal(txtTotalAmount.Text),
                PaymentTerm = cboPaymentTerm.SelectedText,
                Remarks     = txtRemarks.Text
            };

            var customer = cboCustomer.SelectedValue as Customer;

            invoice.TransactionPartyRef = customer.CustomersCode;
            request.TransactionInvoice  = invoice;

            var response = _transactionServices.CreateSalesTransaction(request);

            if (response.IsValid == false)
            {
                MessageBox.Show(response.AllErrors.ErrorMessageString(), Constants.ALERTMESSAGEHEADER);
                return;
            }

            btnGo.Enabled      = false;
            btnSave.Enabled    = false;
            btnInvoice.Enabled = true;

            ShowManagedModalForm <frmCostingConfirmation>(Owner as frmMDIParent, response.TransactionLookup);
        }