private void cbUnits_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                nudItemQuantity.Value = 0;
                if (cbItems.SelectedIndex != -1)
                {
                    // set max quantity
                    // get avalible quantity in warehouse
                    string unitName = cbUnits.Text;
                    Unit   unit     = (from u in ent.Units
                                       where u.Name == unitName
                                       select u).FirstOrDefault();

                    string     warehouseName = cbWharehouses.Text;
                    Wharehouse warehouse     = (from w in ent.Wharehouses
                                                where w.name == warehouseName
                                                select w).FirstOrDefault();

                    int            orderNum = int.Parse(cbSupplyingOrders.Text);
                    SupplyingOrder order    = (from sOrder in ent.SupplyingOrders
                                               where sOrder.number == orderNum
                                               select sOrder).FirstOrDefault();

                    string itemName = cbItems.Text;
                    Item   item     = (from i in ent.Items
                                       where i.Name == itemName
                                       select i).FirstOrDefault();

                    WarehouseItem warehouseItem =
                        (from wi in ent.WarehouseItems
                         where wi.warehouse_id == warehouse.ID &&
                         wi.order_id == order.number &&
                         wi.item_id == item.Code
                         select wi
                        ).FirstOrDefault();

                    nudItemQuantity.Maximum = warehouseItem.quantity / unit.quantity;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void btnAddItem_Click(object sender, EventArgs e)
        {
            try
            {
                string warehouseName, supplyingOrderNumber, itemName, unitName;
                int    quantity           = (int)nudItemQuantity.Value,
                       paymentOrderNumber = int.Parse(txtOrderNum.Text);
                warehouseName        = cbWharehouses.Text;
                supplyingOrderNumber = cbSupplyingOrders.Text;
                itemName             = cbItems.Text;
                unitName             = cbUnits.Text;
                if (!string.IsNullOrEmpty(warehouseName) && !string.IsNullOrEmpty(warehouseName) &&
                    !string.IsNullOrEmpty(warehouseName) && !string.IsNullOrEmpty(warehouseName) &&
                    quantity > 0)
                {
                    int supplyingOrderId = int.Parse(supplyingOrderNumber);
                    // prepare data
                    Item item = (from i in ent.Items
                                 where i.Name == itemName
                                 select i).FirstOrDefault();

                    Unit unit = (from u in ent.Units
                                 where u.Name == unitName
                                 select u).FirstOrDefault();

                    Wharehouse warehouse = (from w in ent.Wharehouses
                                            where w.name == warehouseName
                                            select w).FirstOrDefault();

                    SupplyingOrder order = (from sOrder in ent.SupplyingOrders
                                            where sOrder.number == supplyingOrderId
                                            select sOrder).FirstOrDefault();

                    WarehouseItem warehouseItem =
                        (from wi in ent.WarehouseItems
                         where wi.warehouse_id == warehouse.ID &&
                         wi.order_id == order.number &&
                         wi.item_id == item.Code
                         select wi
                        ).FirstOrDefault();

                    // check if item exist in current payment order
                    Inovice_Items inovice_Item = (from i in ent.Inovice_Items
                                                  where i.product_id == item.Code &&
                                                  i.order_number == paymentOrderNumber &&
                                                  i.supplyingOrder_id == order.number
                                                  select i).FirstOrDefault();
                    if (inovice_Item == null)
                    {
                        quantity *= unit.quantity;
                        // step 1: insert into inovice_items(order_number, item_number,
                        // supplyOrder_number, quantity)
                        inovice_Item = new Inovice_Items();
                        inovice_Item.order_number      = paymentOrderNumber;
                        inovice_Item.product_id        = item.Code;
                        inovice_Item.supplyingOrder_id = order.number;
                        inovice_Item.quantity          = quantity;
                        ent.Inovice_Items.Add(inovice_Item);

                        // update item, warehouse_items
                        // step 2: update item_quantity -= order_quantity
                        item.quantity -= quantity;
                        // step 3: update Warehouse_item_quantity -= order_quantity
                        warehouseItem.quantity -= quantity;
                        // insert into transaction sell = 2
                        // insert into transaction(2, supOrderId, itemId, quantity,
                        // warehouseId, WarehouseItemsQuantity, itemQuantity, date, paymentOrderId)
                        Transaction sellTransaction = new Transaction();
                        sellTransaction.type_id       = 2;
                        sellTransaction.order_id      = order.number;
                        sellTransaction.item_id       = item.Code;
                        sellTransaction.quantity      = quantity;
                        sellTransaction.wharehouse_id = warehouse.ID;
                        sellTransaction.total_quantity_for_item_in_wharehouse    = (int)item.quantity;
                        sellTransaction.total_quantity_for_product_in_wharehouse = (int)warehouseItem.quantity;
                        sellTransaction.date           = DateTime.Now;
                        sellTransaction.paymentOrderId = paymentOrderNumber;
                        ent.Transactions.Add(sellTransaction);
                        ent.SaveChanges();
                        MessageBox.Show("Item Added!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        PaymentOrderInfo_Load(sender, e);
                    }
                    else
                    {
                        MessageBox.Show("Item already exist in this order!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("All Data Required!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 3
0
        bool DeleteItemFromOrder(object sender, EventArgs e)
        {
            // delete item from order
            // get item id
            Item item = (from ite in ent.Items
                         where ite.Name == cbItems.Text
                         select ite).FirstOrDefault();
            // get warehouse id
            Wharehouse wharehouse = (from warehouse in ent.Wharehouses
                                     where warehouse.name == txtWarehouse.Text
                                     select warehouse).FirstOrDefault();

            // get quantity in supplyingOrderItems
            SupplyingOrder_Items order_Items = (from so in ent.SupplyingOrder_Items
                                                where so.order_number == orderNum &&
                                                so.item_code == item.Code
                                                select so).FirstOrDefault();

            // step 1: check if item still in warehouse with initial quantity
            // get quantity in warehouse
            WarehouseItem warehouseItem = (from warehouse in ent.WarehouseItems
                                           where warehouse.warehouse_id == wharehouse.ID &&
                                           warehouse.order_id == order_Items.order_number &&
                                           warehouse.item_id == item.Code
                                           select warehouse
                                           ).FirstOrDefault();

            // get transaction buy item
            Transaction transaction = (from tr in ent.Transactions
                                       where tr.type_id == 1 &&
                                       tr.order_id == orderNum &&
                                       tr.wharehouse_id == wharehouse.ID &&
                                       tr.item_id == item.Code
                                       select tr
                                       ).FirstOrDefault();

            // compare quantity
            if (order_Items.quantity == warehouseItem.quantity)
            {
                // step 2: in items: set quantity -= old value
                item.quantity -= order_Items.quantity;

                // step 3: in warehouse items: delete
                ent.WarehouseItems.Remove(warehouseItem);

                // step 4: in supplying order items: delete
                ent.SupplyingOrder_Items.Remove(order_Items);

                // step 5: in Transactions: delete
                ent.Transactions.Remove(transaction);

                ent.SaveChanges();


                return(true);
            }
            else
            {
                MessageBox.Show("Can't edit/delete this Item Because it was moved or sold", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
        }
Exemplo n.º 4
0
        void InsertItemInOrder(object sender, EventArgs e)
        {
            try
            {
                selectedItemName       = cbItems.Text;
                unit                   = cbUnits.Text;
                itemQuantity           = (int)nudItemQuantity.Value;
                date                   = dtpItemProductionDate.Value;
                itemExpirationDuration = (int)nudExpirationDuration.Value;

                if (!string.IsNullOrEmpty(selectedItemName) && !string.IsNullOrEmpty(unit) &&
                    itemQuantity > 0 && itemExpirationDuration > 0)
                {
                    int unitNumber = (from u in ent.Units
                                      where u.Name == unit
                                      select u.quantity).FirstOrDefault();
                    // select item
                    Item selectedItem = (from item in ent.Items
                                         where item.Name == selectedItemName
                                         select item).FirstOrDefault();
                    // select warehouse_id
                    int warehouseId = (from warehouse in ent.Wharehouses
                                       where warehouse.name == txtWarehouse.Text
                                       select warehouse.ID).FirstOrDefault();
                    // order number
                    int orderNumber = int.Parse(txtOrderNum.Text);

                    // calculate expiration date
                    DateTime expirationDate = date.AddDays(itemExpirationDuration);

                    // check if item exist in current order, show error"Item already exists".
                    SupplyingOrder_Items exists = (from order_items in ent.SupplyingOrder_Items
                                                   where order_items.item_code == selectedItem.Code &&
                                                   order_items.order_number == orderNumber
                                                   select order_items).FirstOrDefault();
                    if (exists != null)
                    {
                        MessageBox.Show("Item already exists in current order!");
                    }
                    else
                    {
                        // add to supply order item
                        SupplyingOrder_Items order_Items = new SupplyingOrder_Items();
                        order_Items.item_code       = selectedItem.Code;
                        order_Items.order_number    = orderNumber;
                        order_Items.quantity        = itemQuantity * unitNumber;
                        order_Items.Production_Date = date;
                        order_Items.expiration_date = expirationDate;
                        //order_Items.Item = selectedItem;

                        ent.SupplyingOrder_Items.Add(order_Items);
                        ent.SaveChanges();

                        // add to warehouse items
                        WarehouseItem warehouseItem = new WarehouseItem();
                        warehouseItem.item_id      = selectedItem.Code;
                        warehouseItem.order_id     = orderNumber;
                        warehouseItem.warehouse_id = warehouseId;
                        warehouseItem.quantity     = itemQuantity * unitNumber;

                        ent.WarehouseItems.Add(warehouseItem);
                        ent.SaveChanges();
                        // update item quantity
                        selectedItem.quantity += (itemQuantity * unitNumber);
                        ent.SaveChanges();

                        // add to transaction, buy = 1
                        Transaction buyItem = new Transaction();
                        buyItem.date          = DateTime.Now;
                        buyItem.type_id       = 1;
                        buyItem.order_id      = orderNumber;
                        buyItem.item_id       = selectedItem.Code;
                        buyItem.wharehouse_id = warehouseId;
                        buyItem.quantity      = itemQuantity * unitNumber;
                        // total item quantity in all warehouses
                        buyItem.total_quantity_for_item_in_wharehouse = (int)selectedItem.quantity;
                        // total item quantity in current warehouse
                        buyItem.total_quantity_for_product_in_wharehouse = itemQuantity * unitNumber;
                        ent.Transactions.Add(buyItem);
                        ent.SaveChanges();

                        MessageBox.Show("Item added to Order!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        SupplyOrderInfo_Load(sender, e);
                    }
                }
                else
                {
                    MessageBox.Show("Enter all data!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }