/// <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; }
///<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(); }
/// <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; }