Ejemplo n.º 1
0
        public static void GerarPedidoPecas(ref CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed,
                                            CamadaDados.Servicos.TRegistro_LanServico rOs,
                                            List <CamadaDados.Servicos.TRegistro_LanServicosPecas> lPecas,
                                            CamadaDados.Servicos.Cadastros.TRegistro_OSE_ParamOS rParam)
        {
            if (!string.IsNullOrEmpty(rParam.Cfg_pedido_item))
            {
                if (rPed == null)
                {
                    rPed             = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
                    rPed.CD_Empresa  = rOs != null ? rOs.Cd_empresa : string.Empty;
                    rPed.DT_Pedido   = DateTime.Now;
                    rPed.CFG_Pedido  = rParam.Cfg_pedido_item;
                    rPed.Cd_vendedor = rOs != null?rOs.lEvolucao.Exists(p => !string.IsNullOrEmpty(p.Cd_tecnico)) ? rOs.lEvolucao.FindLast(p => !string.IsNullOrEmpty(p.Cd_tecnico)).Cd_tecnico : string.Empty : string.Empty;

                    rPed.TP_Movimento      = "S"; //Pedido de saida
                    rPed.ST_Pedido         = "F"; //Pedido fechado
                    rPed.ST_Registro       = "F"; //Pedido fechado
                    rPed.CD_Clifor         = rOs != null ? rOs.Cd_clifor : string.Empty;
                    rPed.CD_Endereco       = rOs != null ? rOs.Cd_endereco : string.Empty;
                    rPed.Cd_moeda          = rParam.Cd_moeda;
                    rPed.CD_TRANSPORTADORA = rParam.Cd_transportadora;
                    rPed.CD_ENDERECOTRANSP = rParam.Cd_enderecoTransp;
                }
                foreach (CamadaDados.Servicos.TRegistro_LanServicosPecas p in lPecas)
                {
                    CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item();
                    reg.Cd_Empresa       = p.Cd_empresa;
                    reg.Cd_local         = p.Cd_local;
                    reg.Cd_vendedor      = p.Cd_tecnico;
                    reg.Cd_produto       = p.Cd_produto;
                    reg.Ds_produto       = p.Ds_produto;
                    reg.Cd_unidade_est   = p.Cd_unidproduto;
                    reg.Cd_unidade_valor = p.Cd_unidproduto;
                    reg.Quantidade       = p.Qtd_faturar > decimal.Zero ? p.Qtd_faturar : p.Quantidade;
                    if (rParam.St_sum_d_a_unitbool)
                    {
                        reg.Vl_unitario = p.Vl_unitario - decimal.Round(decimal.Divide(p.Vl_desconto, p.Quantidade), 5, MidpointRounding.AwayFromZero) +
                                          decimal.Round(decimal.Divide(p.Vl_acrescimo, p.Quantidade), 5, MidpointRounding.AwayFromZero);
                        reg.Vl_subtotal  = reg.Vl_unitario * p.Qtd_faturar > decimal.Zero ? p.Qtd_faturar : p.Quantidade;
                        reg.Vl_desc      = decimal.Zero;
                        reg.Vl_acrescimo = decimal.Zero;
                    }
                    else
                    {
                        reg.Vl_unitario  = p.Vl_unitario;
                        reg.Vl_subtotal  = p.Vl_unitario * (p.Qtd_faturar > decimal.Zero ? p.Qtd_faturar : p.Quantidade);
                        reg.Vl_desc      = p.Vl_desconto;
                        reg.Vl_acrescimo = p.Vl_acrescimo;
                    }
                    reg.Tp_pedOS = "IT";
                    reg.lPecaOS.Add(p);
                    rPed.Pedido_Itens.Add(reg);
                }
            }
            else
            {
                throw new Exception("Não existe configuracao para emitir pedido de peças para o tipo de ordem " + rOs.Tp_ordemstr);
            }
        }
