public static string Gravar(TRegistro_OutrasReceitas val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_OutrasReceitas qtb_receita = new TCD_OutrasReceitas(); try { if (banco == null) { st_transacao = qtb_receita.CriarBanco_Dados(true); } else { qtb_receita.Banco_Dados = banco; } //Gravar Duplicata if (val.rDup != null) { Financeiro.Duplicata.TCN_LanDuplicata.GravarDuplicata(val.rDup, false, qtb_receita.Banco_Dados); val.Nr_lancto = val.rDup.Nr_lancto; } //Gravar Receita val.Id_receitastr = CamadaDados.TDataQuery.getPubVariavel(qtb_receita.Gravar(val), "@P_ID_RECEITA"); //Processar Comissao ProcessarComissao(val, qtb_receita.Banco_Dados); if (st_transacao) { qtb_receita.Banco_Dados.Commit_Tran(); } return(val.Id_receitastr); } catch (Exception ex) { if (st_transacao) { qtb_receita.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar outras receitas: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_receita.deletarBanco_Dados(); } } }
public static void ProcessarComissao(TRegistro_OutrasReceitas val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_OutrasReceitas qtb_receita = new TCD_OutrasReceitas(); try { if (banco == null) { st_transacao = qtb_receita.CriarBanco_Dados(true); } else { qtb_receita.Banco_Dados = banco; } //Verificar se ja existe comissao CamadaDados.Faturamento.Comissao.TList_Fechamento_Comissao lComissao = CamadaNegocio.Faturamento.Comissao.TCN_Fechamento_Comissao.Buscar(string.Empty, val.Cd_empresa, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, val.Id_receitastr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, qtb_receita.Banco_Dados); if (lComissao.Count > 0) { //Verificar se comissao possui faturamento if (new CamadaDados.Faturamento.Comissao.TCD_Comissao_X_Duplicata(qtb_receita.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + lComissao[0].Cd_empresa.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.id_comissao", vOperador = "=", vVL_Busca = lComissao[0].Id_comissaostr } }, "1") == null) { CamadaNegocio.Faturamento.Comissao.TCN_Fechamento_Comissao.Excluir(lComissao[0], qtb_receita.Banco_Dados); } else { throw new Exception("Receita possui comissão faturada. Obrigatorio antes cancelar faturamento comissão."); } } if (!string.IsNullOrEmpty(val.Cd_motorista)) { decimal vl_basecalc = val.Vl_receita; decimal pc_comissao = decimal.Zero; string tp_comissao = "P"; decimal vl_comissao = CamadaNegocio.Faturamento.Comissao.TCN_Fechamento_Comissao.CalcularComissao(val.Cd_empresa, val.Cd_motorista, string.Empty, string.Empty, string.Empty, decimal.Zero, ref vl_basecalc, ref pc_comissao, ref tp_comissao, qtb_receita.Banco_Dados); //Gravar fechamento comissao if (vl_comissao > decimal.Zero) { CamadaNegocio.Faturamento.Comissao.TCN_Fechamento_Comissao.Gravar( new CamadaDados.Faturamento.Comissao.TRegistro_Fechamento_Comissao() { Cd_empresa = val.Cd_empresa, Cd_vendedor = val.Cd_motorista, Dt_lancto = val.Dt_receita.HasValue ? val.Dt_receita : CamadaDados.UtilData.Data_Servidor(qtb_receita.Banco_Dados), Id_receita = val.Id_receita, Tp_comissao = tp_comissao, Pc_comissao = pc_comissao, Vl_basecalc = vl_basecalc, Vl_comissao = vl_comissao }, qtb_receita.Banco_Dados); if (st_transacao) { qtb_receita.Banco_Dados.Commit_Tran(); } } } } catch (Exception ex) { if (banco == null) { qtb_receita.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar comissão: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_receita.deletarBanco_Dados(); } } }
public static string Excluir(TRegistro_OutrasReceitas val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_OutrasReceitas qtb_receita = new TCD_OutrasReceitas(); try { if (banco == null) { st_transacao = qtb_receita.CriarBanco_Dados(true); } else { qtb_receita.Banco_Dados = banco; } //Cancelar Duplicata if (val.Nr_lancto.HasValue) { CamadaNegocio.Financeiro.Duplicata.TCN_LanDuplicata.CancelarDuplicata( CamadaNegocio.Financeiro.Duplicata.TCN_LanDuplicata.Busca(val.Cd_empresa, val.Nr_lanctostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, 1, string.Empty, qtb_receita.Banco_Dados)[0], qtb_receita.Banco_Dados); } //Verificar se existe comissao na receita CamadaDados.Faturamento.Comissao.TList_Fechamento_Comissao lComissao = new CamadaDados.Faturamento.Comissao.TCD_Fechamento_Comissao(qtb_receita.Banco_Dados).Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.id_receita", vOperador = "=", vVL_Busca = val.Id_receitastr } }, 0, string.Empty); //Excluir Receita if (lComissao.Count > 0) { lComissao.ForEach(p => CamadaNegocio.Faturamento.Comissao.TCN_Fechamento_Comissao.Excluir(p, qtb_receita.Banco_Dados)); } if (val.Vl_devadtoViagem > 0) { CamadaDados.Frota.Cadastros.TList_DevOutrasReceitas lDev = CamadaNegocio.Frota.Cadastros.TCN_DevOutrasReceitas.Buscar(val.Id_receitastr, string.Empty, string.Empty, qtb_receita.Banco_Dados); lDev.ForEach(p => { //Estornar Caixa new CamadaDados.Financeiro.Caixa.TCD_LanCaixa(qtb_receita.Banco_Dados).Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.CD_ContaGer", vOperador = "=", vVL_Busca = "'" + p.cd_contager.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.CD_LanctoCaixa", vOperador = "=", vVL_Busca = p.Id_lanctoCaixastr } }, 0, string.Empty).ForEach(x => CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.EstornarCaixa(x, null, qtb_receita.Banco_Dados)); //Excluir devolução adiantamento outras receitas Cadastros.TCN_DevOutrasReceitas.Excluir(p, qtb_receita.Banco_Dados); }); } //Deletar Receita qtb_receita.Excluir(val); if (st_transacao) { qtb_receita.Banco_Dados.Commit_Tran(); } return(val.Id_receitastr); } catch (Exception ex) { if (st_transacao) { qtb_receita.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir outras receitas: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_receita.deletarBanco_Dados(); } } }