Пример #1
0
        public static void ProcessarImposto(TRegistro_LoteImposto val,
                                            BancoDados.TObjetoBanco banco)
        {
            bool            st_transacao = false;
            TCD_LoteImposto qtb_lote     = new TCD_LoteImposto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                if (VerificarLoteImposto(val.Cd_empresa, val.Cd_impostostr, val.Dt_lotestr, qtb_lote.Banco_Dados))
                {
                    throw new Exception("Imposto ja se encontra processado para a data: " + val.Dt_lotestr);
                }
                //Gravar lote fiscal
                Gravar(val, qtb_lote.Banco_Dados);
                //Buscar registros fiscais para processar
                CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImp =
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_ImpostosNF.Buscar(string.Empty,
                                                                               val.Cd_empresa,
                                                                               string.Empty,
                                                                               string.Empty,
                                                                               string.Empty,
                                                                               val.Cd_impostostr,
                                                                               string.Empty,
                                                                               string.Empty,
                                                                               string.Empty,
                                                                               val.Dt_lotestr,
                                                                               string.Empty,
                                                                               true,
                                                                               string.Empty,
                                                                               qtb_lote.Banco_Dados);
                lImp.ForEach(p =>
                {
                    p.Id_lotefis = val.Id_lotefis;
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_ImpostosNF.Gravar(p, qtb_lote.Banco_Dados);
                });
                //Buscar Outros Creditos/Debitos
                CamadaDados.Fiscal.TList_LanctoImposto lOutrosImp =
                    new CamadaDados.Fiscal.TCD_LanctoImposto().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.cd_imposto",
                        vOperador = "=",
                        vVL_Busca = val.Cd_impostostr
                    },
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.dt_lancto",
                        vOperador = "<=",
                        vVL_Busca = "'" + string.Format(new System.Globalization.CultureInfo("en-US", true), val.Dt_lote.Value.ToString("yyyyMMdd")) + " 23:59:59'"
                    },
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.id_lotefis",
                        vOperador = "is",
                        vVL_Busca = "null"
                    }
                }, 0, string.Empty);
                lOutrosImp.ForEach(p =>
                {
                    p.Id_lotefis = val.Id_lotefis;
                    CamadaNegocio.Fiscal.TCN_LanctoImposto.Processar(p, qtb_lote.Banco_Dados);
                });
                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 registros fiscais: " + ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }
Пример #2
0
        public static string Excluir(TRegistro_LoteImposto val, BancoDados.TObjetoBanco banco)
        {
            bool            st_transacao = false;
            TCD_LoteImposto qtb_lote     = new TCD_LoteImposto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                //Buscar lotes a excluir
                TList_LoteImposto lFechamento = Buscar(string.Empty,
                                                       val.Cd_impostostr,
                                                       val.Cd_empresa,
                                                       val.Dt_lotestr,
                                                       string.Empty,
                                                       string.Empty,
                                                       qtb_lote.Banco_Dados);
                if (lFechamento.Exists(p => p.St_registro.Trim().ToUpper().Equals("P")))
                {
                    throw new Exception("Não é permitido excluir lote fiscal processado.\r\n" +
                                        "Necessario antes cancelar o pedido faturado.");
                }
                lFechamento.ForEach(p =>
                {
                    //Buscar todos os lancamentos de impostos pertencentes ao lote
                    CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImp =
                        CamadaNegocio.Faturamento.NotaFiscal.TCN_ImpostosNF.Buscar(string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   string.Empty,
                                                                                   false,
                                                                                   p.Id_lotefis.Value.ToString(),
                                                                                   qtb_lote.Banco_Dados);
                    lImp.ForEach(v =>
                    {
                        v.Id_lotefis = null;
                        CamadaNegocio.Faturamento.NotaFiscal.TCN_ImpostosNF.Gravar(v, qtb_lote.Banco_Dados);
                    });
                    //Buscar todos os lancamentos avulsos do lote
                    CamadaDados.Fiscal.TList_LanctoImposto lImpAvulso =
                        CamadaNegocio.Fiscal.TCN_LanctoImposto.Buscar(string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      p.Id_lotefis.Value.ToString(),
                                                                      qtb_lote.Banco_Dados);
                    lImpAvulso.ForEach(v =>
                    {
                        v.Id_lotefis = null;
                        CamadaNegocio.Fiscal.TCN_LanctoImposto.Gravar(v, qtb_lote.Banco_Dados);
                    });
                    qtb_lote.Excluir(p);
                });
                qtb_lote.Excluir(val);
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir lote fiscal: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }