Beispiel #1
0
 /// <summary>Creates a new order with all the items currently highlighted as a new pending order.</summary>
 private void butCreateOrders_Click(object sender,EventArgs e)
 {
     //Not visible in IsSelectMode
     if(gridMain.SelectedIndices.Length==0){
         MsgBox.Show(this,"Please select supplies, first.");
         return;
     }
     //they are not ordered by supplier, so we need to keep track of a local list of orders
     List<SupplyOrder> listSupplyOrders=new List<SupplyOrder>();
     SupplyOrder supplyOrder=null;
     for(int i=0;i<gridMain.SelectedIndices.Length;i++){
         supplyOrder=listSupplyOrders.FirstOrDefault(x=>x.SupplierNum==_listSupplies[gridMain.SelectedIndices[i]].SupplierNum);
         if(supplyOrder==null){
             supplyOrder=new SupplyOrder();
             supplyOrder.SupplierNum=_listSupplies[gridMain.SelectedIndices[i]].SupplierNum;
             supplyOrder.IsNew=true;
             supplyOrder.DatePlaced=new DateTime(2500,1,1); //date used for new 'pending' orders.
             supplyOrder.Note="";
             supplyOrder.UserNum=Security.CurUser.UserNum;
             supplyOrder.SupplyOrderNum=SupplyOrders.Insert(supplyOrder);
             listSupplyOrders.Add(supplyOrder);
         }
         SupplyOrderItem supplyOrderItem=new SupplyOrderItem();
         supplyOrderItem.SupplyNum=_listSupplies[gridMain.SelectedIndices[i]].SupplyNum;
         supplyOrderItem.Qty=_listSupplies[gridMain.SelectedIndices[i]].OrderQty;
         supplyOrderItem.Price=_listSupplies[gridMain.SelectedIndices[i]].Price;
         supplyOrderItem.SupplyOrderNum=supplyOrder.SupplyOrderNum;
         SupplyOrderItems.Insert(supplyOrderItem);
     }
     for(int i=0;i<listSupplyOrders.Count;i++){
         SupplyOrders.UpdateOrderPrice(listSupplyOrders[i].SupplyOrderNum);
     }
     MessageBox.Show(Lan.g(this,"Done. Added ")+listSupplyOrders.Count.ToString()+Lan.g(this," orders.  Manage orders from Orders window"));
     DialogResult=DialogResult.OK;
 }
Beispiel #2
0
        ///<summary>Save changes to orderItems based on input in grid.</summary>
        //private bool saveChangesHelper() {
        //	if(gridItems.Rows.Count==0) {
        //		return true;
        //	}
        //	//validate ------------------------------------------------------------------------
        //	for(int i=0;i<gridItems.Rows.Count;i++) {
        //		int qtyThisRow=0;
        //		double priceThisRow=0;
        //		if(gridItems.Rows[i].Cells[2].Text!=""){
        //			try{
        //					qtyThisRow=Int32.Parse(gridItems.Rows[i].Cells[2].Text);
        //			}
        //			catch{
        //				MsgBox.Show(this,"Please fix errors in Qty column first.");
        //				return false;
        //			}
        //		}
        //		if(gridItems.Rows[i].Cells[3].Text!=""){
        //			try{
        //					priceThisRow=double.Parse(gridItems.Rows[i].Cells[3].Text);
        //			}
        //			catch{
        //				MsgBox.Show(this,"Please fix errors in Price column first.");
        //				return false;
        //			}
        //		}
        //	}
        //	//Save changes---------------------------------------------------------------------------
        //	//List<SupplyOrderItem> listOrderItems=OpenDentBusiness.Crud.SupplyOrderItemCrud.TableToList(tableOrderItems);//turn table into list of supplyOrderItem objects
        //	for(int i=0;i<gridItems.Rows.Count;i++) {
        //		int qtyThisRow=PIn.Int(gridItems.Rows[i].Cells[2].Text);//already validated
        //		double priceThisRow=PIn.Double(gridItems.Rows[i].Cells[3].Text);//already validated
        //		if(qtyThisRow==PIn.Int(tableOrderItems.Rows[i]["Qty"].ToString())
        //			&& priceThisRow==PIn.Double(tableOrderItems.Rows[i]["Price"].ToString()))
        //		{
        //			continue;//no changes to order item.
        //		}
        //		SupplyOrderItem soi=new SupplyOrderItem();
        //		soi.SupplyNum=PIn.Long(tableOrderItems.Rows[i]["SupplyNum"].ToString());
        //		soi.SupplyOrderItemNum=PIn.Long(tableOrderItems.Rows[i]["SupplyOrderItemNum"].ToString());
        //		soi.SupplyOrderNum=ListOrders[gridOrders.GetSelectedIndex()].SupplyOrderNum;
        //		soi.Qty=qtyThisRow;
        //		soi.Price=priceThisRow;
        //		SupplyOrderItems.Update(soi);
        //	}//end gridItems
        //	SupplyOrders.UpdateOrderPrice(ListOrders[gridOrders.GetSelectedIndex()].SupplyOrderNum);
        //	int selectedIndex=gridOrders.GetSelectedIndex();
        //	ListOrdersAll = SupplyOrders.GetAll();//update new totals
        //	FillGridOrders();
        //	if(selectedIndex!=-1) {
        //		gridOrders.SetSelected(selectedIndex,true);
        //	}
        //	return true;
        //}

        private void gridItems_CellLeave(object sender, ODGridClickEventArgs e)
        {
            //no need to check which cell was edited, just reprocess both cells
            int qtyNew = 0;          //default value.

            try {
                qtyNew = PIn.Int(gridItems.Rows[e.Row].Cells[2].Text);              //0 if not valid input
            }
            catch { }
            double          priceNew = PIn.Double(gridItems.Rows[e.Row].Cells[3].Text); //0 if not valid input
            SupplyOrderItem suppOI   = SupplyOrderItems.CreateObject(PIn.Long(_tableOrderItems.Rows[e.Row]["SupplyOrderItemNum"].ToString()));

            suppOI.Qty   = qtyNew;
            suppOI.Price = priceNew;
            SupplyOrderItems.Update(suppOI);
            SupplyOrders.UpdateOrderPrice(suppOI.SupplyOrderNum);
            gridItems.Rows[e.Row].Cells[2].Text = qtyNew.ToString();                 //to standardize formatting.  They probably didn't type .00
            gridItems.Rows[e.Row].Cells[3].Text = priceNew.ToString("n");            //to standardize formatting.  They probably didn't type .00
            gridItems.Rows[e.Row].Cells[4].Text = (qtyNew * priceNew).ToString("n"); //to standardize formatting.  They probably didn't type .00
            gridItems.Invalidate();
            int si = gridOrders.GetSelectedIndex();

            _listOrdersAll = SupplyOrders.GetAll();
            FillGridOrders();
            gridOrders.SetSelected(si, true);
        }
        private void gridItems_CellLeave(object sender, ODGridClickEventArgs e)
        {
            int qtyOld = PIn.Int(_tableOrderItems.Rows[e.Row]["Qty"].ToString(), false);
            int qtyNew = 0;

            try {
                qtyNew = PIn.Int(gridItems.ListGridRows[e.Row].Cells[2].Text);              //0 if not valid input
            }
            catch { }
            double priceOld = PIn.Double(_tableOrderItems.Rows[e.Row]["Price"].ToString());
            double priceNew = PIn.Double(gridItems.ListGridRows[e.Row].Cells[3].Text);          //0 if not valid input

            //if(e.Col==2){//Qty
            //gridItems.ListGridRows[e.Row].Cells[2].Text=qtyNew.ToString();//Fix the cell formatting
            //if(qtyOld==qtyNew){
            //don't go to db.
            //gridItems.Invalidate();
            //return;
            //}
            //}
            //if(e.Col==3){//price
            //gridItems.ListGridRows[e.Row].Cells[3].Text=priceNew.ToString("n");//Fix the cell formatting
            //if(priceOld==priceNew){
            //don't go to db.
            //gridItems.Invalidate();
            //return;
            //}
            //}
            //gridItems.ListGridRows[e.Row].Cells[4].Text=(qtyNew*priceNew).ToString("n");
            //gridItems.Invalidate();
            if (qtyOld == qtyNew && priceOld == priceNew)
            {
                FillGridOrderItem(false);                //no refresh
            }
            else
            {
                SupplyOrderItem supplyOrderItem = SupplyOrderItems.SelectOne(PIn.Long(_tableOrderItems.Rows[e.Row]["SupplyOrderItemNum"].ToString()));
                supplyOrderItem.Qty   = qtyNew;
                supplyOrderItem.Price = priceNew;
                SupplyOrderItems.Update(supplyOrderItem);
                SupplyOrder updatedSupplyOrderItem = SupplyOrders.UpdateOrderPrice(supplyOrderItem.SupplyOrderNum);              //this might be an expensive query that we could avoid
                FillGridOrderItem();
                int index = _listSupplyOrders.FindIndex(x => x.SupplyOrderNum == supplyOrderItem.SupplyOrderNum);
                if (index < 0)               //Just in case, shouldn't happen
                {
                    FillGridOrders();
                    return;
                }
                _listSupplyOrders[index] = updatedSupplyOrderItem;
                gridOrders.SelectedGridRows[0].Cells[2].Text = updatedSupplyOrderItem.AmountTotal.ToString("c2");
                gridOrders.Invalidate();
            }
        }
        private void UpdatePriceAndRefresh()
        {
            SupplyOrder gridSelect = gridOrders.SelectedTag <SupplyOrder>();

            SupplyOrders.UpdateOrderPrice(_listSupplyOrders[gridOrders.GetSelectedIndex()].SupplyOrderNum);
            FillGridOrders();
            for (int i = 0; i < gridOrders.ListGridRows.Count; i++)
            {
                if (gridSelect != null && ((SupplyOrder)gridOrders.ListGridRows[i].Tag).SupplyOrderNum == gridSelect.SupplyOrderNum)
                {
                    gridOrders.SetSelected(i, true);
                }
            }
            FillGridOrderItem();
        }
