Exemplo n.º 1
0
    private bool CheckIfCanSale(int productId, int quantity)
    {
        Deposit dep = new Deposit();
        User user = new User();
        CompanyManager cManager = new CompanyManager(this);
        InventoryManager iManager = new InventoryManager(this);

        //
        // Verifies wich deposit are the active deposit to this Company / User
        //
        user.UserId = (Page as InfoControl.Web.UI.DataPage).User.Identity.UserId;
        dep = cManager.GetCurrentDeposit(user.UserId, Company.CompanyId);

        //
        // Get the data of the respectively inventory
        //
        var prod = iManager.GetProductInventory(Company.CompanyId, productId, Deposit.DepositId);

        //
        // Compare the Inventory Quantity wich the Sale quantity, if the Sale Quantity are 
        // less than the Inventory, the Can Sale flag will be true, else the sale will be canceled
        //
        if (quantity <= prod.Quantity) return true;
        else return false;


    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        //Manager
        InventoryManager iManager = new InventoryManager(this);
        CompanyManager cManager = new CompanyManager(this);

        //these Objects are Initialized in loop because its necessary provide the Insert with new objects
        Inventory inv;
        InventoryMoviment mov;
        InventoryHistory his;

        DataTable productList = (DataTable)Page.ViewState["ProductList"];
        Inventory inventoryData = new Inventory();
        Product prod = new Product();
        Deposit dep = new Deposit();

        if (productList.Rows.Count <= 1)
        {
            ShowError(Resources.Exception.SelectProduct);
            return;
        }

        productList.Rows.RemoveAt(0);

        dep = cManager.GetCurrentDeposit(User.Identity.UserId, Company.CompanyId);
        try
        {
            foreach (DataRow row in productList.Rows)
            {
                inv = new Inventory();

                if (Deposit != null)
                    inv.DepositId = dep.DepositId;

                inv.CompanyId = Company.CompanyId;
                inv.ProductId = Convert.ToInt16(row["ProductId"]);
                inv.Quantity = Convert.ToInt16(row["Quantity"]);

                mov = new InventoryMoviment();
                mov.CompanyId = inv.CompanyId;
                mov.DepositId = inv.DepositId;
                mov.DepositDestinationId = Convert.ToInt16(cboDeposit.SelectedValue);
                mov.ModifiedDate = DateTime.Now;
                mov.ProductId = inv.ProductId;
                mov.Quantity = inv.Quantity;
                mov.CompanyDestinationId = Convert.ToInt16(cboCompany.SelectedValue);
                mov.Refused = false;

                if (Deposit != null)
                {
                    iManager.InsertStockMovement(inv, mov, Convert.ToInt32(row["Quantity"]), User.Identity.UserId);
                }
                else
                {
                    ShowError("O usuário não está vinculado a nenhum inventário!");
                    return;
                }

                Session["CompanySender"] = Company.CompanyId;
            }
        }
        catch (InvalidOperationException ex)
        {
            ShowError(Resources.Exception.InvalidStockQuantity);
            return;
        }
        InSuccess();
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        DataTable productList = (DataTable)Page.ViewState["ProductList"];
        Inventory inv = new Inventory();
        Product prod = new Product();
        Deposit dep = new Deposit();
        InventoryMoviment mov = new InventoryMoviment();
        InventoryManager iManager = new InventoryManager(this);
        CompanyManager cManager = new CompanyManager(this);

        if (productList.Rows.Count < 1)
        {
            ShowError("Deve haver pelo menos uma linha com dados do produto.");
            return;
        }
        foreach (DataRow row in productList.Rows)
        {
            if (row.Table.Rows.IndexOf(row) != 0)
            {
                if (!CheckIfCanSale(Convert.ToInt16(row["ProductId"]), Convert.ToInt16(row["Quantity"])))
                {
                    ShowError("O estoque da linha <b>" + Convert.ToInt16((row.Table.Rows.IndexOf(row)) + 1).ToString() + "</b> não pode ficar negativo<br />");
                    return;
                }
            }
        }




        productList.Rows.RemoveAt(0);

        dep = cManager.GetCurrentDeposit(User.Identity.UserId, Company.CompanyId);

        foreach (DataRow row in productList.Rows)
        {
            inv.CompanyId = Company.CompanyId;
            inv.DepositId = dep.DepositId;
            inv.ProductId = Convert.ToInt16(row["ProductId"]);
            inv.Quantity = Convert.ToInt16(row["Quantity"]);

            mov.CompanyId = inv.CompanyId;
            mov.DepositId = inv.DepositId;
            mov.DepositDestinationId = Convert.ToInt16(cboDeposit.SelectedValue);
            mov.ModifiedDate = DateTime.Now;
            mov.ProductId = inv.ProductId;
            mov.Quantity = inv.Quantity;

            iManager.InventoryDrop(inv, 0, (int)DropType.Transfer, null);
            iManager.InsertStockMovement(inv, mov, inv.Quantity, User.Identity.UserId);
        }
        InSuccess();
    }