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 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(); } } }