コード例 #1
0
 private void BuscarDetalhes()
 {
     if ((!string.IsNullOrEmpty(cd_empresa.Text)) &&
         (!string.IsNullOrEmpty(id_tanque.Text)) &&
         (dt_medicao.Text.Trim() != "/  /") &&
         (tp_medicao.SelectedValue != null))
     {
         //Buscar Ultima afericao tanque
         object obj = new CamadaDados.PostoCombustivel.TCD_MedicaoTanque().BuscarEscalar(
             new Utils.TpBusca[]
         {
             new Utils.TpBusca()
             {
                 vNM_Campo = "a.cd_empresa",
                 vOperador = "=",
                 vVL_Busca = "'" + cd_empresa.Text.Trim() + "'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "a.id_tanque",
                 vOperador = "=",
                 vVL_Busca = id_tanque.Text
             }
         }, "a.qtd_combustivel", string.Empty, "a.dt_medicao desc", null);
         if (obj != null)
         {
             ultima_afericao.Value = decimal.Parse(obj.ToString());
         }
         //Buscar volume vendido
         obj = new CamadaDados.PostoCombustivel.TCD_VendaCombustivel().BuscarEscalar(
             new Utils.TpBusca[]
         {
             new Utils.TpBusca()
             {
                 vNM_Campo = "a.cd_empresa",
                 vOperador = "=",
                 vVL_Busca = "'" + cd_empresa.Text.Trim() + "'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "c.id_tanque",
                 vOperador = "=",
                 vVL_Busca = id_tanque.Text
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "ISNULL(a.ST_Afericao, 'N')",
                 vOperador = "<>",
                 vVL_Busca = "'S'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.dt_abastecimento)))",
                 vOperador = "=",
                 vVL_Busca = "'" + (tp_medicao.SelectedValue.ToString().Equals("A") ? dt_medicao.Data.AddDays(-1).ToString("yyyyMMdd") : dt_medicao.Data.ToString("yyyyMMdd")) + "'"
             }
         }, "isnull(sum(isnull(a.volumeabastecido, 0)), 0)");
         if (obj != null)
         {
             vendas_dia.Value = decimal.Parse(obj.ToString());
         }
         //Buscar compras dia
         obj = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().BuscarEscalar(
             new Utils.TpBusca[]
         {
             new Utils.TpBusca()
             {
                 vNM_Campo = "a.cd_empresa",
                 vOperador = "=",
                 vVL_Busca = "'" + cd_empresa.Text.Trim() + "'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "nf.tp_movimento",
                 vOperador = "=",
                 vVL_Busca = "'E'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "isnull(nfcmi.st_mestra, 'N')",
                 vOperador = "<>",
                 vVL_Busca = "'S'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "isnull(nf.st_registro, 'A')",
                 vOperador = "<>",
                 vVL_Busca = "'C'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), nf.dt_saient)))",
                 vOperador = "=",
                 vVL_Busca = "'" + (tp_medicao.SelectedValue.ToString().Equals("A") ? dt_medicao.Data.AddDays(-1).ToString("yyyyMMdd") : dt_medicao.Data.ToString("yyyyMMdd")) + "'"
             },
             new Utils.TpBusca()
             {
                 vNM_Campo = string.Empty,
                 vOperador = "exists",
                 vVL_Busca = "(select 1 from tb_pdc_tanque x " +
                             "where x.cd_empresa = a.cd_empresa " +
                             "and x.cd_local = a.cd_local " +
                             "and x.id_tanque = " + id_tanque.Text + ")"
             }
         }, "isnull(sum(isnull(a.Quantidade, 0)), 0)");
         if (obj != null)
         {
             compras_dia.Value = decimal.Parse(obj.ToString());
         }
     }
 }