Ejemplo n.º 2
0
 public static void GerarPedidoGarantia(ref CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed,
                                        CamadaDados.Servicos.TRegistro_LanServico rOs,
                                        List <CamadaDados.Servicos.TRegistro_LanServicosPecas> lPecas,
                                        CamadaDados.Servicos.Cadastros.TRegistro_OSE_ParamOS rParam)
 {
     if (!string.IsNullOrEmpty(rParam.Cfg_pedido_garantia))
     {
         if (rPed == null)
         {
             rPed                   = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
             rPed.CD_Empresa        = rOs.Cd_empresa;
             rPed.DT_Pedido         = DateTime.Now;
             rPed.CFG_Pedido        = rParam.Cfg_pedido_garantia;
             rPed.TP_Movimento      = "S"; //Pedido de saida
             rPed.ST_Pedido         = "F"; //Pedido fechado
             rPed.ST_Registro       = "F"; //Pedido fechado
             rPed.CD_Clifor         = rOs.Cd_clifor;
             rPed.CD_Endereco       = rOs.Cd_endereco;
             rPed.Cd_moeda          = rParam.Cd_moeda;
             rPed.CD_TRANSPORTADORA = rParam.Cd_transportadora;
             rPed.CD_ENDERECOTRANSP = rParam.Cd_enderecoTransp;
         }
         foreach (CamadaDados.Servicos.TRegistro_LanServicosPecas p in lPecas)
         {
             CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item();
             reg.Cd_Empresa       = rOs.Cd_empresa;
             reg.Cd_local         = p.Cd_local;
             reg.Cd_vendedor      = p.Cd_tecnico;
             reg.Cd_produto       = p.Cd_produto;
             reg.Ds_produto       = p.Ds_produto;
             reg.Cd_unidade_est   = p.Cd_unidproduto;
             reg.Cd_unidade_valor = p.Cd_unidproduto;
             reg.Quantidade       = p.Quantidade;
             reg.Vl_unitario      = p.Vl_unitario;
             reg.Vl_subtotal      = p.Vl_subtotal;
             reg.Vl_desc          = p.Vl_desconto;
             reg.Vl_acrescimo     = p.Vl_acrescimo;
             reg.Tp_pedOS         = "GR";
             reg.lPecaOS.Add(p);
             rPed.Pedido_Itens.Add(reg);
         }
     }
     else
     {
         throw new Exception("Não existe configuracao para emitir pedido de garantia para o tipo de ordem " + rOs.Tp_ordemstr);
     }
 }
