Пример #1
0
        public void Pedido()
        {
            if (Id <= 0)
            {
                return;
            }

            var itens = new Model.PedidoItem().FindAll().Where("pedido", Id).WhereFalse("excluir").Get();

            foreach (var data in itens)
            {
                var item = GetItem(data.ITEM);
                Amount = Validation.ConvertToDouble(data.QUANTIDADE);

                _mItemEstoque.SetUsuario(User).SetQuantidade(Amount).SetTipo(Action).SetLocal(Local).SetObs(Obs)
                .SetIdPedido(Id).SetItem(item).Save(_mItemEstoque);

                if (data.ATRIBUTO == "0")
                {
                    continue;
                }

                string attrId    = data.ATRIBUTO;
                var    upEstoque = new ItemEstoque().FindAll().Where("id", attrId).FirstOrDefault <ItemEstoque>();
                if (upEstoque == null)
                {
                    continue;
                }

                switch (Action)
                {
                case "A":
                {
                    upEstoque.Estoque += Amount;
                    if (Local != "Compras" || Local != "Devoluções")
                    {
                        upEstoque.Vendido -= Validation.ConvertToInt32(data.QUANTIDADE);
                    }
                    break;
                }

                case "R":
                {
                    upEstoque.Estoque -= Amount;
                    if (Local != "Remessas" || Local != "Compras" || Local != "Devoluções")
                    {
                        upEstoque.Vendido += Validation.ConvertToInt32(data.QUANTIDADE);
                    }

                    if (Local == "Devoluções")
                    {
                        upEstoque.Vendido -= Validation.ConvertToInt32(data.QUANTIDADE);
                    }
                    break;
                }
                }

                upEstoque.Save(upEstoque);
            }
        }
Пример #2
0
        public IEnumerable <dynamic> GetDataTable()
        {
            var model = new Model.PedidoItem().Query();

            model.Where("totalcompra", "=", 0);
            model.Where("valorcompra", ">", 0);
            model.Where("excluir", "=", 0);

            return(model.Get());
        }
Пример #3
0
        public IEnumerable <dynamic> GetDataItens(int idPedido)
        {
            var itens = new Model.PedidoItem().Query()
                        .LeftJoin("item", "item.id", "pedido_item.item")
                        .Select("pedido_item.id", "pedido_item.quantidade", "pedido_item.xprod", "pedido_item.medida",
                                "pedido_item.valorvenda", "pedido_item.desconto", "pedido_item.frete", "pedido_item.ncm",
                                "pedido_item.cfop", "pedido_item.origem", "pedido_item.icms", "pedido_item.ipi", "pedido_item.pis",
                                "pedido_item.cofins", "pedido_item.federal", "pedido_item.estadual", "pedido_item.total",
                                "pedido_item.status", "item.nome", "item.referencia", "pedido_item.item")
                        .Where("pedido_item.pedido", idPedido)
                        .Where("pedido_item.excluir", 0);

            //.Where("pedido_item.tipo", "Produtos");

            return(itens.Get());
        }
Пример #4
0
 public void GetId(int id)
 {
     //_pedidoItem = _pedidoItem.Query().Where("Id", id).FirstOrDefault<Model.PedidoItem>();
     _pedidoItem = _pedidoItem.FindById(id).FirstOrDefault <Model.PedidoItem>();
 }