コード例 #2
0
        private void ProcessarLote()
        {
            if (vModo.Equals(Utils.TTpModo.tm_Standby))
            {
                if (bsLote.Current != null)
                {
                    if ((bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).St_registro.Trim().ToUpper().Equals("A"))
                    {
                        if ((bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lOs.Count.Equals(0))
                        {
                            MessageBox.Show("Não é permitido processar lote sem ordem de serviço.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        using (TFLanProcessarLote fProcessar = new TFLanProcessarLote())
                        {
                            fProcessar.Id_lote = (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).Id_lotestr;
                            fProcessar.Ds_lote = (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).Ds_lote;
                            if (fProcessar.ShowDialog() == DialogResult.OK)
                            {
                                (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).Dt_enviolote          = fProcessar.Dt_enviolote;
                                (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).St_gerarpedidoremessa = fProcessar.St_gerarpedido;
                                if (fProcessar.St_gerarpedido)
                                {
                                    //Montar itens do pedido remessa
                                    (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lOs.ForEach(p =>
                                    {
                                        if ((bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lItensPedido.Exists(v => v.Cd_produto.Trim().Equals(p.CD_ProdutoOS.Trim())))
                                        {
                                            CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item rPed = (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lItensPedido.Find(v => v.Cd_produto.Trim().Equals(p.CD_ProdutoOS.Trim()));
                                            rPed.Quantidade++;
                                            rPed.Vl_subtotal = rPed.Quantidade * rPed.Vl_unitario;
                                        }
                                        else
                                        {
                                            decimal vl_unitario = decimal.Zero;
                                            //Buscar valor medio do estoque
                                            CamadaNegocio.Estoque.TCN_LanEstoque.VlMedioEstoque(p.Cd_empresa, p.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 TpBusca[]
                                                {
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "a.tp_movimento",
                                                        vOperador = "=",
                                                        vVL_Busca = "'E'"
                                                    },
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "b.cd_produto",
                                                        vOperador = "=",
                                                        vVL_Busca = "'" + p.CD_ProdutoOS.Trim() + "'"
                                                    },
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "ISNULL(e.ST_Complementar, 'N')",
                                                        vOperador = "=",
                                                        vVL_Busca = "'N'"
                                                    },
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "ISNULL(e.ST_Devolucao, 'N')",
                                                        vOperador = "=",
                                                        vVL_Busca = "'N'"
                                                    },
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "ISNULL(e.ST_GeraEstoque, 'N')",
                                                        vOperador = "=",
                                                        vVL_Busca = "'S'"
                                                    },
                                                    new TpBusca()
                                                    {
                                                        vNM_Campo = "ISNULL(a.ST_Registro, 'A')",
                                                        vOperador = "<>",
                                                        vVL_Busca = "'C'"
                                                    },
                                                }, 1);
                                                if (lUltimaCompra.Count > 0)
                                                {
                                                    vl_unitario = lUltimaCompra[0].Vl_unitario;
                                                }
                                            }

                                            (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lItensPedido.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                                            {
                                                Cd_Empresa       = p.Cd_empresa,
                                                Cd_local         = string.Empty,
                                                Cd_produto       = p.CD_ProdutoOS,
                                                Ds_produto       = p.DS_ProdutoOS,
                                                Cd_unidade_est   = p.Cd_unidOS,
                                                Cd_unidade_valor = p.Cd_unidOS,
                                                Quantidade       = 1,
                                                Vl_unitario      = vl_unitario,
                                                Vl_subtotal      = vl_unitario
                                            });
                                        }
                                    });
                                    if ((bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lItensPedido.Exists(p => p.Vl_unitario.Equals(decimal.Zero)))
                                    {
                                        using (TFLanItensNota fItens = new TFLanItensNota())
                                        {
                                            fItens.lItens = (bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS).lItensPedido;
                                            if (fItens.ShowDialog() != DialogResult.OK)
                                            {
                                                MessageBox.Show("Não é permitido processar lote com item do pedido com valor zero.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                                return;
                                            }
                                        }
                                    }
                                }
                                try
                                {
                                    CamadaNegocio.Servicos.TCN_LoteOS.ProcessarLoteOS(bsLote.Current as CamadaDados.Servicos.TRegistro_LoteOS, null);
                                    MessageBox.Show("Lote processado com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    this.afterBusca();
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message.Trim());
                                }
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Lote ja se encontra processado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
コード例 #3
0
        private void afterInserirEvolucao()
        {
            if (bsOrdemServico.Current != null)
            {
                CamadaDados.Servicos.TRegistro_LanServicoEvolucao regEvolucao = null;
                if ((bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.Count > 0)
                {
                    regEvolucao = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.OrderByDescending(p => p.Dt_inicio).Take(1).ToList()[0];
                }
                bool st_loteprocessado = false;
                if (regEvolucao != null)
                {
                    if (regEvolucao.St_envterceiro)
                    {
                        object obj = new CamadaDados.Servicos.TCD_Lote_X_Servicos().BuscarEscalar(
                            new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "c.id_os",
                                vOperador = "=",
                                vVL_Busca = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Id_os.ToString()
                            }
                        }, "b.st_registro");
                        if (obj != null)
                        {
                            if (obj.ToString().Trim().ToUpper().Equals("A"))
                            {
                                if (!(MessageBox.Show("Ordem serviço esta amarrada a um lote que ainda não foi enviado.\r\n" +
                                                      "O lançamento de uma nova evolução ira desamarrar a ordem de serviço do lote.\r\r\r\n" +
                                                      "Deseja continuar?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                                      == DialogResult.Yes))
                                {
                                    return;
                                }
                            }
                            else
                            {
                                st_loteprocessado = true;
                            }
                        }
                        else
                        if (!(MessageBox.Show("Ordem de serviço não foi enviada para fornecedor.\r\n" +
                                              "Deseja continuar?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                              == DialogResult.Yes))
                        {
                            return;
                        }
                        //Verificar se o lote esta processado
                        if (st_loteprocessado)
                        {
                            //Verificar se existe alguma nota de retorno para a os
                            obj = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().BuscarEscalar(
                                new Utils.TpBusca[]
                            {
                                new Utils.TpBusca()
                                {
                                    vNM_Campo = string.Empty,
                                    vOperador = "exists",
                                    vVL_Busca = "(select 1 from tb_ose_lote x " +
                                                "inner join tb_ose_lote_x_servico y " +
                                                "on x.cd_empresa = y.cd_empresa " +
                                                "and x.id_lote = y.id_lote " +
                                                "inner join tb_ose_servico z " +
                                                "on y.cd_empresa = z.cd_empresa " +
                                                "and y.id_os = z.id_os " +
                                                "where x.nr_pedido = a.nr_pedido " +
                                                "and z.cd_produtoos = a.cd_produto " +
                                                "and nf.tp_movimento = 'E' " +
                                                "and isnull(nf.st_registro, 'A') <> 'C')"
                                }
                            }, "nf.nr_notafiscal");
                            if (obj == null)
                            {
                                if (!(MessageBox.Show("Não existe nota de devolução do produto desta ordem de serviço.\r\n" +
                                                      "Deseja alterar etapa evolução mesmo assim?", "Pergunta",
                                                      MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                                      == DialogResult.Yes))
                                {
                                    return;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Nota Fiscal de retorno Nº " + obj.ToString().Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                    }
                }

                using (TFLan_Evolucao_Ordem_Servico fEvolucao = new TFLan_Evolucao_Ordem_Servico())
                {
                    fEvolucao.TP_Ordem = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Tp_ordemstr;
                    if (regEvolucao != null)
                    {
                        fEvolucao.Etapa_atual = regEvolucao.Id_etapastr;
                    }
                    if (fEvolucao.ShowDialog() == DialogResult.OK)
                    {
                        (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.ForEach(p =>
                        {
                            p.St_evolucao = "E";
                            p.Dt_final    = CamadaDados.UtilData.Data_Servidor();
                            p.Cd_tecnico  = string.IsNullOrEmpty(p.Cd_tecnico) ? fEvolucao.rEvolucao.Cd_tecnico : p.Cd_tecnico;
                        });
                        CamadaDados.Servicos.Cadastros.TList_EtapaOrdem lEtapa =
                            CamadaNegocio.Servicos.Cadastros.TCN_EtapaOrdem.Buscar(fEvolucao.rEvolucao.Id_etapa.Value.ToString(),
                                                                                   string.Empty,
                                                                                   null);
                        if (lEtapa.Count > 0)
                        {
                            fEvolucao.rEvolucao.St_iniciarOS   = lEtapa[0].St_iniciarOSbool;
                            fEvolucao.rEvolucao.St_finalizarOS = lEtapa[0].St_finalizarOSbool;
                            fEvolucao.rEvolucao.St_envterceiro = lEtapa[0].St_envterceirobool;
                            if (fEvolucao.rEvolucao.St_finalizarOS)
                            {
                                fEvolucao.rEvolucao.St_evolucao = "E";
                                fEvolucao.rEvolucao.Dt_final    = CamadaDados.UtilData.Data_Servidor();
                            }
                        }
                        //Verificar se a etapa que esta sendo inserida nao e de Envio para terceiro
                        if (fEvolucao.rEvolucao.St_envterceiro)
                        {
                            if (MessageBox.Show("Evolução exige envio da ordem serviço para fornecedor.\r\n" +
                                                "Deseja amarrar ordem a um lote ja existente?",
                                                "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                                == DialogResult.Yes)
                            {
                                using (TFLanLoteAberto fLote = new TFLanLoteAberto())
                                {
                                    fLote.Cd_empresa = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Cd_empresa;
                                    if (fLote.ShowDialog() == DialogResult.OK)
                                    {
                                        if (fLote.rLote != null)
                                        {
                                            (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).rLoteServico =
                                                new CamadaDados.Servicos.TRegistro_Lote_X_Servicos()
                                            {
                                                Cd_empresa = fLote.rLote.Cd_empresa,
                                                Id_lote    = fLote.rLote.Id_lote,
                                                Id_os      = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Id_os
                                            }
                                        }
                                    }
                                    ;
                                }
                            }
                        }
                        //Verificar se a etapa e de finalizacao
                        if (fEvolucao.rEvolucao.St_finalizarOS)
                        {
                            (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).St_os         = "FE";
                            (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Dt_finalizada = DateTime.Now;
                        }
                        //Inserir novo registro
                        (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.Add(
                            fEvolucao.rEvolucao);
                        bsOrdemServico.ResetCurrentItem();
                    }
                }
            }
            else
            {
                MessageBox.Show("Não existe ordem de serviço selecionada.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
コード例 #4
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);
     }
 }