Ejemplo n.º 3
0
 private bool ExisteOs(CamadaDados.Servicos.TRegistro_LanServico val)
 {
     if (bsOs.Count > 0)
     {
         for (int i = 0; i < bsOs.Count; i++)
         {
             if ((bsOs[i] as CamadaDados.Servicos.TRegistro_LanServico).Cd_empresa.Trim().Equals(val.Cd_empresa.Trim()) &&
                 (bsOs[i] as CamadaDados.Servicos.TRegistro_LanServico).Id_os.Equals(val.Id_os))
             {
                 return(true);
             }
         }
         return(false);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 4
0
 public static CamadaDados.Faturamento.PDV.TRegistro_PreVenda ProcessarOSPeca(CamadaDados.Servicos.TRegistro_LanServico val,
                                                                              ref CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPedGarantia)
 {
     CamadaDados.Faturamento.PDV.TRegistro_PreVenda rPreVenda = null;
     if (val.lPecas.Exists(p => !p.St_atendimentogarantiabool))
     {
         //Buscar config OS
         CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam =
             CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.Tp_ordemstr,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     1,
                                                                     string.Empty,
                                                                     null);
         if (lParam.Count > 0)
         {
             rPreVenda               = new CamadaDados.Faturamento.PDV.TRegistro_PreVenda();
             rPreVenda.Cd_empresa    = val.Cd_empresa;
             rPreVenda.Cd_clifor     = val.Cd_clifor;
             rPreVenda.Nm_clifor     = val.Nm_clifor;
             rPreVenda.Cd_endereco   = val.Cd_endereco;
             rPreVenda.Cd_vendedor   = val.lEvolucao.Exists(p => !string.IsNullOrEmpty(p.Cd_tecnico)) ? val.lEvolucao.FindLast(p => !string.IsNullOrEmpty(p.Cd_tecnico)).Cd_tecnico : string.Empty;
             rPreVenda.Dt_emissao    = CamadaDados.UtilData.Data_Servidor();
             rPreVenda.St_registro   = "A";
             rPreVenda.Ds_observacao = val.Ds_observacoesgerais;
             val.lPecas.Where(p => !p.St_atendimentogarantiabool).ToList().ForEach(p =>
             {
                 if (string.IsNullOrEmpty(p.Cd_produto))
                 {
                     object obj = new CamadaDados.Faturamento.CompraAvulsa.TCD_Compra_Itens().BuscarEscalar(
                         new Utils.TpBusca[]
                     {
                         new Utils.TpBusca()
                         {
                             vNM_Campo = string.Empty,
                             vOperador = "exists",
                             vVL_Busca = "(select 1 from tb_fat_compraitens_x_pecaOS x " +
                                         "where x.cd_empresa = a.cd_empresa " +
                                         "and x.id_compra = a.id_compra " +
                                         "and x.id_itemcompra = a.id_itemcompra " +
                                         "and x.id_os = " + p.Id_osstr + " " +
                                         "and x.id_peca = " + p.Id_pecastr + ")"
                         }
                     }, "a.cd_produto");
                     if (obj != null)
                     {
                         p.Cd_produto = obj.ToString();
                     }
                     else if (!string.IsNullOrEmpty(lParam[0].Cd_servicopadrao))
                     {
                         p.Cd_produto = lParam[0].Cd_servicopadrao;
                     }
                     else
                     {
                         throw new Exception("Não existe serviço padrão configurado para faturar peça avulsa.");
                     }
                 }
                 rPreVenda.lItens.Add(new CamadaDados.Faturamento.PDV.TRegistro_ItensPreVenda()
                 {
                     Cd_produto   = p.Cd_produto,
                     Quantidade   = p.Quantidade,
                     Vl_unitario  = p.Vl_unitario,
                     Vl_desconto  = p.Vl_desconto,
                     Vl_acrescimo = p.Vl_acrescimo,
                     lPecasOS     = new CamadaDados.Servicos.TList_LanServicosPecas()
                     {
                         p
                     }
                 });
             });
         }
         else
         {
             throw new Exception("Não existe configuração OS para a empresa " + val.Cd_empresa.Trim());
         }
     }
     if (val.lPecas.Exists(p => p.St_atendimentogarantiabool))
     {
         CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam =
             CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.Tp_ordemstr,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     0,
                                                                     string.Empty,
                                                                     null);
         if (lParam.Count.Equals(0))
         {
             throw new Exception("Não existe configuração para o tipo de OS.");
         }
         rPedGarantia                   = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
         rPedGarantia.CD_Empresa        = val.Cd_empresa;
         rPedGarantia.DT_Pedido         = DateTime.Now;
         rPedGarantia.CFG_Pedido        = lParam[0].Cfg_pedido_garantia;
         rPedGarantia.TP_Movimento      = "S"; //Pedido de saida
         rPedGarantia.ST_Pedido         = "F"; //Pedido fechado
         rPedGarantia.ST_Registro       = "F"; //Pedido fechado
         rPedGarantia.CD_Clifor         = val.Cd_clifor;
         rPedGarantia.CD_Endereco       = val.Cd_endereco;
         rPedGarantia.Cd_moeda          = lParam[0].Cd_moeda;
         rPedGarantia.CD_TRANSPORTADORA = lParam[0].Cd_transportadora;
         rPedGarantia.CD_ENDERECOTRANSP = lParam[0].Cd_enderecoTransp;
         foreach (CamadaDados.Servicos.TRegistro_LanServicosPecas p in val.lPecas.FindAll(v => v.St_atendimentogarantiabool))
         {
             CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item();
             reg.Cd_Empresa       = val.Cd_empresa;
             reg.Cd_local         = p.Cd_local;
             reg.Cd_vendedor      = p.Cd_tecnico;
             reg.Cd_produto       = p.Cd_produto;
             reg.Ds_produto       = p.Ds_produto;
             reg.Cd_unidade_est   = p.Cd_unidproduto;
             reg.Cd_unidade_valor = p.Cd_unidproduto;
             reg.Quantidade       = p.Quantidade;
             reg.Vl_unitario      = p.Vl_unitario;
             reg.Vl_subtotal      = p.Vl_subtotal;
             reg.Vl_desc          = p.Vl_desconto;
             reg.Vl_acrescimo     = p.Vl_acrescimo;
             reg.Tp_pedOS         = "GR";
             reg.lPecaOS.Add(p);
             rPedGarantia.Pedido_Itens.Add(reg);
         }
     }
     return(rPreVenda);
 }
