예제 #1
0
        private void BuscarItens()
        {
            if (!string.IsNullOrEmpty(cd_produto.Text))
            {
                string pCd_codbarra = cd_produto.Text;
                //Buscar lengt cd_produto
                CamadaDados.Diversos.TList_CadParamSys lParam =
                    CamadaNegocio.Diversos.TCN_CadParamSys.Busca("CD_PRODUTO",
                                                                 string.Empty,
                                                                 decimal.Zero,
                                                                 null);
                if (lParam.Count > 0)
                {
                    if (cd_produto.Text.Trim().Length < lParam[0].Tamanho)
                    {
                        cd_produto.Text = cd_produto.Text.Trim().PadLeft(Convert.ToInt32(lParam[0].Tamanho), '0');
                    }
                }
                List <CamadaDados.Estoque.Cadastros.TRegistro_ProdutoPDV> lProduto =
                    CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.BuscarProdutoPDV(cd_produto.Text,
                                                                                    pCd_codbarra,
                                                                                    lCfg[0],
                                                                                    null);
                if (lProduto.Count > 0)
                {
                    try
                    {
                        TRegistro_CupomFiscal_Item rItem = new TRegistro_CupomFiscal_Item();
                        //Criar objeto item cupom
                        rItem.Cd_empresa            = lCfg[0].Cd_empresa;
                        rItem.Cd_local              = lCfg[0].Cd_local;
                        rItem.Cd_produto            = lProduto[0].Cd_produto;
                        rItem.Cd_condfiscal_produto = lProduto[0].Cd_condfiscal_produto;
                        rItem.Cd_unidade            = lProduto[0].Cd_unidade;
                        rItem.Id_cupom              = rCupom.Id_cupom;
                        rItem.Quantidade            = decimal.Parse(lblQuantidade.Text);
                        rItem.Vl_unitario           = lProduto[0].Vl_precovenda;
                        rItem.Vl_subtotal           = rItem.Quantidade * rItem.Vl_unitario;
                        //Buscar CFOP
                        CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                        if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rCupom.Cd_movimentacaostr, rItem.Cd_condfiscal_produto, true, ref rCfop, null))
                        {
                            rItem.Cd_cfop = rCfop.CD_CFOP;
                            rItem.Ds_cfop = rCfop.DS_CFOP;
                        }
                        else
                        {
                            throw new Exception("Não existe CFOP cadastrado para a movimentação " + rCupom.Cd_movimentacaostr.Trim() + "\r\n" +
                                                "Condição fiscal produto " + rItem.Cd_condfiscal_produto.Trim());
                        }
                        //Procurar Impostos Estaduais para o Item
                        //Buscar estado da empresa
                        object obj = new CamadaDados.Diversos.TCD_CadEmpresa().BuscarEscalar(
                            new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "a.cd_empresa",
                                vOperador = "=",
                                vVL_Busca = "'" + rCupom.Cd_empresa.Trim() + "'"
                            }
                        }, "c.cd_uf");
                        string vObsFiscal = string.Empty;
                        CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf =
                            CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rCupom.Cd_empresa,
                                                                                                              obj != null ? obj.ToString() : string.Empty,
                                                                                                              obj != null ? obj.ToString() : string.Empty,
                                                                                                              rCupom.Cd_movimentacaostr,
                                                                                                              "S",
                                                                                                              lCfg[0].Cd_condfiscal_clifor,
                                                                                                              rItem.Cd_condfiscal_produto,
                                                                                                              rItem.Vl_subtotalliquido,
                                                                                                              rItem.Quantidade,
                                                                                                              ref vObsFiscal,
                                                                                                              rCupom.Dt_emissao,
                                                                                                              rItem.Cd_produto,
                                                                                                              "P",
                                                                                                              rCupom.Nr_serie,
                                                                                                              null);
                        if (lImpUf.Count > 0)
                        {
                            rItem.ImpostosItens = lImpUf;
                        }
                        else
                        {
                            throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" +
                                                "Tipo Movimento: SAIDA" + "\r\n" +
                                                "Movimentação: " + rCupom.Cd_movimentacaostr + "\r\n" +
                                                "Cond. Fiscal Clifor: " + lCfg[0].Cd_condfiscal_clifor.Trim() + "\r\n" +
                                                "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" +
                                                "UF Origem: " + (obj != null ? obj.ToString() : string.Empty) + "\r\n" +
                                                "UF Destino: " + (obj != null ? obj.ToString() : string.Empty));
                        }
                        //Procurar impostos sobre os itens da nota fiscal de destino
                        rItem.ImpostosItens.Concat(CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(lCfg[0].Cd_condfiscal_clifor,
                                                                                                                                              rItem.Cd_condfiscal_produto,
                                                                                                                                              rCupom.Cd_movimentacaostr,
                                                                                                                                              "S",
                                                                                                                                              lCfg[0].Tp_pessoa,
                                                                                                                                              rCupom.Cd_empresa,
                                                                                                                                              rCupom.Nr_serie,
                                                                                                                                              string.Empty,
                                                                                                                                              string.Empty,
                                                                                                                                              rCupom.Dt_emissao,
                                                                                                                                              decimal.Zero,
                                                                                                                                              rItem.Vl_subtotalliquido,
                                                                                                                                              "P",
                                                                                                                                              string.Empty,
                                                                                                                                              null));

                        pImgProduto.Image = lProduto[0].Imagem;
                        //Objeto Cupom Impressora
                        string aliquota = CamadaNegocio.Faturamento.Cadastros.TCN_CFGCupomFiscal.BuscarAliquotaICMS(rItem.ImpostosItens, null);
                        if (string.IsNullOrEmpty(aliquota))
                        {
                            throw new Exception("Item sem parametro do ICMS.");
                        }
                        int nr_sequencial = 0;
                        if (TGerenciarECF.VenderItem(rECF,
                                                     lProduto[0].Cd_produto,
                                                     lProduto[0].Ds_produto,
                                                     lProduto[0].Sigla_unidade,
                                                     aliquota,
                                                     "F",
                                                     lblQuantidade.Text,
                                                     3,
                                                     lProduto[0].Vl_precovenda.ToString("N3", new System.Globalization.CultureInfo("pt-BR")),
                                                     "%",
                                                     decimal.Zero,
                                                     decimal.Zero,
                                                     ref nr_sequencial))
                        {
                            //Gravar item no banco
                            if (nr_sequencial > 0)
                            {
                                rItem.Nr_sequencial_ecf = nr_sequencial;
                            }
                            else
                            {
                                rItem.Nr_sequencial_ecf = TGerenciarECF.UltimoItemVendido(rECF);
                            }
                            TCN_CupomFiscal_Item.Gravar(rItem, true, null);
                            //Adicionar ao cupom em tela
                            rCupom.lItem.Add(rItem);
                            //Atualizar o Display
                            StringBuilder cupom = new StringBuilder();
                            cupom.AppendFormat("{0:000}", rItem.Nr_sequencial_ecf);
                            cupom.Append(' ', 2);
                            cupom.AppendFormat("{0,-29:G}", rItem.Ds_produto);
                            cupom.Append(' ', 2);
                            cupom.AppendFormat(rItem.Quantidade.ToString("G").PadLeft(3, ' '));
                            cupom.AppendFormat(rItem.Vl_subtotal.ToString("N").PadLeft(12, ' '));
                            cupom.Append('\n');

                            this.AtualizarDisplay(cupom.ToString());
                            Application.DoEvents();

                            this.lblVlUnitario.Text = rItem.Vl_unitario.ToString("N");
                            this.lblVlSubTotal.Text = rItem.Vl_subtotal.ToString("N");
                            this.lblProduto.Text    = rItem.Ds_produto;
                            this.lblTotalCupom.Text = TGerenciarECF.BuscarVlSubTotal(rECF).ToString("N");
                            this.lblQuantidade.Text = decimal.Parse("1").ToString("N3", new System.Globalization.CultureInfo("pt-BR", true)); // volta quantidade para 1
                            this.cd_produto.Clear();
                            this.lblMenuCancelarItem.Enabled = true;
                            this.lblMenuFecharVenda.Enabled  = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
예제 #2
0
        private void bsFichaTec_PositionChanged(object sender, EventArgs e)
        {
            if (bsImpostos.Count <= 0)
            {
                CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor clifor = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo((bsOrcamento.Current as TRegistro_Orcamento).Cd_clifor, null);

                object cd_cidade = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_clifor",
                        vOperador = "=",
                        vVL_Busca = (bsOrcamento.Current as TRegistro_Orcamento).Cd_clifor
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_endereco",
                        vOperador = "=",
                        vVL_Busca = (bsOrcamento.Current as TRegistro_Orcamento).Cd_endereco
                    }
                }, "a.cd_cidade");

                object uf_clifor = new CamadaDados.Financeiro.Cadastros.TCD_CadCidade().BuscarEscalar(
                    new TpBusca[] {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_cidade",
                        vOperador = "=",
                        vVL_Busca = cd_cidade.ToString()
                    }
                }, "a.cd_uf");

                object uf_empresa = new CamadaDados.Diversos.TCD_CadEmpresa().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_empresa",
                        vOperador = "=",
                        vVL_Busca = (bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa
                    }
                }, "c.cd_uf");

                CamadaDados.Estoque.Cadastros.TRegistro_CadProduto prod = CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo((bsFichaTec.Current as TRegistro_FichaTec).Cd_produto, null);
                string vObsFiscal = string.Empty;

                (bsFichaTec.Current as TRegistro_FichaTec).lImpostos = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf((bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa,
                                                                                                                                                         uf_empresa.ToString(),
                                                                                                                                                         uf_clifor.ToString(),
                                                                                                                                                         (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Cd_movtostring,
                                                                                                                                                         (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Tp_movimento,
                                                                                                                                                         clifor.Cd_condfiscal_clifor,
                                                                                                                                                         prod.CD_CondFiscal_Produto,
                                                                                                                                                         decimal.Zero,
                                                                                                                                                         (bsFichaTec.Current as TRegistro_FichaTec).Quantidade,
                                                                                                                                                         ref vObsFiscal,
                                                                                                                                                         dt_emissao.Data,
                                                                                                                                                         (bsFichaTec.Current as TRegistro_FichaTec).Cd_produto,
                                                                                                                                                         "P",
                                                                                                                                                         (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Nr_serie,
                                                                                                                                                         null);

                (bsFichaTec.Current as TRegistro_FichaTec).lImpostos.Concat(
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(clifor.Cd_condfiscal_clifor,
                                                                                                               prod.CD_CondFiscal_Produto,
                                                                                                               (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Cd_movtostring,
                                                                                                               (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Tp_movimento,
                                                                                                               clifor.Tp_pessoa,
                                                                                                               (bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa,
                                                                                                               (bsCFGPed.Current as CamadaDados.Faturamento.Cadastros.TRegistro_CadCFGPedidoFiscal).Cfg_pedido,
                                                                                                               clifor.Cd_clifor,
                                                                                                               prod.CD_Unidade,
                                                                                                               dt_emissao.Data,
                                                                                                               (bsFichaTec.Current as TRegistro_FichaTec).Quantidade,
                                                                                                               decimal.Zero,
                                                                                                               "P",
                                                                                                               (bsOrcamento.Current as TRegistro_Orcamento).Cd_cidadeemp,
                                                                                                               null));
            }
            (bsFichaTec.Current as TRegistro_FichaTec).lImpostos.ForEach(p =>
            {
                p.Vl_basecalc = (bsFichaTec.Current as TRegistro_FichaTec).Vl_subtotal;
                CamadaNegocio.Faturamento.NotaFiscal.TCN_ImpostosNF.CalcValorImposto(p, p.Vl_basecalc, false);
            });
            bsFichaTec.ResetCurrentItem();
        }