private void BuscarCfgParam() { if (TP_Ordem.Text.Trim() != string.Empty) { CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam = CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(TP_Ordem.Text, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, null); if (lParam.Count > 0) { st_gerarpedidoservicoseparado.Checked = lParam[0].St_gerarpedidoservicoseparadobool; vl_minimopedido.Value = lParam[0].Vl_minimopedido; } } }
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); }
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); }
public static void ProcessarLoteOS(TRegistro_LoteOS val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LoteOS qtb_lote = new TCD_LoteOS(); try { if (banco == null) { st_transacao = qtb_lote.CriarBanco_Dados(true); } else { qtb_lote.Banco_Dados = banco; } if (val.St_gerarpedidoremessa) { //Buscar config. os para gerar pedido de remessa de envio de mercadoria para conserto CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam = CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.lOs[0].Tp_ordemstr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_lote.Banco_Dados); if (lParam.Count > 0) { if (lParam[0].Cfg_pedido_transpremessaenvio.Trim().Equals(string.Empty)) { throw new Exception("Não existe configuração de remessa de envio para o tipo de ordem serviço: " + val.lOs[0].Tp_ordemstr.Trim()); } if (lParam[0].Cd_moeda.Trim().Equals(string.Empty)) { throw new Exception("Não existe configuração de moeda para o tipo de ordem serviço: " + val.lOs[0].Tp_ordemstr.Trim()); } //Gerar pedido de remessa CamadaDados.Faturamento.Pedido.TRegistro_Pedido pedido = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido(); pedido.CD_Empresa = val.Cd_empresa; pedido.DT_Pedido = val.Dt_enviolote; pedido.TP_Movimento = "S"; pedido.CFG_Pedido = lParam[0].Cfg_pedido_transpremessaenvio; pedido.CD_Clifor = val.Cd_fornecedor; pedido.CD_Endereco = val.Cd_endfornecedor; pedido.CD_TRANSPORTADORA = lParam[0].Cd_transportadora; pedido.CD_ENDERECOTRANSP = lParam[0].Cd_enderecoTransp; pedido.ST_Pedido = "F"; pedido.ST_Registro = "F"; pedido.Cd_moeda = lParam[0].Cd_moeda; //Itens do pedido pedido.Pedido_Itens = val.lItensPedido; string ret_ped = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido(pedido, qtb_lote.Banco_Dados); val.Nr_pedido = Convert.ToDecimal(ret_ped); } else { throw new Exception("Não existe configuração para o tipo de ordem serviço: " + val.lOs[0].Tp_ordemstr.Trim()); } } //Gravar lote val.St_registro = "P"; GravarLoteOS(val, qtb_lote.Banco_Dados); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar lote: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }
public static List <CamadaDados.Faturamento.Pedido.TRegistro_Pedido> ProcessarOS(List <CamadaDados.Servicos.TRegistro_LanServico> lOS) { if (lOS.Count.Equals(0)) { throw new Exception("Não existe OS selecionada para PROCESSAR."); } CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam = CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(lOS[0].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 > 0) { List <CamadaDados.Faturamento.Pedido.TRegistro_Pedido> lRet = new List <CamadaDados.Faturamento.Pedido.TRegistro_Pedido>(); CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPedGarantia = null; CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPedPecas = null; CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPedServ = null; lOS.ForEach(p => { //Buscar Pecas/Servicos da OS p.lPecas = CamadaNegocio.Servicos.TCN_LanServicoPecas.Buscar(p.Id_osstr, p.Cd_empresa, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, decimal.Zero, decimal.Zero, decimal.Zero, string.Empty, string.Empty, false, 0, null); //Verificar se existe peca para faturar em garantia if (p.lPecas.Exists(v => v.St_atendimentogarantiabool)) { //Gerar pedido das pecas em garantia TProcessaPedidoOS.GerarPedidoGarantia(ref rPedGarantia, p, p.lPecas.FindAll(v => v.St_atendimentogarantiabool && (!v.St_servicobool)), lParam[0]); } if (lParam[0].St_gerarpedidoservicoseparadobool) { if (p.lPecas.Exists(v => (!v.St_atendimentogarantiabool) && v.St_servicobool)) { TProcessaPedidoOS.GerarPedidoServico(ref rPedServ, p, p.lPecas.FindAll(v => (!v.St_atendimentogarantiabool) && v.St_servicobool), lParam[0]); } if (p.lPecas.Exists(v => (!v.St_atendimentogarantiabool) && (!v.St_servicobool))) { TProcessaPedidoOS.GerarPedidoPecas(ref rPedPecas, p, p.lPecas.FindAll(v => (!v.St_atendimentogarantiabool) && (!v.St_servicobool)), lParam[0]); } } else if (p.lPecas.Exists(v => !v.St_atendimentogarantiabool)) { TProcessaPedidoOS.GerarPedidoPecas(ref rPedPecas, p, p.lPecas.FindAll(v => !v.St_atendimentogarantiabool), lParam[0]); } }); if (rPedGarantia != null) { lRet.Add(rPedGarantia); } if (rPedPecas != null) { //Gerar Financeiro do pedido using (TFCondPgtoPedido fCond = new TFCondPgtoPedido()) { fCond.rPed = rPedPecas; fCond.ShowDialog(); } lRet.Add(rPedPecas); } if (rPedServ != null) { //Gerar Financeiro do pedido using (TFCondPgtoPedido fCond = new TFCondPgtoPedido()) { fCond.rPed = rPedServ; fCond.ShowDialog(); } lRet.Add(rPedServ); } return(lRet); } else { throw new Exception("Não existe configuração para o tipo de OS."); } }
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); } }