Ejemplo n.º 5
0
 public static CamadaDados.Faturamento.PDV.TRegistro_PreVenda ProcessarOSServico(CamadaDados.Servicos.TRegistro_LanServico val)
 {
     CamadaDados.Faturamento.PDV.TRegistro_PreVenda rPreVenda = null;
     //Buscar config OS
     CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam =
         CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.Tp_ordemstr,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 string.Empty,
                                                                 1,
                                                                 string.Empty,
                                                                 null);
     if (lParam.Count > 0)
     {
         rPreVenda               = new CamadaDados.Faturamento.PDV.TRegistro_PreVenda();
         rPreVenda.Cd_empresa    = val.Cd_empresa;
         rPreVenda.Cd_clifor     = val.Cd_clifor;
         rPreVenda.Nm_clifor     = val.Nm_clifor;
         rPreVenda.Cd_endereco   = val.Cd_endereco;
         rPreVenda.Dt_emissao    = CamadaDados.UtilData.Data_Servidor();
         rPreVenda.St_registro   = "A";
         rPreVenda.Ds_observacao = val.Ds_observacoesgerais;
         val.lServico.ForEach(p =>
         {
             if (string.IsNullOrEmpty(p.Cd_produto))
             {
                 object obj = new CamadaDados.Faturamento.CompraAvulsa.TCD_Compra_Itens().BuscarEscalar(
                     new Utils.TpBusca[]
                 {
                     new Utils.TpBusca()
                     {
                         vNM_Campo = string.Empty,
                         vOperador = "exists",
                         vVL_Busca = "(select 1 from tb_fat_compraitens_x_pecaOS x " +
                                     "where x.cd_empresa = a.cd_empresa " +
                                     "and x.id_compra = a.id_compra " +
                                     "and x.id_itemcompra = a.id_itemcompra " +
                                     "and x.id_os = " + p.Id_osstr + " " +
                                     "and x.id_peca = " + p.Id_pecastr + ")"
                     }
                 }, "a.cd_produto");
                 if (obj != null)
                 {
                     p.Cd_produto = obj.ToString();
                 }
                 else if (!string.IsNullOrEmpty(lParam[0].Cd_servicopadrao))
                 {
                     p.Cd_produto = lParam[0].Cd_servicopadrao;
                 }
                 else
                 {
                     throw new Exception("Não existe serviço padrão configurado para faturar peça avulsa.");
                 }
             }
             rPreVenda.lItens.Add(new CamadaDados.Faturamento.PDV.TRegistro_ItensPreVenda()
             {
                 Cd_produto   = p.Cd_produto,
                 Quantidade   = p.Quantidade,
                 Vl_unitario  = p.Vl_unitario,
                 Vl_desconto  = p.Vl_desconto,
                 Vl_acrescimo = p.Vl_acrescimo,
                 lPecasOS     = new CamadaDados.Servicos.TList_LanServicosPecas()
                 {
                     p
                 }
             });
         });
         val.lPecas.ForEach(p =>
         {
             if (string.IsNullOrEmpty(p.Cd_produto))
             {
                 object obj = new CamadaDados.Faturamento.CompraAvulsa.TCD_Compra_Itens().BuscarEscalar(
                     new Utils.TpBusca[]
                 {
                     new Utils.TpBusca()
                     {
                         vNM_Campo = string.Empty,
                         vOperador = "exists",
                         vVL_Busca = "(select 1 from tb_fat_compraitens_x_pecaOS x " +
                                     "where x.cd_empresa = a.cd_empresa " +
                                     "and x.id_compra = a.id_compra " +
                                     "and x.id_itemcompra = a.id_itemcompra " +
                                     "and x.id_os = " + p.Id_osstr + " " +
                                     "and x.id_peca = " + p.Id_pecastr + ")"
                     }
                 }, "a.cd_produto");
                 if (obj != null)
                 {
                     p.Cd_produto = obj.ToString();
                 }
                 else if (!string.IsNullOrEmpty(lParam[0].Cd_servicopadrao))
                 {
                     p.Cd_produto = lParam[0].Cd_servicopadrao;
                 }
                 else
                 {
                     throw new Exception("Não existe serviço padrão configurado para faturar peça avulsa.");
                 }
             }
             rPreVenda.lItens.Add(new CamadaDados.Faturamento.PDV.TRegistro_ItensPreVenda()
             {
                 Cd_produto   = p.Cd_produto,
                 Quantidade   = p.Quantidade,
                 Vl_unitario  = p.Vl_unitario,
                 Vl_desconto  = p.Vl_desconto,
                 Vl_acrescimo = p.Vl_acrescimo,
                 lPecasOS     = new CamadaDados.Servicos.TList_LanServicosPecas()
                 {
                     p
                 }
             });
         });
     }
     else
     {
         throw new Exception("Não existe configuração OS para a empresa " + val.Cd_empresa.Trim());
     }
     return(rPreVenda);
 }
