Ejemplo n.º 1
0
        public static CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessaVRVendaFutura(CamadaDados.Faturamento.PDV.TRegistro_VendaRapida rVenda,
                                                                                                        CamadaDados.Faturamento.NotaFiscal.TList_LanFat_ComplementoDevolucao lNfM)
        {
            //Buscar pedido entrega futura
            CamadaDados.Faturamento.Pedido.TList_Pedido lPed =
                new CamadaDados.Faturamento.Pedido.TCD_Pedido().Select(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fat_notafiscal_item x " +
                                "where x.nr_pedido = a.nr_pedido " +
                                "and x.cd_empresa = '" + lNfM[0].Cd_empresa.Trim() + "' " +
                                "and x.nr_lanctofiscal = " + lNfM[0].Nr_lanctofiscal_origem.Value.ToString() + " " +
                                "and x.id_nfitem = " + lNfM[0].Id_nfitem_origem.Value.ToString() + ")"
                }
            }, 1, string.Empty);
            if (lPed.Count > 0)
            {
                //Buscar configuracao fiscal entrega futura
                CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed =
                    new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                        new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_fiscal",
                        vOperador = "=",
                        vVL_Busca = "'NO'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.cfg_pedido",
                        vOperador = "=",
                        vVL_Busca = "'" + lPed[0].CFG_Pedido.Trim() + "'"
                    }
                }, 1, string.Empty);
                if (lCfgPed.Count > 0)
                {
                    //Objeto Nota Fiscal
                    CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNf = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento();
                    rNf.Cd_empresa           = lPed[0].CD_Empresa;
                    rNf.Cd_clifor            = lPed[0].CD_Clifor;
                    rNf.Nm_clifor            = lPed[0].NM_Clifor;
                    rNf.Cd_endereco          = lPed[0].CD_Endereco;
                    rNf.Cd_cmi               = lCfgPed[0].Cd_cmi;
                    rNf.Cd_movimentacao      = lCfgPed[0].Cd_movto;
                    rNf.lCFGFiscal           = lCfgPed;
                    rNf.Cd_uf_empresa        = lPed[0].Cd_uf_empresa;
                    rNf.Uf_empresa           = lPed[0].Uf_empresa;
                    rNf.Cd_uf_clifor         = lPed[0].Cd_uf_cliente;
                    rNf.Uf_clifor            = lPed[0].UF_Cliente;
                    rNf.Cd_condfiscal_clifor = lPed[0].Cd_condfiscal_clifor;
                    rNf.Tp_duplicata         = lCfgPed[0].Tp_duplicata;
                    rNf.Ds_tpduplicata       = lCfgPed[0].Ds_tpduplicata;
                    rNf.Cd_condpgto          = lCfgPed[0].CD_CondPgto;
                    rNf.Nr_pedido            = lPed[0].Nr_pedido;
                    rNf.Tp_movimento         = "S";
                    rNf.Tp_pessoa            = lPed[0].Tp_pessoa;
                    rNf.Tp_nota              = "P";
                    rNf.Nr_serie             = lCfgPed[0].Nr_serie;
                    rNf.Cd_modelo            = lCfgPed[0].Cd_modelo;
                    rNf.St_sequenciaauto     = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
                    rNf.Dt_emissao           = CamadaDados.UtilData.Data_Servidor();
                    rNf.Dt_saient            = rNf.Dt_emissao;
                    rNf.Dadosadicionais      = ProcessaAplicacao.BuscarObsMov("D",
                                                                              rNf.Cd_movimentacaostring,
                                                                              lPed[0].UF_Cliente.Trim().Equals(lPed[0].Uf_empresa.Trim()));
                    rNf.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F",
                                                                   rNf.Cd_movimentacaostring,
                                                                   lPed[0].UF_Cliente.Trim().Equals(lPed[0].Uf_empresa.Trim()));

                    if (rNf.Tp_nota.Trim().ToUpper().Equals("T") || (!rNf.St_sequenciaauto))
                    {
                        //Abrir tela para capturar dados da nota fiscal
                        using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota())
                        {
                            fNumero.pCd_empresa       = rNf.Cd_empresa;
                            fNumero.pNm_empresa       = rNf.Nm_empresa;
                            fNumero.pCd_clifor        = rNf.Cd_clifor;
                            fNumero.pNm_clifor        = rNf.Nm_clifor;
                            fNumero.pTp_pessoa        = rNf.Tp_pessoa;
                            fNumero.pTp_movimento     = rNf.Tp_movimento;
                            fNumero.pTp_nota          = rNf.Tp_nota;
                            fNumero.pChave_Acesso_NFe = rNf.Chave_acesso_nfe;
                            fNumero.pNr_serie         = rNf.Nr_serie;
                            fNumero.pDs_serie         = rNf.Ds_serienf;
                            fNumero.pCd_modelo        = rNf.Cd_modelo;
                            fNumero.pDt_emissao       = rNf.Dt_emissao;
                            fNumero.pST_NotaUnica     = false;
                            fNumero.pNr_notafiscal    = rNf.Nr_notafiscal.HasValue ? rNf.Nr_notafiscal.Value.ToString() : string.Empty;
                            fNumero.pDt_saient        = rNf.Dt_saient;
                            fNumero.pDs_dadosadic     = rNf.Dadosadicionais;
                            fNumero.pDs_obsfiscal     = rNf.Obsfiscal;
                            fNumero.pSt_sequenciaauto = rNf.St_sequenciaauto;
                            fNumero.pCd_movto         = rNf.Cd_movimentacaostring;
                            fNumero.pCd_cmi           = rNf.Cd_cmistring;
                            if (rNf.Tp_nota.Trim().ToUpper().Equals("T"))
                            {
                                //Buscar inscricao estadual do clifor da nota
                                object obj_insc = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                                    new TpBusca[]
                                {
                                    new TpBusca()
                                    {
                                        vNM_Campo = "a.cd_clifor",
                                        vOperador = "=",
                                        vVL_Busca = "'" + rNf.Cd_clifor.Trim() + "'"
                                    },
                                    new TpBusca()
                                    {
                                        vNM_Campo = "a.cd_endereco",
                                        vOperador = "=",
                                        vVL_Busca = "'" + rNf.Cd_endereco.Trim() + "'"
                                    }
                                }, "a.insc_estadual");
                                fNumero.pInsc_estadual = obj_insc == null ? string.Empty : obj_insc.ToString();
                            }
                            if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                rNf.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe;
                                if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal))
                                {
                                    rNf.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal);
                                }
                                else
                                {
                                    rNf.Nr_notafiscal = null;
                                }
                                rNf.Nr_serie             = fNumero.pNr_serie;
                                rNf.Cd_modelo            = fNumero.pCd_modelo;
                                rNf.Dt_emissao           = fNumero.pDt_emissao;
                                rNf.Dt_saient            = fNumero.pDt_saient;
                                rNf.Obsfiscal            = fNumero.pDs_obsfiscal;
                                rNf.Dadosadicionais      = fNumero.pDs_dadosadic;
                                rNf.Cd_transportadora    = fNumero.pCd_transportadora;
                                rNf.Nm_razaosocialtransp = fNumero.pNm_transportadora;
                                rNf.Cpf_transp           = fNumero.pCnpjCpfTransp;
                                rNf.Placaveiculo         = fNumero.pPlacaVeiculo;
                                rNf.Tp_frete             = fNumero.pTp_frete;
                                rNf.Especie     = fNumero.pEspecie;
                                rNf.Quantidade  = fNumero.pQuantidade;
                                rNf.Pesobruto   = fNumero.pPsbruto;
                                rNf.Pesoliquido = fNumero.pPsliquido;
                                rNf.Vl_frete    = fNumero.pVl_frete;
                                if (rNf.Cd_cmistring.Trim() != fNumero.pCd_cmi.Trim())
                                {
                                    CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                                        CamadaNegocio.Fiscal.TCN_CadCMI.Busca(fNumero.pCd_cmi,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              null)[0];
                                    rNf.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI()
                                    {
                                        St_compdevimposto = rCmi.St_compdevimposto,
                                        St_complementar   = rCmi.St_complementar,
                                        St_devolucao      = rCmi.St_devolucao,
                                        St_geraestoque    = rCmi.St_geraestoque,
                                        St_mestra         = rCmi.St_mestra,
                                        St_simplesremessa = rCmi.St_simplesremessa,
                                        St_retorno        = rCmi.St_retorno
                                    });
                                    rNf.Cd_cmistring   = fNumero.pCd_cmi;
                                    rNf.Ds_cmi         = rCmi.Ds_cmi;
                                    rNf.Tp_duplicata   = rCmi.Tp_duplicata;
                                    rNf.Ds_tpduplicata = rCmi.ds_tpduplicata;
                                }
                            }
                            else
                            {
                                throw new Exception("Obrigatorio informar numero da nota fiscal.");
                            }
                        }
                    }
                    if (rNf.Nr_notafiscal.HasValue)
                    {
                        CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat =
                            CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNf.Nr_notafiscal.ToString(),
                                                                                                     rNf.Nr_serie,
                                                                                                     rNf.Cd_empresa,
                                                                                                     rNf.Cd_clifor,
                                                                                                     string.Empty,
                                                                                                     rNf.Tp_nota,
                                                                                                     null);
                        if (rFat != null)
                        {
                            if (rFat.St_registro.Trim().ToUpper().Equals("C"))
                            {
                                throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra cancelada.\r\n" +
                                                    "Para poder utilizar o mesmo numero e necessario excluir a nota fiscal cancelada.\r\n" +
                                                    "Dica: Menu FATURAMENTO->Emissão de Notas Fiscais / NFe, localize a nota fiscal cancelada e exclua a mesma.\r\n" +
                                                    "Obs.: Para excluir a nota fiscal cancelada é necessario que o usuario tenha permissão.");
                            }
                            else
                            {
                                throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra ativa.\r\n" +
                                                    "Não é permitido gerar nota fiscal com mesmo numero.");
                            }
                        }
                    }
                    rVenda.lItem.ForEach(item =>
                    {
                        //Buscar item pedido
                        object obj = new CamadaDados.Faturamento.Pedido.TCD_LanPedido_Item().BuscarEscalar(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "a.nr_pedido",
                                vOperador = "=",
                                vVL_Busca = lPed[0].Nr_pedido.ToString()
                            },
                            new TpBusca()
                            {
                                vNM_Campo = "a.cd_produto",
                                vOperador = "=",
                                vVL_Busca = "'" + item.Cd_produto.Trim() + "'"
                            }
                        }, "a.id_pedidoitem");
                        //Item da nota fiscal
                        CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item();
                        rItem.Cd_empresa            = rVenda.Cd_empresa;
                        rItem.Cd_produto            = item.Cd_produto;
                        rItem.Cd_local              = item.Cd_local;
                        rItem.Cd_condfiscal_produto = item.Cd_condfiscal_produto;
                        rItem.Cd_unidade            = item.Cd_unidade;
                        rItem.Cd_unidEst            = item.Cd_unidade;
                        rItem.Nr_pedido             = lPed[0].Nr_pedido;
                        rItem.Id_pedidoitem         = decimal.Parse(obj.ToString());
                        rItem.Quantidade            = item.Quantidade;
                        rItem.Quantidade_estoque    = item.Quantidade;
                        rItem.Vl_subtotal           = item.Vl_subtotal;
                        rItem.Vl_subtotal_estoque   = item.Vl_subtotal;
                        rItem.Vl_unitario           = item.Vl_unitario;
                        //Buscar cfop do item
                        CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                        if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNf.Cd_movimentacaostring,
                                                                           item.Cd_condfiscal_produto,
                                                                           lPed[0].Cd_uf_cliente.Trim().Equals("99") ? "I" :
                                                                           lPed[0].Cd_uf_cliente.Trim().Equals(lPed[0].Cd_uf_empresa.Trim()) ? "D" : "F",
                                                                           (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa),
                                                                           (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor),
                                                                           rNf.Tp_movimento,
                                                                           rNf.Cd_condfiscal_clifor,
                                                                           rNf.Cd_empresa,
                                                                           ref rCfop,
                                                                           null))
                        {
                            rItem.Cd_cfop        = rCfop.CD_CFOP;
                            rItem.Ds_cfop        = rCfop.DS_CFOP;
                            rItem.St_bonificacao = rCfop.St_bonificacaobool;
                        }
                        else
                        {
                            throw new Exception("Não existe CFOP " + (lPed[0].Cd_uf_cliente.Trim().Equals("99") ? "internacional" : lPed[0].Cd_uf_cliente.Trim().Equals(lPed[0].Cd_uf_empresa.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + rNf.Cd_movimentacaostring + " condição fiscal do produto " + item.Cd_condfiscal_produto);
                        }
                        //Procurar Impostos Estaduais para o Item
                        string vObsFiscal = string.Empty;
                        CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf =
                            CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNf.Cd_empresa,
                                                                                                              (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa),
                                                                                                              (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor),
                                                                                                              rNf.Cd_movimentacaostring,
                                                                                                              rNf.Tp_movimento,
                                                                                                              rNf.Cd_condfiscal_clifor,
                                                                                                              rItem.Cd_condfiscal_produto,
                                                                                                              rItem.Vl_subtotal,
                                                                                                              rItem.Quantidade,
                                                                                                              ref vObsFiscal,
                                                                                                              rNf.Dt_emissao,
                                                                                                              rItem.Cd_produto,
                                                                                                              rNf.Tp_nota,
                                                                                                              rNf.Nr_serie,
                                                                                                              null);
                        if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                        {
                            CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem);
                            rNf.Obsfiscal += vObsFiscal.Trim();
                        }
                        else if (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.ObrigImformarICMS(rItem.Cd_produto, rNf.Nr_serie, null))
                        {
                            throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" +
                                                "Tipo Movimento: " + rNf.Tipo_movimento.Trim() + "\r\n" +
                                                "Movimentação: " + rNf.Cd_movimentacao.ToString() + "\r\n" +
                                                "Cond. Fiscal Clifor: " + rNf.Cd_condfiscal_clifor.Trim() + "\r\n" +
                                                "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" +
                                                "UF Origem: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" +
                                                "UF Destino: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim()));
                        }

                        //Procurar impostos sobre os itens da nota fiscal de destino
                        CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                            CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor,
                                                                                                                       rItem.Cd_condfiscal_produto,
                                                                                                                       rNf.Cd_movimentacaostring,
                                                                                                                       rNf.Tp_movimento,
                                                                                                                       rNf.Tp_pessoa,
                                                                                                                       rNf.Cd_empresa,
                                                                                                                       rNf.Nr_serie,
                                                                                                                       rNf.Cd_clifor,
                                                                                                                       rItem.Cd_unidEst,
                                                                                                                       rNf.Dt_emissao,
                                                                                                                       rItem.Quantidade,
                                                                                                                       rItem.Vl_subtotal,
                                                                                                                       rNf.Tp_nota,
                                                                                                                       rNf.Cd_municipioexecservico,
                                                                                                                       null), rItem, rNf.Tp_movimento);
                        //Incluir Nota Mestra
                        rItem.lNfcompdev = lNfM;
                        //Observação do Item com os dados das notas de origem
                        string obsitem = string.Empty;
                        lNfM.ForEach(p =>
                                     obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') +
                                                (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("pt-BR")) +
                                                 item.Sigla_unidade.Trim()).FormatStringDireita(15, ' ') +
                                                p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("pt-BR")).FormatStringDireita(12, ' ') + "\r\n");
                        rItem.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" + obsitem;
                        rNf.ItensNota.Add(rItem);
                    });
                    return(rNf);
                }
                else
                {
                    throw new Exception("Não existe configuração fiscal para o pedido Nº" + lPed[0].Nr_pedido.ToString());
                }
            }
            else
            {
                throw new Exception("Pedido não localizado.");
            }
        }
Ejemplo n.º 2
0
        private void TFItensExpedicao_Load(object sender, EventArgs e)
        {
            Icon = ResourcesUtils.TecnoAliance_ICO;
            bsExpedicao.AddNew();
            Obs_Pedido.Text  = Ds_obs;
            lbNumPedido.Text = "OBSERVAÇÃO DO PEDIDO Nº " + Nr_pedido;
            //Buscar Itens Pedido
            CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item lItem =
                new CamadaDados.Faturamento.Pedido.TCD_LanPedido_Item().Select(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.nr_pedido",
                    vOperador = "=",
                    vVL_Busca = Nr_pedido
                },
                new TpBusca()
                {
                    vNM_Campo = "a.quantidade - a.qtd_expedida + a.qtd_devolvida",
                    vOperador = ">",
                    vVL_Busca = "0"
                }
            }, 0, string.Empty, string.Empty, string.Empty);

            lItem.ForEach(p =>
            {
                if (!p.St_exigirserie)
                {
                    (bsExpedicao.Current as CamadaDados.Faturamento.Pedido.TRegistro_Expedicao).lItens.Add(
                        new CamadaDados.Faturamento.Pedido.TRegistro_ItensExpedicao()
                    {
                        Cd_empresa     = p.Cd_Empresa,
                        Nr_pedido      = p.Nr_pedido,
                        Cd_produto     = p.Cd_produto,
                        Ds_produto     = p.Ds_produto,
                        Id_pedidoitem  = p.Id_pedidoitem,
                        PS_Unitario    = p.Ps_unitario,
                        SaldoCarregar  = p.SaldoCarregar,
                        St_exigirserie = p.St_exigirserie
                    });
                }
                else
                {
                    for (int i = 0; p.SaldoCarregar > i; i++)
                    {
                        (bsExpedicao.Current as CamadaDados.Faturamento.Pedido.TRegistro_Expedicao).lItens.Add(
                            new CamadaDados.Faturamento.Pedido.TRegistro_ItensExpedicao()
                        {
                            Cd_empresa     = p.Cd_Empresa,
                            Nr_pedido      = p.Nr_pedido,
                            Cd_produto     = p.Cd_produto,
                            Ds_produto     = p.Ds_produto,
                            Id_pedidoitem  = p.Id_pedidoitem,
                            Quantidade     = 1,
                            PS_Unitario    = p.Ps_unitario,
                            SaldoCarregar  = p.SaldoCarregar,
                            St_exigirserie = p.St_exigirserie
                        });
                    }
                }
            });
            //Buscar Acessórios Pedido
            CamadaDados.Faturamento.Pedido.TList_AcessoriosPed lAcessorios =
                new CamadaDados.Faturamento.Pedido.TCD_AcessoriosPed().Select(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.nr_pedido",
                    vOperador = "=",
                    vVL_Busca = Nr_pedido
                },
                new TpBusca()
                {
                    vNM_Campo = "a.quantidade - a.qtd_expedida",
                    vOperador = ">",
                    vVL_Busca = "0"
                }
            }, 0, string.Empty);

            lAcessorios.ForEach(p =>
            {
                (bsExpedicao.Current as CamadaDados.Faturamento.Pedido.TRegistro_Expedicao).lItens.Add(
                    new CamadaDados.Faturamento.Pedido.TRegistro_ItensExpedicao()
                {
                    Nr_pedido      = p.Nr_pedido,
                    Id_acessorio   = p.Id_acessorio,
                    Cd_produto     = p.Cd_produto,
                    Ds_produto     = p.Ds_produto,
                    SaldoCarregar  = p.SaldoCarregar,
                    St_exigirserie = false
                });
            });
            bsExpedicao.ResetCurrentItem();
        }