Пример #5
0
        private void LoadDados()
        {
            itemPedido = new Model.PedidoItem().Query().Where("pedido_item.id", idPdt).FirstOrDefault <Model.PedidoItem>();
            if (itemPedido != null)
            {
                item.Text       = nrItem.ToString();
                referencia.Text = itemPedido?.CProd ?? "";
                codebarras.Text = itemPedido?.CEan ?? "";
                descricao.Text  = itemPedido?.xProd ?? "";
                origem.Text     = itemPedido?.Origem ?? "";
                ncm.Text        = itemPedido?.Ncm ?? "";
                cest.Text       = itemPedido?.Cest ?? "";
                cfop.Text       = itemPedido?.Cfop ?? "";
                quantidade.Text = Validation.FormatMedidas(itemPedido.Medida, Validation.ConvertToDouble(itemPedido.Quantidade));

                valorUnitario.Text = Validation.FormatPrice(itemPedido.ValorVenda);
                valorDesconto.Text = Validation.FormatPrice(itemPedido.DescontoItem);
                valorFrete.Text    = Validation.FormatPrice(itemPedido.Frete);
                valorSeguro.Text   = Validation.FormatPrice(itemPedido.Seguro);
                vlrDespesa.Text    = Validation.FormatPrice(itemPedido.Despesa);
                valorTotal.Text    = Validation.FormatPrice(itemPedido.Total);

                Icms.SelectedValue = itemPedido.Icms != null ? itemPedido.Icms : "";
                icmsaliq.Text      = Validation.FormatPrice(itemPedido.IcmsAliq);
                icmsBase.Text      = Validation.Price(Validation.ConvertToDouble(itemPedido.IcmsBase));
                icmsvlr.Text       = Validation.FormatPrice(itemPedido.IcmsVlr);

                Pis.SelectedValue    = itemPedido.Pis != null ? itemPedido.Pis : "";
                Cofins.SelectedValue = itemPedido.Cofins != null ? itemPedido.Cofins : "";
                Ipi.SelectedValue    = itemPedido.Ipi != null ? itemPedido.Ipi : "";

                icmsstaliq.Text           = Validation.Price(itemPedido.IcmsStAliq);
                icmsstbasecomreducao.Text = Validation.Price(itemPedido.IcmsStBaseComReducao);
                icmsstbase.Text           = Validation.Price(itemPedido.IcmsStBase);
                icmsstvlr.Text            = Validation.Price(itemPedido.Icmsstvlr);

                ipialiq.Text    = Validation.Price(itemPedido.IpiAliq);
                pisaliq.Text    = Validation.Price(itemPedido.PisAliq);
                cofinsaliq.Text = Validation.Price(itemPedido.CofinsAliq);

                pisvlr.Text    = Validation.Price(itemPedido.PisVlr);
                cofinsvlr.Text = Validation.Price(itemPedido.CofinsVlr);
                ipivlr.Text    = Validation.Price(itemPedido.IpiVlr);

                federal.Text   = Validation.Price(itemPedido.Federal);
                estadual.Text  = Validation.Price(itemPedido.Estadual);
                municipal.Text = Validation.Price(itemPedido.Municipal);

                infoAdicional.Text    = itemPedido.Info_Adicional != null ? itemPedido.Info_Adicional : "";
                pedidoCompra.Text     = itemPedido.Pedido_compra != null ? itemPedido.Pedido_compra : "";
                itemPedidoCompra.Text = itemPedido.Item_Pedido_Compra != null ? itemPedido.Item_Pedido_Compra : "";
            }

            medida.DataSource = Support.GetMedidas();

            origem.DataSource    = Support.GetOrigens();
            origem.DisplayMember = "Nome";
            origem.ValueMember   = "Id";

            if (itemPedido.Medida != null)
            {
                medida.SelectedItem = itemPedido.Medida;
            }

            if (itemPedido.Origem != null)
            {
                origem.SelectedValue = itemPedido.Origem;
            }
        }
