private void afterEntrega() { //Verificar se existe Itens Entrega na Pre-Venda CamadaDados.Faturamento.Entrega.TList_ItensRomaneio rItensRomaneio = null; if (rPrevenda != null) { rItensRomaneio = new CamadaDados.Faturamento.Entrega.TCD_ItensRomaneio().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_itensprevenda x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_prevenda = a.id_prevenda " + "and x.id_itemprevenda = a.id_itemprevenda " + "and a.cd_empresa = '" + rPrevenda.Cd_empresa.Trim() + "' " + "and a.id_prevenda = " + rPrevenda.Id_prevendastr.Trim() + ")" } }, 0, string.Empty); } else if (rPedido != null) { rItensRomaneio = new CamadaDados.Faturamento.Entrega.TCD_ItensRomaneio().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido_itens x " + "where x.nr_pedido = a.nr_pedido " + "and x.cd_produto = a.cd_produto " + "and x.id_pedidoitem = a.id_pedidoitem " + "and a.nr_pedido = " + rPedido.Nr_pedido.ToString() + ")" } }, 0, string.Empty); } if (rItensRomaneio.Count.Equals(0)) { bsEntrega.AddNew(); (bsEntrega.Current as CamadaDados.Faturamento.Entrega.TRegistro_RomaneioEntrega).Cd_empresa = rPrevenda != null ? rPrevenda.Cd_empresa : rPedido.CD_Empresa; (bsEntrega.Current as CamadaDados.Faturamento.Entrega.TRegistro_RomaneioEntrega).Nm_cliente = rPrevenda != null ? rPrevenda.Nm_clifor : rPedido.NM_Clifor; //Buscar Endereço Entrega this.BuscarEndEntrega(); if (rPrevenda != null) { //Buscar Itens PreVenda rPrevenda.lItens.ForEach(p => (bsEntrega.Current as TRegistro_RomaneioEntrega).lItens.Add( new TRegistro_ItensRomaneio() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Ds_produto = p.Ds_produto, Sigla_unidade = p.Sigla_unidade, Id_prevenda = p.Id_prevenda, Id_itemprevenda = p.Id_itemprevenda, Cd_local = lCfg[0].Cd_local, Qtd_venda = p.Quantidade })); } else if (rPedido != null) { rPedido.Pedido_Itens.ForEach(p => (bsEntrega.Current as TRegistro_RomaneioEntrega).lItens.Add( new TRegistro_ItensRomaneio() { Cd_empresa = p.Cd_Empresa, Cd_produto = p.Cd_produto, Ds_produto = p.Ds_produto, Sigla_unidade = p.Sg_unidade_est, Nr_pedido = p.Nr_pedido, Id_pedidoitem = p.Id_pedidoitem, Cd_local = p.Cd_local, Qtd_venda = p.Quantidade })); } } else { //Buscar Entrega bsEntrega.DataSource = CamadaNegocio.Faturamento.Entrega.TCN_RomaneioEntrega.Buscar(rItensRomaneio[0].Cd_empresa, rItensRomaneio[0].Id_romaneiostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null); //Adicionar itens entregues rItensRomaneio.ForEach(p => { p.St_processar = true; (bsEntrega.Current as TRegistro_RomaneioEntrega).lItens.Add(p); }); //Adicionar itens nao entregues if (rPrevenda != null) { new CamadaDados.Faturamento.PDV.TCD_ItensPreVenda().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "not exists", vVL_Busca = "(select 1 from tb_fat_itensromaneio x " + "where x.id_itemprevenda = a.id_itemprevenda " + "and x.cd_empresa = a.cd_empresa " + "and x.id_prevenda = a.id_prevenda)" }, new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rItensRomaneio[0].Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_prevenda", vOperador = "=", vVL_Busca = "'" + rItensRomaneio[0].Id_prevenda.ToString() + "'" } }, 0, string.Empty).ForEach(p => (bsEntrega.Current as TRegistro_RomaneioEntrega).lItens.Add( new TRegistro_ItensRomaneio() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Ds_produto = p.Ds_produto, Id_prevenda = p.Id_prevenda, Id_itemprevenda = p.Id_itemprevenda, Cd_local = lCfg[0].Cd_local, Qtd_venda = p.Quantidade })); } else if (rPedido != null) { new CamadaDados.Faturamento.Pedido.TCD_LanPedido_Item().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = rPedido.Nr_pedido.ToString() }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "not exists", vVL_Busca = "(select 1 from tb_fat_itensromaneio x " + "where x.nr_pedido = a.nr_pedido " + "and x.cd_produto = a.cd_produto " + "and x.id_pedidoitem = a.id_pedidoitem)" } }, 0, string.Empty, string.Empty, string.Empty).ForEach(p => (bsEntrega.Current as TRegistro_RomaneioEntrega).lItens.Add( new TRegistro_ItensRomaneio() { Cd_empresa = p.Cd_Empresa, Cd_produto = p.Cd_produto, Ds_produto = p.Ds_produto, Sigla_unidade = p.Sg_unidade_est, Nr_pedido = p.Nr_pedido, Id_pedidoitem = p.Id_pedidoitem, Cd_local = p.Cd_local, Qtd_venda = p.Quantidade })); } bsEntrega.ResetCurrentItem(); } }
public static string ProcessarEntrega(TRegistro_CargaEntrega val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_CargaEntrega qtb_carga = new TCD_CargaEntrega(); try { if (banco == null) { st_transacao = qtb_carga.CriarBanco_Dados(true); } else { qtb_carga.Banco_Dados = banco; } //Processar estoque dos itens Entrega val.lItens.ForEach(p => { if (p.St_processar) { //Buscar Local de Armazenagem object cd_local = new CamadaDados.Faturamento.Entrega.TCD_ItensRomaneio(qtb_carga.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.CD_empresa", vOperador = "=", vVL_Busca = "'" + p.Cd_empresa + "'" }, new Utils.TpBusca() { vNM_Campo = "a.ID_Romaneio", vOperador = "=", vVL_Busca = "'" + p.Id_romaneiostr + "'" }, new Utils.TpBusca() { vNM_Campo = "a.ID_ItemRomaneio", vOperador = "=", vVL_Busca = "'" + p.Id_itemromaneiostr + "'" } }, "a.cd_local"); //Buscar VL.Médio decimal vl_medio = CamadaNegocio.Estoque.TCN_LanEstoque.Valor_Medio_Est_Produto(p.Cd_empresa, p.Cd_produto, qtb_carga.Banco_Dados); //Criar objeto estoque CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque(); rEstoque.Cd_empresa = p.Cd_empresa; rEstoque.Cd_produto = p.Cd_produto; rEstoque.Cd_local = cd_local.ToString(); rEstoque.Dt_lancto = CamadaDados.UtilData.Data_Servidor(); rEstoque.Tp_movimento = "S"; rEstoque.Qtd_entrada = decimal.Zero; rEstoque.Qtd_saida = p.QTD_Saida; rEstoque.Vl_unitario = vl_medio; rEstoque.Vl_subtotal = p.QTD_Saida * vl_medio; rEstoque.Tp_lancto = "N"; rEstoque.St_registro = "A"; //Gravar Estoque CamadaNegocio.Estoque.TCN_LanEstoque.GravarEstoque(rEstoque, qtb_carga.Banco_Dados); p.Id_lanctoEstoque = rEstoque.Id_lanctoestoque; TCN_ItensCarga.Gravar(p, qtb_carga.Banco_Dados); } }); val.St_registro = "E"; qtb_carga.Gravar(val); if (st_transacao) { qtb_carga.Banco_Dados.Commit_Tran(); } return(val.Id_cargastr); } catch (Exception ex) { if (st_transacao) { qtb_carga.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro Entregar Carga: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_carga.deletarBanco_Dados(); } } }