예제 #1
0
        public static string FecharCartao(TRegistro_Cartao val,
                                          CamadaDados.Faturamento.PDV.TRegistro_VendaRapida rVenda,
                                          ThreadEspera tEspera,
                                          BancoDados.TObjetoBanco banco)
        {
            bool       st_transacao = false;
            TCD_Cartao qtb_orc      = new TCD_Cartao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }
                //Gravar Venda
                Faturamento.PDV.TCN_VendaRapida.GravarVendaRapida(rVenda,
                                                                  null,
                                                                  null,
                                                                  qtb_orc.Banco_Dados);
                //Fechar Cartão
                val.St_registro   = "F";
                val.Dt_fechamento = CamadaDados.UtilData.Data_Servidor(qtb_orc.Banco_Dados);
                Gravar(val, qtb_orc.Banco_Dados);
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return(val.id_cartao.ToString());
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar CARTAO: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #2
0
 private bool VerificarTotDesconto(CamadaDados.Faturamento.PDV.TRegistro_VendaRapida val, decimal tot_desconto)
 {
     for (int i = 0; i < (val.lItem.Count); i++)
     {
         if (lDesc != null)
         {
             if (lDesc.Count > 0)
             {
                 if (!string.IsNullOrEmpty(val.Cd_tabelapreco))
                 {
                     if (lDesc.Exists(p => p.Cd_tabelapreco.Trim().Equals(val.Cd_tabelapreco.Trim()) &&
                                      p.Cd_grupo.Trim().Equals(val.lItem[i].Cd_grupo.Trim())))
                     {
                         //Desconto por tabela de preco e grupo de produto
                         decimal pc_max_desc = lDesc.Find(p => p.Cd_tabelapreco.Trim().Equals(val.Cd_tabelapreco.Trim()) &&
                                                          p.Cd_grupo.Trim().Equals(val.lItem[i].Cd_grupo.Trim())).Pc_max_desconto;
                         decimal pc_desconto = tot_desconto * 100 / pVl_receber;
                         if (pc_desconto > 100)
                         {
                             MessageBox.Show("Soma do % de desconto foi maior que 100! Favor verificar desconto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                             return(false);
                         }
                         if (pc_desconto > pc_max_desc)
                         {
                             MessageBox.Show("A tabela de preço e o grupo de produto está configurado para dar desconto máximo de " + pc_max_desc.ToString("N2", new System.Globalization.CultureInfo("pt-BR")) + "%.",
                                             "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                             //Chamar tela de usuario com autorizacao para o % desconto solicitado
                             using (Financeiro.TFLoginDesconto fLogin = new Financeiro.TFLoginDesconto())
                             {
                                 fLogin.Cd_tabelapreco = val.Cd_tabelapreco;
                                 fLogin.Cd_grupo       = val.lItem[i].Cd_grupo;
                                 fLogin.Cd_empresa     = val.Cd_empresa;
                                 fLogin.Pc_desc        = pc_desconto;
                                 if (fLogin.ShowDialog() != DialogResult.OK)
                                 {
                                     return(false);
                                 }
                                 else
                                 {
                                     LoginPDV = fLogin.Logindesconto;
                                     return(true);
                                 }
                             }
                         }
                         else
                         {
                             return(true);
                         }
                     }
                     else if (lDesc.Exists(p => p.Cd_tabelapreco.Trim().Equals(val.Cd_tabelapreco.Trim())))
                     {
                         //Desconto por tabela de preço
                         decimal pc_max_desc = lDesc.Find(p => p.Cd_tabelapreco.Trim().Equals(val.Cd_tabelapreco.Trim())).Pc_max_desconto;
                         decimal pc_desconto = tot_desconto * 100 / pVl_receber;
                         if (pc_desconto > 100)
                         {
                             MessageBox.Show("Soma do % de desconto foi maior que 100! Favor verificar desconto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                             return(false);
                         }
                         if (pc_desconto > pc_max_desc)
                         {
                             MessageBox.Show("A tabela de preço está configurado para dar desconto máximo de " + pc_max_desc.ToString("N2", new System.Globalization.CultureInfo("pt-BR")) + "%.",
                                             "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                             //Chamar tela de usuario com autorizacao para o % desconto solicitado
                             using (Financeiro.TFLoginDesconto fLogin = new Financeiro.TFLoginDesconto())
                             {
                                 fLogin.Cd_tabelapreco = val.Cd_tabelapreco;
                                 fLogin.Cd_empresa     = val.Cd_empresa;
                                 fLogin.Pc_desc        = pc_desconto;
                                 if (fLogin.ShowDialog() != DialogResult.OK)
                                 {
                                     return(false);
                                 }
                                 else
                                 {
                                     LoginPDV = fLogin.Logindesconto;
                                     return(true);
                                 }
                             }
                         }
                         else
                         {
                             return(true);
                         }
                     }
                 }
                 //Desconto por grupo de produto
                 if (lDesc.Exists(p => p.Cd_grupo.Trim().Equals(val.lItem[i].Cd_grupo.Trim())))
                 {
                     decimal pc_max_desc = lDesc.Find(p => p.Cd_grupo.Trim().Equals(val.lItem[i].Cd_grupo.Trim())).Pc_max_desconto;
                     decimal pc_desconto = tot_desconto * 100 / pVl_receber;
                     if (pc_desconto > 100)
                     {
                         MessageBox.Show("Soma do % de desconto foi maior que 100! Favor verificar desconto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         return(false);
                     }
                     if (pc_desconto > pc_max_desc)
                     {
                         MessageBox.Show("Desconto informado é maior que o desconto permitido pelo grupo produto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         //Chamar tela de usuario com autorizacao para o % desconto solicitado
                         using (Financeiro.TFLoginDesconto fLogin = new Financeiro.TFLoginDesconto())
                         {
                             fLogin.Cd_grupo   = val.lItem[i].Cd_grupo;
                             fLogin.Cd_empresa = val.Cd_empresa;
                             fLogin.Pc_desc    = pc_desconto;
                             if (fLogin.ShowDialog() != DialogResult.OK)
                             {
                                 return(false);
                             }
                             else
                             {
                                 LoginPDV = fLogin.Logindesconto;
                                 return(true);
                             }
                         }
                     }
                     else
                     {
                         return(true);
                     }
                 }
                 //Desconto por vendedor e empresa
                 decimal pc_descontoOp = tot_desconto * 100 / pVl_receber;
                 if (pc_descontoOp > 100)
                 {
                     MessageBox.Show("Soma do % de desconto foi maior que 100! Favor verificar desconto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return(false);
                 }
                 if (pc_descontoOp > lDesc[0].Pc_max_desconto)
                 {
                     MessageBox.Show("Vendedor está configurado para dar desconto máximo de " + lDesc[0].Pc_max_desconto.ToString("N2", new System.Globalization.CultureInfo("pt-BR")) + "%.",
                                     "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     //Chamar tela de usuario com autorizacao para o % desconto solicitado
                     using (Financeiro.TFLoginDesconto fLogin = new Financeiro.TFLoginDesconto())
                     {
                         fLogin.Cd_empresa = val.Cd_empresa;
                         fLogin.Pc_desc    = pc_descontoOp;
                         if (fLogin.ShowDialog() != DialogResult.OK)
                         {
                             return(false);
                         }
                         else
                         {
                             LoginPDV = fLogin.Logindesconto;
                             return(true);
                         }
                     }
                 }
                 else
                 {
                     return(true);
                 }
             }
             else
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     return(true);
 }
예제 #3
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.");
            }
        }