Пример #6
0
        /// <summary>
        /// Adiciona item ao pedido, controla o estoque e atualiza os totais.
        /// </summary>
        private void AddItem()
        {
            if (collection.Lookup(nomeProduto()[0]) > 0 && String.IsNullOrEmpty(PedidoModalItens.NomeProduto))
            {
                var        itemId = collection.Lookup(nomeProduto()[0]);
                Model.Item item   = _mItem.FindById(itemId).WhereFalse("excluir").Where("tipo", "Produtos").FirstOrDefault <Model.Item>();

                if (ModoRapAva == 0)
                {
                    Medidas.SelectedItem = item.Medida;
                }

                double QuantidadeTxt          = Validation.ConvertToDouble(Quantidade.Text);
                double DescontoReaisTxt       = Validation.ConvertToDouble(DescontoReais.Text);
                double DescontoPorcentagemTxt = Validation.ConvertToDouble(DescontoPorcentagem.Text);
                string MedidaTxt = Medidas.Text;
                double PriceTxt  = Validation.ConvertToDouble(Preco.Text);

                #region Controle de estoque
                var controlarEstoque = IniFile.Read("ControlarEstoque", "Comercial");
                if (!string.IsNullOrEmpty(controlarEstoque) && controlarEstoque == "True")
                {
                    if (item.EstoqueAtual <= 0)
                    {
                        Alert.Message("Opps", "Você está sem estoque desse produto.", Alert.AlertType.warning);
                        return;
                    }
                }

                if (PriceTxt == 0)
                {
                    if (DescontoReaisTxt > item.ValorVenda || DescontoReaisTxt > item.Limite_Desconto || DescontoPorcentagemTxt > 101)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o valor do item.", Alert.AlertType.warning);
                        return;
                    }
                }

                if (PriceTxt > 0)
                {
                    if (DescontoReaisTxt > PriceTxt || DescontoPorcentagemTxt >= 101)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o valor do item.", Alert.AlertType.warning);
                        return;
                    }
                }

                double LimiteDescontoIni = 0;
                if (!String.IsNullOrEmpty(IniFile.Read("LimiteDesconto", "Comercial")))
                {
                    LimiteDescontoIni = Validation.ConvertToDouble(IniFile.Read("LimiteDesconto", "Comercial"));
                }

                if (item.Limite_Desconto != 0)
                {
                    if (DescontoReaisTxt > item.Limite_Desconto)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                        return;
                    }

                    if (PriceTxt > 0)
                    {
                        var porcentagemValor = (PriceTxt / 100 * DescontoPorcentagemTxt);
                        if (porcentagemValor > item.Limite_Desconto)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }
                    }

                    if (PriceTxt == 0)
                    {
                        var porcentagemValor = (item.ValorVenda / 100 * DescontoPorcentagemTxt);
                        if (porcentagemValor > item.Limite_Desconto)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }
                    }
                }
                else
                {
                    if (LimiteDescontoIni != 0)
                    {
                        if (DescontoReaisTxt > LimiteDescontoIni)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }

                        if (PriceTxt == 0)
                        {
                            var porcentagemValor = (item.ValorVenda / 100 * DescontoPorcentagemTxt);
                            if (porcentagemValor > LimiteDescontoIni)
                            {
                                Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                                return;
                            }
                        }

                        if (PriceTxt > 0)
                        {
                            var porcentagemValor = (PriceTxt / 100 * DescontoPorcentagemTxt);
                            if (porcentagemValor > LimiteDescontoIni)
                            {
                                Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                                return;
                            }
                        }
                    }
                }
                #endregion

                var pedidoItem = new Model.PedidoItem();
                pedidoItem.SetId(0)
                .SetTipo("Produtos")
                .SetPedidoId(_mNota.id_pedido)
                .SetAdicionalNomePdt(nomeProduto()[1])
                .SetItem(item)
                .SetQuantidade(QuantidadeTxt)
                .SetMedida(MedidaTxt)
                .SetDescontoReal(DescontoReaisTxt);

                if (!pedidoItem.SetValorVenda(PriceTxt))
                {
                    if (ModoRapAva == 0)
                    {
                        AlterarModo();
                        ModoRapAvaConfig = 1;
                    }

                    Preco.Select();
                    Preco.Focus();
                    return;
                }

                pedidoItem.SetDescontoPorcentagens(DescontoPorcentagemTxt);
                pedidoItem.SomarTotal();
                pedidoItem.Save(pedidoItem);

                if (item.Tipo == "Produtos")
                {
                    new Controller.Imposto().SetImposto(pedidoItem.GetLastId());

                    // Class Estoque -> Se for igual 'Compras', adiciona a quantidade no estoque do Item, se não Remove a quantidade do estoque do Item
                    if (Home.pedidoPage == "Compras" || Home.pedidoPage == "Devoluções")
                    {
                        new Controller.Estoque(pedidoItem.GetLastId(), Home.pedidoPage, "Adicionar Produto").Add().Item();
                    }
                    else
                    {
                        new Controller.Estoque(pedidoItem.GetLastId(), Home.pedidoPage, "Adicionar Produto").Remove().Item();
                    }
                }

                new Controller.Imposto().SetImposto(pedidoItem.GetLastId());

                // Carrega a Grid com o Item adicionado acima.
                GetDataTableItens(GridListaProdutos, _mNota.id_pedido);

                // Atualiza o total do pedido, e os totais da tela
                LoadTotais();

                // Limpa os campos
                ClearForms();

                // Verifica se modo é avançado e altera para modo simples, apenas se modo simples for padrão
                if (ModoRapAva == 1 && ModoRapAvaConfig == 1)
                {
                    AlterarModo();
                    ModoRapAvaConfig = 0;
                }

                BuscarProduto.Select();
            }
        }
Пример #7
0
        public void SetImposto(int idPedidoItem, int idImposto = 0, string tipo = "", string NCM = "")
        {
            _modelpedidoItem = _modelpedidoItem.FindById(idPedidoItem).FirstOrDefault <Model.PedidoItem>();
            _modelItem       = _modelItem.FindById(_modelpedidoItem.Item).FirstOrDefault <Model.Item>();

            #region IMPOSTO

            if (idImposto == 0)
            {
                if (_modelItem.Count() != 0)
                {
                    switch (tipo)
                    {
                    case "CFe":

                        if (_modelItem.Impostoidcfe == 0)
                        {
                            break;
                        }

                        _modelImposto = _modelImposto.FindById(_modelItem.Impostoidcfe)
                                        .FirstOrDefault <Model.Imposto>();
                        break;

                    default:
                        if (_modelItem.Impostoid == 0)
                        {
                            break;
                        }

                        _modelImposto = _modelImposto.FindById(_modelItem.Impostoid)
                                        .FirstOrDefault <Model.Imposto>();
                        break;
                    }
                }
            }
            else
            {
                _modelImposto = _modelImposto.FindById(idImposto).FirstOrDefault <Model.Imposto>();
            }

            #endregion IMPOSTO

            #region NCM | CEST | ORIGEM

            _modelpedidoItem.Ncm    = string.IsNullOrEmpty(NCM) ? _modelItem.Ncm : NCM;
            _modelpedidoItem.Cest   = _modelItem.Cest;
            _modelpedidoItem.Origem = _modelItem.Origem;

            #endregion NCM | CEST | ORIGEM

            #region CFOP

            _modelpedidoItem.Cfop = _modelImposto.Cfop;

            #endregion CFOP

            #region ICMS

            _modelpedidoItem.Icms = _modelImposto.Icms;

            switch (_modelImposto.Icms)
            {
                #region REGIME NORMAL

            //00 = Tributada integralmente.
            //10 = Tributada e com cobrança do ICMS por substituição tributária
            //20 = Com redução de base de cálculo
            //30 = Isenta ou não tributada e com cobrança do ICMS por substituição tributária
            //40 = Isenta
            //41 = Não tributada
            //50 = Suspensão
            //51 = Diferimento
            //60 = ICMS cobrado anteriormente por substituição tributária
            //70 = Com redução de base de cálculo e cobrança do ICMS por substituição tributária
            //90 = Outros

            case "00":
            case "90":
                _modelpedidoItem.IcmsBase = _modelpedidoItem.Total;
                _modelpedidoItem.IcmsAliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100);
                _modelpedidoItem.IcmsVlr  = Validation.Round(_modelpedidoItem.IcmsBase * _modelpedidoItem.IcmsAliq);
                break;

                #endregion REGIME NORMAL

                #region SIMPLES NACIONAL

            //101 = Tributada pelo Simples Nacional com permissão de crédito
            //102 = Tributada pelo Simples Nacional sem permissão de crédito
            //103 = Isenção do ICMS no Simples Nacional para faixa de receita bruta
            //201 = Tributada pelo Simples Nacional com permissão de crédito e com cobrança do ICMS por Substituição Tributária202 = Tributada pelo Simples Nacional sem permissão de crédito e com cobrança do ICMS por Substituição Tributária
            //202
            //203 = Isenção do ICMS nos Simples Nacional para faixa de receita bruta e com cobrança do ICMS por Substituição Tributária
            //300 = Imune
            //400 = Não tributada pelo Simples Nacional
            //500 = ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação
            //900 = Outros

            case "101":
                _modelpedidoItem.Icms101Aliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100);
                _modelpedidoItem.Icms101Vlr  =
                    Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.Icms101Aliq);
                break;

            case "201":
            case "202":
                //---------------ICMS
                _modelpedidoItem.IcmsBase = _modelpedidoItem.Total;
                _modelpedidoItem.IcmsAliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100);
                _modelpedidoItem.IcmsVlr  = Validation.Round(_modelpedidoItem.IcmsBase * _modelpedidoItem.IcmsAliq);
                //---------------ICMS ST
                _modelpedidoItem.IcmsStBase =
                    Validation.Round(_modelpedidoItem.IcmsBase +
                                     _modelpedidoItem.IcmsBase * (_modelImposto.IcmsStIva / 100));
                _modelpedidoItem.IcmsStAliq = Validation.RoundAliquotas(_modelImposto.IcmsStAliq / 100);
                if (_modelImposto.IcmsStReducaoAliq > 0)
                {
                    _modelpedidoItem.IcmsStBase = Validation.Round(
                        _modelpedidoItem.IcmsStBase -
                        _modelpedidoItem.IcmsStBase * (_modelImposto.IcmsStReducaoAliq / 100));
                }
                _modelpedidoItem.Icmsstvlr =
                    Validation.Round(_modelpedidoItem.IcmsStBase * _modelpedidoItem.IcmsStAliq);

                //---------------ICMS ST - ICMS
                _modelpedidoItem.Icmsstvlr =
                    Validation.Round(_modelpedidoItem.Icmsstvlr - _modelpedidoItem.IcmsVlr);

                _modelpedidoItem.IcmsBase = 0;
                _modelpedidoItem.IcmsAliq = 0;
                _modelpedidoItem.IcmsVlr  = 0;
                break;

            case "900":
                break;

                #endregion SIMPLES NACIONAL

            default:

                _modelpedidoItem.IcmsBase = 0;
                _modelpedidoItem.IcmsAliq = 0;
                _modelpedidoItem.IcmsVlr  = 0;

                _modelpedidoItem.IcmsStAliq           = 0;
                _modelpedidoItem.IcmsStBase           = 0;
                _modelpedidoItem.IcmsStBaseComReducao = 0;
                _modelpedidoItem.IcmsStReducaoAliq    = 0;

                break;
            }

            if (_modelpedidoItem.IcmsAliq > 0)
            {
                _modelpedidoItem.IcmsAliq = _modelpedidoItem.IcmsAliq * 100;
            }

            if (_modelpedidoItem.IcmsStAliq > 0)
            {
                _modelpedidoItem.IcmsStAliq = _modelpedidoItem.IcmsStAliq * 100;
            }

            #endregion ICMS

            #region IPI

            _modelpedidoItem.Ipi = _modelImposto.Ipi;

            switch (_modelImposto.Ipi)
            {
            case "50":
            case "99":
                if (_modelImposto.IpiAliq > 0)
                {
                    _modelpedidoItem.IpiAliq = Validation.RoundAliquotas(_modelImposto.IpiAliq / 100);
                    _modelpedidoItem.IpiVlr  = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.IpiAliq);
                }

                break;

            default:
                _modelpedidoItem.Ipi     = "0";
                _modelpedidoItem.IpiAliq = 0;
                _modelpedidoItem.IpiVlr  = 0;
                break;
            }

            #endregion IPI

            #region PIS

            _modelpedidoItem.Pis = _modelImposto.Pis;

            switch (_modelImposto.Pis)
            {
            case "01":
            case "99":
                if (_modelImposto.PisAliq > 0)
                {
                    _modelpedidoItem.PisAliq = Validation.RoundAliquotas(_modelImposto.PisAliq / 100);
                    _modelpedidoItem.PisVlr  = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.PisAliq);
                }

                break;

            default:
                _modelpedidoItem.PisAliq = 0;
                _modelpedidoItem.PisVlr  = 0;
                break;
            }

            if (_modelpedidoItem.PisAliq > 0)
            {
                _modelpedidoItem.PisAliq = _modelpedidoItem.PisAliq * 100;
            }

            if (string.IsNullOrEmpty(_modelpedidoItem.Pis))
            {
                _modelpedidoItem.Pis = "0";
            }

            #endregion PIS

            #region COFINS

            _modelpedidoItem.Cofins = _modelImposto.Cofins;

            switch (_modelImposto.Cofins)
            {
            case "01":
            case "99":
                if (_modelImposto.CofinsAliq > 0)
                {
                    _modelpedidoItem.CofinsAliq = Validation.RoundAliquotas(_modelImposto.CofinsAliq / 100);
                    _modelpedidoItem.CofinsVlr  =
                        Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.CofinsAliq);
                }

                break;

            default:
                _modelpedidoItem.CofinsAliq = 0;
                _modelpedidoItem.CofinsVlr  = 0;
                break;
            }

            if (_modelpedidoItem.CofinsAliq > 0)
            {
                _modelpedidoItem.CofinsAliq = _modelpedidoItem.CofinsAliq * 100;
            }

            if (string.IsNullOrEmpty(_modelpedidoItem.Cofins))
            {
                _modelpedidoItem.Cofins = "0";
            }

            #endregion COFINS

            #region vTotTrib

            _modelpedidoItem.Federal =
                Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqFederal / 100));
            _modelpedidoItem.Estadual =
                Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqEstadual / 100));
            _modelpedidoItem.Municipal =
                Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqMunicipal / 100));

            #endregion vTotTrib

            _modelpedidoItem.Save(_modelpedidoItem);
        }