public static void ExcluirTaxasProvisionadas(List <TRegistro_TaxaDeposito> val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LanTaxaDeposito qtb_taxa = new TCD_LanTaxaDeposito(); try { if (banco == null) { st_transacao = qtb_taxa.CriarBanco_Dados(true); } else { qtb_taxa.Banco_Dados = banco; } val.ForEach(p => { //Verificar se a taxa esta faturada TList_Taxa_X_PedidoItem lTxPed = TCN_Taxa_X_PedidoItem.Buscar(p.Id_LanTaxa.ToString(), string.Empty, qtb_taxa.Banco_Dados); lTxPed.ForEach(v => TCN_Taxa_X_PedidoItem.Excluir(v, qtb_taxa.Banco_Dados)); Excluir(p, qtb_taxa.Banco_Dados); }); if (st_transacao) { qtb_taxa.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_taxa.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir taxas provisionadas: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_taxa.deletarBanco_Dados(); } } }
public static string Excluir(TRegistro_TaxaDeposito val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LanTaxaDeposito qtb_taxa = new TCD_LanTaxaDeposito(); try { if (banco == null) { st_transacao = qtb_taxa.CriarBanco_Dados(true); } else { qtb_taxa.Banco_Dados = banco; } //Excluir taxa qtb_taxa.Excluir(val); if (st_transacao) { qtb_taxa.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_taxa.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir taxa: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_taxa.deletarBanco_Dados(); } } }
public static decimal FaturarTaxasContrato(CamadaDados.Balanca.TRegistro_PedidoAplicacao rPedAplic, List <TRegistro_TaxaDeposito> lTaxas, string Tp_taxa, CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LanTaxaDeposito qtb_taxa = new TCD_LanTaxaDeposito(); try { if (banco == null) { st_transacao = qtb_taxa.CriarBanco_Dados(true); } else { qtb_taxa.Banco_Dados = banco; } if (lTaxas.Count > 0) { //Buscar configuracao para o tipo de taxa que esta sendo faturada CamadaDados.Graos.TList_CFGTaxa CfgTaxa = CamadaNegocio.Graos.TCN_CFGTaxa.Buscar(Tp_taxa, string.Empty, string.Empty, string.Empty, qtb_taxa.Banco_Dados); if (CfgTaxa.Count.Equals(0)) { throw new Exception("Não existe configuração para o tipo de taxa."); } decimal retorno = decimal.Zero; if (Tp_taxa.Trim().ToUpper().Equals("V")) { CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido(); //Criar pedido para faturar rPed.CD_Empresa = rPedAplic.Cd_empresa; rPed.DT_Pedido = CamadaDados.UtilData.Data_Servidor(); rPed.CFG_Pedido = CfgTaxa[0].Cfg_pedido; rPed.TP_Movimento = "S"; //Pedido de entrada rPed.ST_Pedido = "F"; //Pedido fechado rPed.ST_Registro = "F"; //Pedido fechado rPed.CD_Clifor = rPedAplic.Cd_clifor; rPed.CD_Endereco = rPedAplic.Cd_endereco; rPed.Cd_moeda = CfgTaxa[0].Cd_moeda; //Criar itens do pedido rPed.Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item() { Cd_Empresa = rPedAplic.Cd_empresa, Cd_local = rPedAplic.Cd_local, Cd_produto = CfgTaxa[0].Cd_produto.Trim() != string.Empty ? CfgTaxa[0].Cd_produto : rPedAplic.Cd_produto, Ds_produto = CfgTaxa[0].Cd_produto.Trim() != string.Empty ? CfgTaxa[0].Ds_produto : rPedAplic.Ds_produto, Cd_unidade_est = (Tp_taxa.Trim().ToUpper().Equals("P") ? rPedAplic.Cd_unidade_estoque : CfgTaxa[0].Cd_unidproduto), Cd_unidade_valor = (Tp_taxa.Trim().ToUpper().Equals("P") ? rPedAplic.Cd_unidade : CfgTaxa[0].Cd_unidproduto), Quantidade = (Tp_taxa.Trim().ToUpper().Equals("P") ? lTaxas.Sum(p => p.Ps_Taxa) : 1), Vl_unitario = (Tp_taxa.Trim().ToUpper().Equals("P") ? rPedAplic.Vl_unitario : lTaxas.Sum(p => p.Vl_Taxa)), Vl_subtotal = (Tp_taxa.Trim().ToUpper().Equals("P") ? lTaxas.Sum(p => p.Ps_Taxa) * rPedAplic.Vl_unitario : lTaxas.Sum(p => p.Vl_Taxa)) }); //Gravar pedido CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido(rPed, qtb_taxa.Banco_Dados); lTaxas.ForEach(p => { //Gravar taxa x pedido item TCN_Taxa_X_PedidoItem.Gravar(new TRegistro_Taxa_X_PedidoItem() { Cd_produto = rPed.Pedido_Itens[0].Cd_produto, Id_lantaxa = p.Id_LanTaxa, Id_pedidoitem = rPed.Pedido_Itens[0].Id_pedidoitem, Nr_pedido = rPed.Nr_pedido }, qtb_taxa.Banco_Dados); //Alterar status das taxas para P - Processado p.St_registro = "P"; qtb_taxa.Gravar(p); }); retorno = rPed.Nr_pedido; } else if (rFat != null) { CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.GravarFaturamento(rFat, false, null, qtb_taxa.Banco_Dados); lTaxas.ForEach(p => { //Gravar Taxa X Nota Fiscal TCN_FatQuebraTec.Gravar(new TRegistro_FatQuebraTec() { Cd_empresa = rFat.Cd_empresa, Nr_lanctofiscal = rFat.Nr_lanctofiscal, Id_nfitem = rFat.ItensNota[0].Id_nfitem, Id_lantaxa = p.Id_LanTaxa }, qtb_taxa.Banco_Dados); //Alterar status das taxas para P - Processado p.St_registro = "P"; qtb_taxa.Gravar(p); }); retorno = rFat.Nr_lanctofiscal.Value; } if (st_transacao) { qtb_taxa.Banco_Dados.Commit_Tran(); } return(retorno); } else { throw new Exception("Não existe taxas para faturar."); } } catch (Exception ex) { if (banco == null) { qtb_taxa.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro faturar taxas: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_taxa.deletarBanco_Dados(); } } }
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(); } } }