Ejemplo n.º 6
0
 private static CamadaDados.Faturamento.Pedido.TRegistro_Pedido GerarPedidoRemessa(CamadaDados.Servicos.TRegistro_LanServico val,
                                                                                   bool St_nfterceiro,
                                                                                   decimal Quantidade,
                                                                                   decimal Vl_unitario)
 {
     if (val != null)
     {
         //Buscar configuracao para emitir pedido de remessa
         CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam =
             CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.Tp_ordemstr,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     1,
                                                                     string.Empty,
                                                                     null);
         if (lParam.Count > 0)
         {
             if (!string.IsNullOrEmpty(lParam[0].Cfg_pedido_transpremessa))
             {
                 //Verificar se nao existe um pedido de remessa em aberto para este cliente
                 CamadaDados.Faturamento.Pedido.TList_Pedido lPed =
                     CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(val.Cd_empresa,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       val.Cd_clifor,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       lParam[0].Cfg_pedido_transpremessa,
                                                                       false,
                                                                       true,
                                                                       false,
                                                                       true,
                                                                       false,
                                                                       false,
                                                                       false,
                                                                       false,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       decimal.Zero,
                                                                       decimal.Zero,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       false,
                                                                       1,
                                                                       string.Empty,
                                                                       null);
                 if (lPed.Count > 0)
                 {
                     if (St_nfterceiro)
                     {
                         if (Vl_unitario > 0)
                         {
                             CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item lItem =
                                 CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_Item.Busca(string.Empty,
                                                                                           string.Empty,
                                                                                           val.CD_ProdutoOS,
                                                                                           lPed[0].Nr_pedido.ToString(),
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           false,
                                                                                           null);
                             if (lItem.Count > 0)
                             {
                                 if (Math.Round(lItem[0].Vl_unitario, 2).Equals(Math.Round(Vl_unitario)))
                                 {
                                     lItem[0].Quantidade += Quantidade;
                                     lPed[0].Pedido_Itens.Add(lItem[0]);
                                 }
                                 else
                                 {
                                     //Incluir novo item no pedido com valor unitario diferente
                                     lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                                     {
                                         Cd_Empresa       = val.Cd_empresa,
                                         Cd_local         = string.Empty,
                                         Cd_produto       = val.CD_ProdutoOS,
                                         Ds_produto       = val.DS_ProdutoOS,
                                         Cd_unidade_est   = val.Cd_unidOS,
                                         Cd_unidade_valor = val.Cd_unidOS,
                                         Quantidade       = Quantidade,
                                         Vl_unitario      = Vl_unitario,
                                         Vl_subtotal      = Quantidade * Vl_unitario
                                     });
                                 }
                             }
                             else
                             {
                                 //Incluir novo item no pedido com valor unitario diferente
                                 lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                                 {
                                     Cd_Empresa       = val.Cd_empresa,
                                     Cd_local         = string.Empty,
                                     Cd_produto       = val.CD_ProdutoOS,
                                     Ds_produto       = val.DS_ProdutoOS,
                                     Cd_unidade_est   = val.Cd_unidOS,
                                     Cd_unidade_valor = val.Cd_unidOS,
                                     Quantidade       = Quantidade,
                                     Vl_unitario      = Vl_unitario,
                                     Vl_subtotal      = Quantidade * Vl_unitario
                                 });
                             }
                         }
                         else
                         {
                             //Incluir novo item no pedido
                             lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                             {
                                 Cd_Empresa       = val.Cd_empresa,
                                 Cd_local         = string.Empty,
                                 Cd_produto       = val.CD_ProdutoOS,
                                 Ds_produto       = val.DS_ProdutoOS,
                                 Cd_unidade_est   = val.Cd_unidOS,
                                 Cd_unidade_valor = val.Cd_unidOS,
                                 Quantidade       = Quantidade,
                                 Vl_unitario      = Vl_unitario,
                                 Vl_subtotal      = Quantidade * Vl_unitario
                             });
                         }
                         lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                         return(lPed[0]);
                     }
                     else
                     {
                         CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item lItem =
                             CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_Item.Busca(string.Empty,
                                                                                       string.Empty,
                                                                                       val.CD_ProdutoOS,
                                                                                       lPed[0].Nr_pedido.ToString(),
                                                                                       string.Empty,
                                                                                       string.Empty,
                                                                                       string.Empty,
                                                                                       false,
                                                                                       null);
                         if (lItem.Count > 0)
                         {
                             lItem[0].Quantidade += Quantidade;
                             lPed[0].Pedido_Itens.Add(lItem[0]);
                             lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                             return(lPed[0]);
                         }
                         else
                         {
                             decimal vl_unitario = decimal.Zero;
                             //Buscar valor medio do estoque
                             CamadaNegocio.Estoque.TCN_LanEstoque.VlMedioEstoque(val.Cd_empresa, val.CD_ProdutoOS, ref vl_unitario, null);
                             //Buscar valor da ultima compra
                             if (vl_unitario.Equals(decimal.Zero))
                             {
                                 CamadaDados.Faturamento.NotaFiscal.TListUltimasCompras lUltimaCompra =
                                     new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().Select(
                                         new Utils.TpBusca[]
                                 {
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "a.tp_movimento",
                                         vOperador = "=",
                                         vVL_Busca = "'E'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "b.cd_produto",
                                         vOperador = "=",
                                         vVL_Busca = "'" + val.CD_ProdutoOS.Trim() + "'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_Complementar, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'N'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_Devolucao, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'N'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_GeraEstoque, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'S'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(a.ST_Registro, 'A')",
                                         vOperador = "<>",
                                         vVL_Busca = "'C'"
                                     },
                                 }, 1);
                                 if (lUltimaCompra.Count > 0)
                                 {
                                     vl_unitario = lUltimaCompra[0].Vl_unitario;
                                 }
                             }
                             //Incluir novo item no pedido
                             lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                             {
                                 Cd_Empresa       = val.Cd_empresa,
                                 Cd_local         = string.Empty,
                                 Cd_produto       = val.CD_ProdutoOS,
                                 Ds_produto       = val.DS_ProdutoOS,
                                 Cd_unidade_est   = val.Cd_unidOS,
                                 Cd_unidade_valor = val.Cd_unidOS,
                                 Quantidade       = Quantidade,
                                 Vl_unitario      = vl_unitario,
                                 Vl_subtotal      = Quantidade * vl_unitario
                             });
                             lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                             return(lPed[0]);
                         }
                     }
                 }
                 else
                 {
                     CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
                     rPed.CD_Empresa        = val.Cd_empresa;
                     rPed.DT_Pedido         = val.Dt_abertura;
                     rPed.CFG_Pedido        = lParam[0].Cfg_pedido_transpremessa;
                     rPed.TP_Movimento      = "E"; //Pedido de entrada
                     rPed.ST_Pedido         = "F"; //Pedido fechado
                     rPed.ST_Registro       = "F"; //Pedido fechado
                     rPed.CD_Clifor         = val.Cd_clifor;
                     rPed.CD_Endereco       = val.Cd_endereco;
                     rPed.Cd_moeda          = lParam[0].Cd_moeda;
                     rPed.CD_TRANSPORTADORA = lParam[0].Cd_transportadora;
                     rPed.CD_ENDERECOTRANSP = lParam[0].Cd_enderecoTransp;
                     //Buscar valor medio do estoque
                     if (!St_nfterceiro)
                     {
                         CamadaNegocio.Estoque.TCN_LanEstoque.VlMedioEstoque(val.Cd_empresa, val.CD_ProdutoOS, ref Vl_unitario, null);
                         //Buscar valor da ultima compra
                         if (Vl_unitario.Equals(decimal.Zero))
                         {
                             CamadaDados.Faturamento.NotaFiscal.TListUltimasCompras lUltimaCompra =
                                 new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().Select(
                                     new Utils.TpBusca[]
                             {
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "a.tp_movimento",
                                     vOperador = "=",
                                     vVL_Busca = "'E'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "b.cd_produto",
                                     vOperador = "=",
                                     vVL_Busca = "'" + val.CD_ProdutoOS.Trim() + "'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_Complementar, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'N'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_Devolucao, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'N'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_GeraEstoque, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'S'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(a.ST_Registro, 'A')",
                                     vOperador = "<>",
                                     vVL_Busca = "'C'"
                                 },
                             }, 1);
                             if (lUltimaCompra.Count > 0)
                             {
                                 Vl_unitario = lUltimaCompra[0].Vl_unitario;
                             }
                         }
                     }
                     rPed.Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                     {
                         Cd_Empresa       = val.Cd_empresa,
                         Cd_local         = string.Empty,
                         Cd_produto       = val.CD_ProdutoOS,
                         Ds_produto       = val.DS_ProdutoOS,
                         Cd_unidade_est   = val.Cd_unidOS,
                         Cd_unidade_valor = val.Cd_unidOS,
                         Quantidade       = Quantidade,
                         Vl_unitario      = Vl_unitario,
                         Vl_subtotal      = Quantidade * Vl_unitario
                     });
                     rPed.Tp_pedido = "RM"; //Pedido de remessa
                     return(rPed);
                 }
             }
             else
             {
                 throw new Exception("Não existe configuração para emitir pedido de remessa para o tipo de ordem " + val.Tp_ordemstr);
             }
         }
         else
         {
             throw new Exception("Não existe configuração para o tipo de ordem " + val.Tp_ordemstr);
         }
     }
     else
     {
         return(null);
     }
 }