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); } }
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); } }
public static void GerarPedidoMudanca(ref CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed, CamadaDados.Mudanca.TRegistro_LanMudanca rMudanca, decimal valor, CamadaDados.Mudanca.Cadastros.TList_CFGMudanca lCfg) { if (!string.IsNullOrEmpty(lCfg[0].CFG_PedServico)) { if (rPed == null) { rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido(); rPed.CD_Empresa = rMudanca != null ? rMudanca.Cd_empresa : string.Empty; rPed.DT_Pedido = DateTime.Now; rPed.CFG_Pedido = lCfg[0].CFG_PedServico; rPed.TP_Movimento = "S"; //Pedido de saida rPed.ST_Pedido = "F"; //Pedido fechado rPed.ST_Registro = "F"; //Pedido fechado rPed.CD_Clifor = rMudanca != null ? rMudanca.Cd_clifor : string.Empty; rPed.CD_Endereco = rMudanca != null ? rMudanca.Cd_endereco : string.Empty; CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item(); reg.Cd_Empresa = rMudanca.Cd_empresa; reg.Cd_local = "000001"; reg.Cd_produto = lCfg[0].CD_ServPadrao; reg.Ds_produto = lCfg[0].DS_ServPadrao; reg.Quantidade = 1; reg.Vl_unitario = valor; reg.Vl_subtotal = valor; reg.Tp_pedOS = "SV"; rPed.Pedido_Itens.Add(reg); } } else { throw new Exception("Não existe configuracao para emitir pedido de serviço para mudança!"); } }
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 void ReprocessarTaxasContrato(CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item rPedItem, Utils.ThreadEspera tEspera, TObjetoBanco banco) { bool st_transacao = false; TCD_MovDeposito qtb_mov = new TCD_MovDeposito(); try { if (banco == null) { st_transacao = qtb_mov.CriarBanco_Dados(true); } else { qtb_mov.Banco_Dados = banco; } if (tEspera != null) { tEspera.Msg("Buscar estoques amarrados ao contrato..."); } //Buscar todos os estoques amarrados a este item do pedido CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item_X_Estoque lItemEstoque = CamadaNegocio.Faturamento.Pedido.TCN_LanPedidoItem_X_Estoque.Buscar(rPedItem.Nr_PedidoString, rPedItem.Cd_produto, rPedItem.Id_pedidoitem.ToString(), qtb_mov.Banco_Dados); if (lItemEstoque.Count > 0) { if (tEspera != null) { tEspera.Msg("Excluindo movimentaçao de deposito..."); tEspera.Msg("Excluindo taxas de deposito...\r\n" + "(Serão excluidas somente as taxas que não foram processadas e que não seja lançado manual.)"); } lItemEstoque.ForEach(p => { //Buscar lancto taxa deposito TList_TaxaDeposito lTaxas = new TCD_LanTaxaDeposito(qtb_mov.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_gro_saldocarenciataxa x " + "inner join tb_gro_movdeposito y " + "on x.id_movto = y.id_movto " + "where x.id_lantaxa = a.id_lantaxa " + "and y.nr_pedido = " + p.Nr_Pedido.ToString() + " " + "and y.cd_produto = '" + p.CD_Produto.Trim() + "' " + "and y.id_pedidoitem = " + p.Id_pedidoitem.ToString() + " " + "and y.cd_empresa = '" + p.CD_Empresa.Trim() + "' " + "and y.id_lanctoestoque = " + p.ID_LanctoEstoque.ToString() + ")" } }, 0, string.Empty); if (lTaxas.Count > 0) { if (!lTaxas.Exists(v => v.St_registro.Trim().ToUpper().Equals("P"))) { //Excluir saldo carencia new TCD_SaldoCarenciaTaxa(qtb_mov.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_gro_movdeposito x " + "where x.id_movto = a.id_movto " + "and x.nr_pedido = " + p.Nr_Pedido.ToString() + " " + "and x.cd_produto = '" + p.CD_Produto.Trim() + "' " + "and x.id_pedidoitem = " + p.Id_pedidoitem.ToString() + " " + "and x.cd_empresa = '" + p.CD_Empresa.Trim() + "' " + "and x.id_lanctoestoque = " + p.ID_LanctoEstoque.ToString() + ")" } }, 0, string.Empty).ForEach(v => new TCD_SaldoCarenciaTaxa(qtb_mov.Banco_Dados).Deleta(v)); //Excluir Movto Deposito new TCD_MovDeposito(qtb_mov.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = p.Nr_Pedido.ToString() }, new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + p.CD_Produto.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_pedidoitem", vOperador = "=", vVL_Busca = p.Id_pedidoitem.ToString() }, new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + p.CD_Empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_lanctoestoque", vOperador = "=", vVL_Busca = p.ID_LanctoEstoque.ToString() } }, 0, string.Empty).ForEach(v => TCN_MovDeposito.DeletarMovDeposito(v, qtb_mov.Banco_Dados)); //Excluir lancto taxa deposito lTaxas.ForEach(v => { //Somente se a taxa for automatica if (v.Tp_Lancto.Trim().ToUpper().Equals("A")) { new TCD_LanTaxaDeposito(qtb_mov.Banco_Dados).Excluir(v); } }); //Chamar metodo GravarMovDeposito GravarMovDeposito(new TRegistro_MovDeposito() { Id_Movto = 0, Nr_Pedido = p.Nr_Pedido, CD_Produto = p.CD_Produto, CD_Empresa = p.CD_Empresa, Id_LanctoEstoque = p.ID_LanctoEstoque, Id_pedidoitem = p.Id_pedidoitem }, qtb_mov.Banco_Dados); } } else { //Excluir saldo carencia new TCD_SaldoCarenciaTaxa(qtb_mov.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_gro_movdeposito x " + "where x.id_movto = a.id_movto " + "and x.nr_pedido = " + p.Nr_Pedido.ToString() + " " + "and x.cd_produto = '" + p.CD_Produto.Trim() + "' " + "and x.id_pedidoitem = " + p.Id_pedidoitem.ToString() + " " + "and x.cd_empresa = '" + p.CD_Empresa.Trim() + "' " + "and x.id_lanctoestoque = " + p.ID_LanctoEstoque.ToString() + ")" } }, 0, string.Empty).ForEach(v => new TCD_SaldoCarenciaTaxa(qtb_mov.Banco_Dados).Deleta(v)); //Excluir Movto Deposito new TCD_MovDeposito(qtb_mov.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = p.Nr_Pedido.ToString() }, new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + p.CD_Produto.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_pedidoitem", vOperador = "=", vVL_Busca = p.Id_pedidoitem.ToString() }, new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + p.CD_Empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_lanctoestoque", vOperador = "=", vVL_Busca = p.ID_LanctoEstoque.ToString() } }, 0, string.Empty).ForEach(v => TCN_MovDeposito.DeletarMovDeposito(v, qtb_mov.Banco_Dados)); //Chamar metodo GravarMovDeposito GravarMovDeposito(new TRegistro_MovDeposito() { Id_Movto = 0, Nr_Pedido = p.Nr_Pedido, CD_Produto = p.CD_Produto, CD_Empresa = p.CD_Empresa, Id_LanctoEstoque = p.ID_LanctoEstoque, Id_pedidoitem = p.Id_pedidoitem }, qtb_mov.Banco_Dados); } }); if (st_transacao) { qtb_mov.Banco_Dados.Commit_Tran(); } } else { throw new Exception("Não existe estoque amarrado ao item do pedido para reprocessar taxas."); } } catch (Exception ex) { if (st_transacao) { qtb_mov.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro reprocessar taxas: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_mov.deletarBanco_Dados(); } } }
public static void GerarPedidoCarga(ref CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed, CamadaDados.Faturamento.Entrega.TRegistro_CargaAvulsa rCarga, CamadaDados.Diversos.TRegistro_CfgEmpresa rParam) { if (!string.IsNullOrEmpty(rParam.CFG_PedRemCargaAvulsa)) { if (rPed == null) { rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido(); rPed.CD_Empresa = rCarga.Cd_empresa; rPed.DT_Pedido = DateTime.Now; rPed.CFG_Pedido = rParam.CFG_PedRemCargaAvulsa; rPed.TP_Movimento = "S"; //Pedido de saida rPed.ST_Pedido = "F"; //Pedido fechado rPed.ST_Registro = "F"; //Pedido fechado rPed.CD_Clifor = rParam.Cd_clifor; rPed.CD_Endereco = rParam.Cd_endereco; //Buscar Moeda Padrao TList_Moeda tabela = CamadaNegocio.ConfigGer.TCN_CadParamGer_X_Empresa.BuscarMoedaPadrao(rCarga.Cd_empresa, null); if (tabela != null) { if (tabela.Count > 0) { rPed.Cd_moeda = tabela[0].Cd_moeda; } } } //Buscar Local Arm object LocalArm = new CamadaDados.Estoque.Cadastros.TCD_CadLocalArm_X_Empresa().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rCarga.Cd_empresa.Trim() + "'" } }, "a.CD_Local"); if (LocalArm == null) { throw new Exception("Não existe Local de armazenagem configurado para Empresa" + rCarga.Cd_empresa.Trim() + "!"); } for (int i = 0; i < rCarga.lItens.Count; i++) { //Buscar Preço decimal vl_preco = CamadaNegocio.Estoque.Cadastros.TCN_LanPrecoItem.Busca_ConsultaPreco(rCarga.Cd_empresa, rCarga.lItens[i].Cd_produto, rParam.Cd_tabelapreco, null); CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item(); reg.Cd_Empresa = rCarga.lItens[i].Cd_empresa; reg.Cd_local = LocalArm.ToString(); reg.Cd_produto = rCarga.lItens[i].Cd_produto; reg.Ds_produto = rCarga.lItens[i].Ds_produto; reg.Cd_unidade_est = rCarga.lItens[i].Cd_unidade; reg.Quantidade = rCarga.lItens[i].Quantidade; reg.Vl_unitario = vl_preco; reg.Vl_subtotal = vl_preco * rCarga.lItens[i].Quantidade; rPed.Pedido_Itens.Add(reg); } } else { throw new Exception("Não existe configuracao para emitir pedido de remessa para a Empresa " + rCarga.Cd_empresa); } }
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); } } } }