Beispiel #5
0
 /// <summary>Creates a new order with all the items that have a Qty entered as a new pending order.</summary>
 private void butCreateOrdersQty_Click(object sender, EventArgs e)
 {
     //Not visible in IsSelectMode
     List<SupplyOrder> listSupplyOrders=new List<SupplyOrder>();
     SupplyOrder supplyOrder=null;
     for(int i=0;i<_listSupplies.Count;i++){
         if(_listSupplies[i].OrderQty==0){
             continue;
         }
         supplyOrder=listSupplyOrders.FirstOrDefault(x=>x.SupplierNum==_listSupplies[i].SupplierNum);
         if(supplyOrder==null){
             supplyOrder=new SupplyOrder();
             supplyOrder.SupplierNum=_listSupplies[i].SupplierNum;
             supplyOrder.IsNew=true;
             supplyOrder.DatePlaced=new DateTime(2500,1,1); //date used for new 'pending' orders.
             supplyOrder.Note="";
             supplyOrder.UserNum=Security.CurUser.UserNum;
             supplyOrder.SupplyOrderNum=SupplyOrders.Insert(supplyOrder);
             listSupplyOrders.Add(supplyOrder);
         }
         SupplyOrderItem supplyOrderItem=new SupplyOrderItem();
         supplyOrderItem.SupplyNum=_listSupplies[i].SupplyNum;
         supplyOrderItem.Qty=_listSupplies[i].OrderQty;
         supplyOrderItem.Price=_listSupplies[i].Price;
         supplyOrderItem.SupplyOrderNum=supplyOrder.SupplyOrderNum;
         SupplyOrderItems.Insert(supplyOrderItem);
         //Supply has been added to order.  Now, zero out qty on supply.
         _listSupplies[i].OrderQty=0;
         Supplies.Update(_listSupplies[i]);
     }
     if(listSupplyOrders.Count==0){
         MsgBox.Show("Please enter quantities for supplies first.");
         return;
     }
     for(int i=0;i<listSupplyOrders.Count;i++){
         SupplyOrders.UpdateOrderPrice(listSupplyOrders[i].SupplyOrderNum);
     }
     MessageBox.Show(Lan.g(this,"Done. Added ")+listSupplyOrders.Count.ToString()+Lan.g(this," orders.  Manage orders from Orders window"));
     DialogResult=DialogResult.OK;
 }