示例#1
0
        public static void ProcessarContabilAvulso(TRegistro_Lan_CTB_LanMultiplo val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Lan_CTB_LanMultiplo qtb_lan = new TCD_Lan_CTB_LanMultiplo();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lan.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lan.Banco_Dados = banco;
                }
                //Gravar lote
                if (!val.Id_lotectb.HasValue)
                {
                    val.Id_lotectbstr = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "AV"
                    }, qtb_lan.Banco_Dados);
                }
                //Criar lista de lancamentos contabeis
                TList_LanContabil listaCre = new TList_LanContabil();
                TList_LanContabil listaDeb = new TList_LanContabil();
                val.lLanctoAvulso.ForEach(p =>
                {
                    if (p.D_C.Trim().ToUpper().Equals("D"))
                    {
                        listaDeb.Add(new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = val.Cd_empresa,
                            Data               = val.Dt_lan,
                            Ds_compl_historico = val.Complhistorico,
                            Nr_docto           = val.Nr_docto,
                            ID_LoteCTB         = val.Id_lotectb,
                            Valor              = p.Vl_lancto,
                            D_c          = "D",
                            Cd_conta_ctb = p.Cd_conta_ctb
                        });
                    }
                    else if (p.D_C.Trim().ToUpper().Equals("C"))
                    {
                        listaCre.Add(new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = val.Cd_empresa,
                            Data               = val.Dt_lan,
                            Ds_compl_historico = val.Complhistorico,
                            Nr_docto           = val.Nr_docto,
                            ID_LoteCTB         = val.Id_lotectb,
                            Valor              = p.Vl_lancto,
                            D_c          = "C",
                            Cd_conta_ctb = p.Cd_conta_ctb
                        });
                    }
                });
                //Grava registro contabil
                TCN_LanContabil.GravarContabil(listaDeb, listaCre, false, qtb_lan.Banco_Dados);
                //Altera status lan multiplo para processado
                val.St_registro = "P";//Processado
                qtb_lan.Grava(val);
                if (st_transacao)
                {
                    qtb_lan.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lan.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar registro: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lan.deletarBanco_Dados();
                }
            }
        }
示例#2
0
        public static void Zeramento(CamadaDados.Contabil.Cadastro.TRegistro_Cad_CTB_ParamZeramento rParam,
                                     DateTime?Dt_ini,
                                     DateTime?Dt_fin,
                                     string Complemento,
                                     BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao  = false;
            TCD_Zeramento qtb_zeramento = new TCD_Zeramento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_zeramento.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_zeramento.Banco_Dados = banco;
                }
                //Gerar Balanco no Periodo
                List <TRegistro_BalancoSintetico> Balanco =
                    TCN_LanContabil.GerarBalanco(rParam.Cd_empresa, string.Empty, string.Empty, Dt_ini, Dt_fin, true, false, string.Empty, false, false);

                //Lista Lancamento Contabeis Gerados
                TList_Zeramento_X_Lote lLoteZeramento = new TList_Zeramento_X_Lote();
                //Zerar Receitas
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifreceitas.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                //Zerar Despesas
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifdespesas.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                //Zerar Custos
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifcusto.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                decimal resultado = Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifreceitas.Trim())).Vl_atual -
                                    Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifdespesas.Trim())).Vl_atual -
                                    Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifcusto.Trim())).Vl_atual;
                if (resultado > decimal.Zero && rParam.Cd_cResultadoL.HasValue)
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = resultado,
                            Cd_conta_ctb       = rParam.Cd_contaresultado
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = resultado,
                            Cd_conta_ctb       = rParam.Cd_cResultadoL
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                }
                else if (resultado < decimal.Zero && rParam.Cd_cResultadoP.HasValue)
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(resultado),
                            Cd_conta_ctb       = rParam.Cd_cResultadoP
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(resultado),
                            Cd_conta_ctb       = rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                }
                //Gravar Registro Zeramento
                string id_zeramento = Gravar(new TRegistro_Zeramento()
                {
                    Cd_empresa   = rParam.Cd_empresa,
                    Dt_zeramento = Dt_fin,
                    Complemento  = Complemento
                }, qtb_zeramento.Banco_Dados);
                lLoteZeramento.ForEach(p =>
                {
                    p.Id_zeramentostr = id_zeramento;
                    TCN_Zeramento_X_Lote.Gravar(p, qtb_zeramento.Banco_Dados);
                });
                if (st_transacao)
                {
                    qtb_zeramento.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_zeramento.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar zeramento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_zeramento.deletarBanco_Dados();
                }
            }
        }