예제 #1
0
        private void BB_Banco_Click(object sender, EventArgs e)
        {
            string vParam = string.Empty;

            if (tp_titulo.SelectedValue == null ? false : tp_titulo.SelectedValue.ToString().Trim().ToUpper().Equals("P"))
            {
                vParam = "|exists|(select 1 from tb_fin_contager x " +
                         "          where x.cd_banco = a.cd_banco " +
                         (string.IsNullOrEmpty(CD_Conta.Text) ? ")" : "          and x.cd_contager = '" + CD_Conta.Text.Trim() + "')");
            }
            UtilPesquisa.BTN_BUSCA("DS_BANCO|Descrição|150;CD_BANCO|Código|80"
                                   , new Componentes.EditDefault[] { cd_banco, ds_banco }, new CamadaDados.Financeiro.Cadastros.TCD_CadBanco(), vParam);
            if ((tp_titulo.SelectedValue == null ? false : tp_titulo.SelectedValue.ToString().Trim().ToUpper().Equals("P")) &&
                string.IsNullOrEmpty(CD_Conta.Text))
            {
                object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from TB_FIN_Contager_X_Empresa x " +
                                    "where a.cd_contager = x.cd_contager " +
                                    "and x.cd_empresa = '" + CD_Empresa.Text + "')"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from TB_DIV_Usuario_X_Contager x " +
                                    "where a.cd_contager = x.cd_contager " +
                                    "and x.login = '******')"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_banco",
                        vOperador = "=",
                        vVL_Busca = "'" + cd_banco.Text.Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.st_contacompensacao, 'N')",
                        vOperador = "=",
                        vVL_Busca = "'S'"
                    }
                }, "a.cd_contager");
                if (obj != null)
                {
                    CD_Conta.Text = obj.ToString();
                }
            }
        }
예제 #2
0
        private void TFLan_FechamentoCaixa_Load(object sender, EventArgs e)
        {
            Utils.ShapeGrid.RestoreShape(this, dataGridDefault1);
            if (!string.IsNullOrEmpty(Utils.Parametros.pubCultura))
            {
                Idioma.TIdioma.AjustaCultura(this);
            }
            this.Icon = ResourcesUtils.TecnoAliance_ICO;
            bsFechamentoCaixa.AddNew();
            if (bsFechamentoCaixa.Current != null)
            {
                (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Cd_contager = pCd_contager;
                //Buscar Descricao Conta
                object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_contager",
                        vOperador = "=",
                        vVL_Busca = "'" + pCd_contager.Trim() + "'"
                    }
                }, "a.ds_contager");
                (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Ds_contager = obj != null?obj.ToString() : string.Empty;

                (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_fechamento = DateTime.Now;
                //Buscar dados do ultimo fechamento caixa da conta gerencial
                TList_LanFechamentoCaixa lFechamentoCaixa = CamadaNegocio.Financeiro.Caixa.TCN_LanFechamentoCaixa.Buscar(decimal.Zero,
                                                                                                                         string.Empty,
                                                                                                                         string.Empty,
                                                                                                                         string.Empty,
                                                                                                                         pCd_contager.Trim(),
                                                                                                                         1,
                                                                                                                         string.Empty,
                                                                                                                         "dt_fechamento desc",
                                                                                                                         null);
                if (lFechamentoCaixa.Count > 0)
                {
                    (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento = lFechamentoCaixa[0].Dt_fechamento;
                    (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_anterior         = lFechamentoCaixa[0].Vl_atual;
                }
                bsFechamentoCaixa.ResetCurrentItem();
            }
            afterBusca();
        }
예제 #3
0
        private void GerarNumeroCheque()
        {
            object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                new Utils.TpBusca[]
            {
                new Utils.TpBusca()
                {
                    vNM_Campo = "a.cd_contager",
                    vOperador = "=",
                    vVL_Busca = "'" + CD_Conta.Text.Trim() + "'"
                }
            }, "a.nr_cheque_seq");

            if (obj != null)
            {
                nr_cheque.Text = (Convert.ToDecimal(obj.ToString()) + 1).ToString();
            }
        }
예제 #4
0
 private void GerarNumeroCheque()
 {
     if (BS_Titulo.Current != null)
     {
         if ((BS_Titulo.Current as TRegistro_LanTitulo).Tp_titulo.Trim().ToUpper().Equals("P") &&
             (!string.IsNullOrEmpty((BS_Titulo.Current as TRegistro_LanTitulo).Cd_contager.Trim())))
         {
             if (!this.Nr_chequeLista.HasValue)
             {
                 object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                     new TpBusca[]
                 {
                     new TpBusca()
                     {
                         vNM_Campo = "a.cd_contager",
                         vOperador = "=",
                         vVL_Busca = "'" + (BS_Titulo.Current as TRegistro_LanTitulo).Cd_contager.Trim() + "'"
                     }
                 }, "a.nr_cheque_seq");
                 if (obj != null)
                 {
                     try
                     {
                         nr_cheque.Text = (Convert.ToDecimal(obj.ToString()) + 1 + pIndexCheque).ToString();
                     }
                     catch
                     { }
                 }
             }
             else
             {
                 nr_cheque.Text = (Nr_chequeLista.Value + 1).ToString();
             }
         }
     }
 }
예제 #5
0
        private void bbBuscar_Click(object sender, EventArgs e)
        {
            if (bsDespesas.Current != null)
            {
                if (panelDados2.validarCampoObrigatorio())
                {
                    if (tp_pagamento.SelectedIndex.Equals(0) && string.IsNullOrWhiteSpace(cd_fornecedor.Text))
                    {
                        MessageBox.Show("Obrigatório informar fornecedor para tipo de pagamento selecionado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cd_fornecedor.Focus();
                        return;
                    }
                    else if (tp_pagamento.SelectedIndex.Equals(1) && string.IsNullOrWhiteSpace(cd_funcionario.Text))
                    {
                        MessageBox.Show("Obrigatório informar funcionário para tipo de pagamento selecionado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cd_funcionario.Focus();
                        return;
                    }
                    (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Cd_empresa      = vCd_Empresa;
                    (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Id_orcamentostr = vId_Orcamento;
                    (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Nr_versaostr    = vNr_Versao;

                    //Buscar config abast
                    CamadaDados.Empreendimento.Cadastro.TList_CadCFGEmpreendimento lCfg =
                        CamadaNegocio.Empreendimento.Cadastro.TCN_CadCFGEmpreendimento.Busca((bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Cd_empresa,
                                                                                             string.Empty,
                                                                                             null);

                    if (lCfg.Count > 0)
                    {
                        if (string.IsNullOrEmpty(lCfg[0].tp_dup))
                        {
                            MessageBox.Show("Não existe Tp.duplicata na CFG.empreendimento cadastrada!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Não existe CFG.empreendimento cadastrado para a empresa informada!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

                    //Despesa de funcionário com abatimento de adiantamento
                    if (tp_pagamento.SelectedIndex.Equals(1))
                    {
                        //Buscar conf. adiantamento
                        CamadaDados.Financeiro.Cadastros.TList_ConfigAdto lCnfAdto = CamadaNegocio.Financeiro.Cadastros.TCN_CadConfigAdto.Buscar(vCd_Empresa, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, null);
                        if (lCnfAdto.Count.Equals(0))
                        {
                            MessageBox.Show("Não existe CFG.adiantamento cadastrado para a empresa informada!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
                        }

                        CamadaDados.Financeiro.Duplicata.TRegistro_LanDuplicata rDup = new CamadaDados.Financeiro.Duplicata.TRegistro_LanDuplicata();
                        rDup.Cd_empresa = vCd_Empresa;
                        rDup.Cd_clifor  = cd_funcionario.Text;

                        object lEndClifor = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(new Utils.TpBusca[] { new Utils.TpBusca()
                                                                                                                                       {
                                                                                                                                           vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + rDup.Cd_clifor.Trim() + "'"
                                                                                                                                       } }, "a.cd_endereco");
                        if (!lEndClifor.Equals(null))
                        {
                            rDup.Cd_endereco = lEndClifor.ToString().Trim();
                        }

                        rDup.Tp_docto     = 2; //Duplicata
                        rDup.Tp_duplicata = "01";
                        rDup.Tp_mov       = lCnfAdto[0].Tp_mov_ADTO_C;
                        rDup.Cd_historico = rDup.Cd_historico_Dup = vCd_Historico = lCnfAdto[0].Cd_historico_ADTO_C;
                        rDup.Cd_portador  = lCnfAdto[0].CD_Portador;
                        rDup.Dt_emissao   = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Dt_execucao;
                        rDup.Vl_documento = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).vl_executado;
                        rDup.Nr_docto     = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Nr_docto;
                        DataTable rCond = new CamadaDados.Financeiro.Cadastros.TCD_CadCondPgto().Buscar(null, 1);
                        rDup.Cd_condpgto = rCond.Rows[0].ItemArray[0].ToString();
                        rDup.Cd_moeda    = rCond.Rows[0].ItemArray[5].ToString();
                        rDup.Cd_juro     = rCond.Rows[0].ItemArray[9].ToString();
                        rDup.Qt_parcelas = 0;
                        DataTable cd_contager = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().Buscar(null, 1);
                        if (cd_contager != null)
                        {
                            rDup.Cd_contager = cd_contager.Rows[0].ItemArray[0].ToString();
                        }
                        rDup.Parcelas.Add(new CamadaDados.Financeiro.Duplicata.TRegistro_LanParcela()
                        {
                            Vl_parcela = rDup.Vl_documento, Dt_vencto = rDup.Dt_emissao, Cd_parcela = 1
                        });
                        rDup.lCred.AddRange(CamadaNegocio.Financeiro.Adiantamento.TCN_LanAdiantamento.Buscar(string.Empty,
                                                                                                             rDup.Cd_empresa,
                                                                                                             rDup.Cd_clifor,
                                                                                                             string.Empty,
                                                                                                             "'C'",
                                                                                                             string.Empty,
                                                                                                             decimal.Zero,
                                                                                                             string.Empty,
                                                                                                             string.Empty,
                                                                                                             decimal.Zero,
                                                                                                             decimal.Zero,
                                                                                                             false,
                                                                                                             false,
                                                                                                             true,
                                                                                                             string.Empty,
                                                                                                             false,
                                                                                                             false,
                                                                                                             string.Empty,
                                                                                                             string.Empty,
                                                                                                             0,
                                                                                                             string.Empty,
                                                                                                             null));
                        if (rDup.lCred.Count.Equals(0))
                        {
                            MessageBox.Show("Funcionário não possui adiantamento quitado para efetuar o débito de saldo.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
                        }

                        //Validar saldo a devolver do funcionário
                        rDup.lCred.ForEach(p =>
                        {
                            if (rDup.Vl_documento <= p.Vl_total_devolver)
                            {
                                rDup.cVl_adiantamento = rDup.Vl_documento;
                            }
                        });
                        if (rDup.cVl_adiantamento.Equals(0))
                        {
                            MessageBox.Show("Crédito do funcionário é menor do que o valor da despesa."); return;
                        }

                        (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).rDuplicata = rDup;
                    }
                    else
                    {
                        //Procedimento para despesa da empresa
                        using (Financeiro.TFLanDuplicata fDup = new Financeiro.TFLanDuplicata())
                        {
                            fDup.vCd_empresa = vCd_Empresa;
                            fDup.vNm_empresa = vNm_empresa;
                            fDup.vCd_clifor  = tp_pagamento.SelectedIndex.Equals(1) ? cd_funcionario.Text : cd_fornecedor.Text;
                            fDup.vNm_clifor  = tp_pagamento.SelectedIndex.Equals(1) ? nm_funcionario.Text : nm_fornecedor.Text;
                            //Buscar endereco
                            CamadaDados.Financeiro.Cadastros.TList_CadEndereco lEnd =
                                CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(fDup.vCd_clifor,
                                                                                          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,
                                                                                          1,
                                                                                          null);
                            if (lEnd.Count > 0)
                            {
                                fDup.vCd_endereco = lEnd[0].Cd_endereco;
                                fDup.vDs_endereco = lEnd[0].Ds_endereco;
                            }
                            if (lCfg.Count > 0)
                            {
                                if (string.IsNullOrEmpty(lCfg[0].tp_dup))
                                {
                                    MessageBox.Show("Não existe Tp.duplicata na CFG.empreendimento cadastrada!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    return;
                                }
                                fDup.vTp_docto         = lCfg[0].tp_docto;
                                fDup.vDs_tpdocto       = lCfg[0].ds_docto;
                                fDup.vTp_duplicata     = string.Empty;
                                fDup.vDs_tpduplicata   = string.Empty;
                                fDup.vTp_mov           = "P";
                                fDup.vDt_emissao       = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Dt_execucaostr;
                                fDup.vVl_documento     = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).vl_executado;
                                fDup.vNr_docto         = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Nr_docto;
                                fDup.St_bloquearccusto = true;
                                if (fDup.ShowDialog() == DialogResult.OK)
                                {
                                    if (fDup.dsDuplicata.Count > 0)
                                    {
                                        (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).rDuplicata = fDup.dsDuplicata.Current as CamadaDados.Financeiro.Duplicata.TRegistro_LanDuplicata;
                                    }

                                    vCd_Historico = fDup.vCd_historico;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Não existe configuração frota para lançar duplicata!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                        }
                    }
                    if (CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("CRESULTADO_EMPRESA",
                                                                             vCd_Empresa,
                                                                             null).Trim().ToUpper().Equals("S"))
                    {
                        //Verificar se historico possui centro resultado cadastrado
                        object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadHistorico().BuscarEscalar(
                            new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "a.cd_historico",
                                vOperador = "=",
                                vVL_Busca = "'" + vCd_Historico.Trim() + "'"
                            }
                        }, "a.cd_centroresult");
                        if (obj == null ? false : !string.IsNullOrEmpty(obj.ToString()))
                        {
                            (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).lCCusto.Add(
                                new CamadaDados.Financeiro.CCustoLan.TRegistro_LanCCustoLancto()
                            {
                                Cd_empresa      = vCd_Empresa,
                                Cd_centroresult = obj.ToString(),
                                Vl_lancto       = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).vl_executado,
                                Dt_lancto       = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Dt_execucao,
                                Tp_registro     = "A"
                            });
                        }
                        else
                        {
                            using (Financeiro.TFRateioCResultado fRateio = new Financeiro.TFRateioCResultado())
                            {
                                fRateio.vVl_Documento = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).vl_executado;
                                fRateio.Tp_mov        = "P";
                                fRateio.Dt_movimento  = (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).Dt_execucao;
                                if (fRateio.ShowDialog() == DialogResult.OK)
                                {
                                    (bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas).lCCusto = fRateio.lCResultado;
                                }
                                else
                                {
                                    return;
                                }
                            }
                        }
                    }
                    try
                    {
                        CamadaNegocio.Empreendimento.TCN_ExecDespesas.Gravar(bsDespesas.Current as CamadaDados.Empreendimento.TRegistro_ExecDespesas, null);
                        MessageBox.Show("Despesa gravada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.DialogResult = DialogResult.OK;
                    }
                    catch (Exception ex)
                    { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                }
            }
        }
예제 #6
0
        private void dt_fechamento_Leave(object sender, EventArgs e)
        {
            if ((dt_fechamento.Text.Trim().Equals(string.Empty)) || (dt_fechamento.Text.Trim().Equals("/  /")))
            {
                return;
            }
            DateTime dt;

            try
            {
                dt = Convert.ToDateTime(dt_fechamento.Text);
                if (dt > DateTime.Now)
                {
                    MessageBox.Show("Data de fechamento não pode ser maior que data atual.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dt_fechamento.Focus();
                    return;
                }
                if ((bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento != null)
                {
                    if (dt <= (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento.Value)
                    {
                        MessageBox.Show("Data de fechamento não pode ser menor ou igual a data do ultimo fechamento.\r\n" +
                                        "Data Ultimo Fechamento: " + (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento.Value.ToString("dd/MM/yyyy"),
                                        "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dt_fechamento.Focus();
                        return;
                    }
                }
            }
            catch
            {
                MessageBox.Show("Data de fechamento invalida.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //Buscar valor atual da conta
            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_atual = TCN_LanCaixa.BuscarSaldoCaixaData(CD_ContaGer.Text, dt_fechamento.Data, null);
            object obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.status_compensado, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'N'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_titulo",
                    vOperador = "=",
                    vVL_Busca = "'R'"
                },
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                "inner join tb_fin_caixa y " +
                                "on x.cd_contager = y.cd_contager " +
                                "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                "where x.cd_empresa = a.cd_empresa " +
                                "and x.cd_banco = a.cd_banco " +
                                "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                "and y.cd_contager = '" + CD_ContaGer.Text.Trim() + "' " +
                                "and isnull(y.st_estorno, 'N') <> 'S' " +
                                "and CONVERT(datetime, FLOOR(CONVERT(decimal(30,10), y.DT_Lancto))) <= '" + dt_fechamento.Data.ToString("yyyyMMdd") + "')"
                }
            }, "isnull(sum(a.vl_titulo), 0)");

            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_rec_compensar = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

            obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.status_compensado, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'N'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_titulo",
                    vOperador = "=",
                    vVL_Busca = "'R'"
                },
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                "inner join tb_fin_caixa y " +
                                "on x.cd_contager = y.cd_contager " +
                                "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                "inner join tb_fin_contager z " +
                                "on y.cd_contager = c.cd_contager_compensacao " +
                                "where x.cd_empresa = a.cd_empresa " +
                                "and x.cd_banco = a.cd_banco " +
                                "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                "and z.cd_contager = '" + CD_ContaGer.Text.Trim() + "' " +
                                "and isnull(y.st_estorno, 'N') <> 'S' " +
                                "and CONVERT(datetime, FLOOR(CONVERT(decimal(30,10), y.DT_Lancto))) <= '" + dt_fechamento.Data.ToString("yyyyMMdd") + "')"
                }
            }, "isnull(sum(a.vl_titulo), 0)");
            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

            //Verificar se a conta e de compensacao
            object obj_conta = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_contager",
                    vOperador = "=",
                    vVL_Busca = "'" + CD_ContaGer.Text.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.st_contacompensacao, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'S'"
                }
            }, "1");

            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_saldofuturo =
                (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_atual -
                (obj_conta == null ? (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar :
                 (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar * -1);
            bsFechamentoCaixa.ResetCurrentItem();
        }
예제 #7
0
        public static void ProcessarLoteCH(TRegistro_LoteCH val, BancoDados.TObjetoBanco banco)
        {
            bool       st_transacao = false;
            TCD_LoteCH qtb_lote     = new TCD_LoteCH();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                //Buscar config para descontar cheque
                CamadaDados.Financeiro.Cadastros.TList_CFGCheque lCfg =
                    CamadaNegocio.Financeiro.Cadastros.TCN_CFGCheque.Buscar(val.Cd_empresa,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            1,
                                                                            string.Empty,
                                                                            qtb_lote.Banco_Dados);
                if (lCfg.Count < 1)
                {
                    throw new Exception("Não existe configuração para processar desconto de cheques.");
                }
                if (lCfg[0].Cd_historico_desconto.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de desconto para processar cheques.");
                }
                if (lCfg[0].Cd_historico_taxa.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de taxa para processar cheques.");
                }
                if (lCfg[0].Cd_historico_creddesconto.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de credito de desconto para processar cheques.");
                }
                //Total cheque descontar
                decimal tot_ch_descontar = val.lCheques.Where(p => p.St_conciliar).Sum(p => p.Vl_titulo);
                //Total taxa
                decimal tot_taxa = decimal.Zero;
                int     cont     = 0;
                //Buscar conta de compensacao do cheque
                object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_contager_compensacao",
                        vOperador = "=",
                        vVL_Busca = "'" + val.lCheques[0].Cd_contager.Trim() + "'"
                    }
                }, "a.cd_contager");
                if (obj == null)
                {
                    throw new Exception("Não existe conta de compensação configurada para a conta gerencial " + val.lCheques[0].Cd_contager.Trim());
                }
                if (obj.ToString().Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe conta de compensação configurada para a conta gerencial " + val.lCheques[0].Cd_contager.Trim());
                }
                val.lCheques.ForEach(p =>
                {
                    if (p.St_conciliar)
                    {
                        //Compensar cheque descontado
                        p.Dt_compensacao      = val.Dt_processamento;
                        p.Cd_contager_destino = obj.ToString();
                        CamadaNegocio.Financeiro.Titulo.TCN_LanTitulo.CompensarCheques(
                            new TList_RegLanTitulo()
                        {
                            p
                        },
                            qtb_lote.Banco_Dados);
                        decimal taxa = Math.Round((val.Vl_taxa * (p.Vl_titulo / tot_ch_descontar * 100) / 100), 2);
                        if (cont.Equals(val.lCheques.Count - 1))
                        {
                            taxa += (val.Vl_taxa - (tot_taxa + taxa));
                        }
                        //Gravar lancamento de caixa devolvendo credito adiantado pelo banco
                        string ret_caixa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                            new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                        {
                            Cd_ContaGer    = obj.ToString(),
                            Cd_Empresa     = p.Cd_empresa,
                            Cd_Historico   = lCfg[0].Cd_historico_desconto,
                            Cd_LanctoCaixa = 0,
                            ComplHistorico = "DEVOLUCAO CREDITO DESCONTO CHEQUE " + p.Nr_cheque.Trim(),
                            Dt_lancto      = val.Dt_processamento,
                            NM_Clifor      = p.Nomeclifor,
                            Nr_Docto       = p.Nr_cheque,
                            Vl_PAGAR       = Math.Round(p.Vl_titulo - taxa, 2),
                            Vl_RECEBER     = decimal.Zero
                        }, qtb_lote.Banco_Dados);
                        //Gravar Cheque X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_TituloXCaixa.GravarTituloCaixa(
                            new TRegistro_LanTituloXCaixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar Lote X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_LoteCH_X_Caixa.GravarLoteCH_X_Caixa(
                            new TRegistro_LoteCH_X_Caixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar lancamento de caixa debitando taxa cobrada pelo banco
                        string ret_taxa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                            new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                        {
                            Cd_ContaGer    = obj.ToString(),
                            Cd_Empresa     = p.Cd_empresa,
                            Cd_Historico   = lCfg[0].Cd_historico_taxa,
                            Cd_LanctoCaixa = 0,
                            ComplHistorico = "TAXA DESCONTO CHEQUE " + p.Nr_cheque.Trim(),
                            Dt_lancto      = val.Dt_processamento,
                            NM_Clifor      = p.Nomeclifor,
                            Nr_Docto       = p.Nr_cheque,
                            Vl_PAGAR       = taxa,
                            Vl_RECEBER     = decimal.Zero
                        }, qtb_lote.Banco_Dados);
                        //Gravar cheque X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_TituloXCaixa.GravarTituloCaixa(
                            new TRegistro_LanTituloXCaixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_taxa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar Lote X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_LoteCH_X_Caixa.GravarLoteCH_X_Caixa(
                            new TRegistro_LoteCH_X_Caixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_taxa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Totalizar taxas
                        tot_taxa += taxa;
                    }
                    else
                    {
                        //Os cheques que nao forem descontados,
                        //transferir de volta para a conta de origem
                        CamadaDados.Financeiro.Titulo.TList_TransfTitulo lTransf =
                            CamadaNegocio.Financeiro.Titulo.TCN_TransfTitulo.Buscar(p.Cd_empresa,
                                                                                    string.Empty,
                                                                                    p.Cd_contager,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    p.Cd_banco,
                                                                                    1,
                                                                                    string.Empty,
                                                                                    qtb_lote.Banco_Dados);
                        if (lTransf.Count < 1)
                        {
                            throw new Exception("Registro transferencia nao encontrado.");
                        }
                        //Realizar a transferencia dos cheques entre contas
                        p.Cd_contager_destino = lTransf[0].Cd_conta_orig;
                        p.Dt_compensacao      = val.Dt_processamento;
                        //Setar status do cheque para enviado
                        p.Status_compensado = "N";     //A Compensar
                        TCN_LanTitulo.TransferirTitulo(p, qtb_lote.Banco_Dados);
                        //Gravar somente o cheque sem mecher no lancamento de caixa
                        p.St_lancarcaixa = false;
                        TCN_LanTitulo.GravarTitulo(p, qtb_lote.Banco_Dados);
                        //Deletar amarracao do cheque com o lote
                        TCN_LoteCH_X_Titulo.DeletarLoteCh_X_Titulo(
                            new TRegistro_LoteCH_X_Titulo()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_empresa      = p.Cd_empresa,
                            Id_lote         = val.Id_lote,
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                    }
                    cont++;
                });
                //Gravar lancamento de caixa creditando o valor adiantado pelo banco
                string ret_cred = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                    new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                {
                    Cd_ContaGer    = obj.ToString(),
                    Cd_Empresa     = val.Cd_empresa,
                    Cd_Historico   = lCfg[0].Cd_historico_creddesconto,
                    Cd_LanctoCaixa = 0,
                    ComplHistorico = "CREDITO DESCONTO CHEQUE DO LOTE" + val.Id_lote.ToString(),
                    Dt_lancto      = val.Dt_processamento,
                    NM_Clifor      = string.Empty,
                    Nr_Docto       = val.Id_lote.ToString(),
                    Vl_PAGAR       = decimal.Zero,
                    Vl_RECEBER     = val.Vl_credito
                }, qtb_lote.Banco_Dados);
                //Gravar lote
                val.St_registro    = "P";//Processado
                val.Cd_contager    = string.Empty;
                val.Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_cred, "@P_CD_LANCTOCAIXA"));
                qtb_lote.GravarLoteCH(val);
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar lote: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }