public override bool execute( )
        {
            if (base.execute() == false)
            {
                return(false);
            }

            Registry("execute ins_cartaoProprietario ");

            /// USER [ execute ]

            bool update_Proprietario = false;

            int titularidade = 1;

            prot.ExclusiveAccess();

            if (prot.select_rows_cpf(input_cont_dp.get_st_cpf()))
            {
                if (!prot.fetch())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }

                update_Proprietario = true;

                // confere se tem mais de um cartão nesta empresa

                T_Cartao tmp_cart = new T_Cartao(this);

                if (tmp_cart.select_rows_emp_prop(input_cont_dc.get_st_empresa().PadLeft(6, '0'), prot.get_identity()))
                {
                    if (tmp_cart.RowCount() > 0)
                    {
                        prot.ReleaseExclusive();

                        PublishError("CPF já cadastrrado para outro cartão nesta empresa (" + input_cont_dc.get_st_empresa().PadLeft(6, '0') + ")");
                        return(false);
                    }
                }
            }

            prot.set_st_cpf(input_cont_dp.get_st_cpf());
            prot.set_st_nome(input_cont_dp.get_st_nome().ToUpper());
            prot.set_st_endereco(input_cont_dp.get_st_endereco());
            prot.set_st_numero(input_cont_dp.get_st_numero());
            prot.set_st_complemento(input_cont_dp.get_st_complemento());
            prot.set_st_bairro(input_cont_dp.get_st_bairro());
            prot.set_st_cidade(input_cont_dp.get_st_cidade().ToUpper());
            prot.set_st_UF(input_cont_dp.get_st_UF());
            prot.set_st_cep(input_cont_dp.get_st_CEP());
            prot.set_st_ddd(input_cont_dp.get_st_ddd());
            prot.set_st_telefone(input_cont_dp.get_st_telefone());
            prot.set_dt_nasc(input_cont_dp.get_dt_nasc());
            prot.set_st_email(input_cont_dp.get_st_email());
            prot.set_vr_renda(input_cont_dp.get_vr_renda());
            prot.set_st_senhaEdu(input_cont_da.get_st_senha_resp());

            if (update_Proprietario)
            {
                if (!prot.synchronize_T_Proprietario())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }
            }
            else
            {
                if (!prot.create_T_Proprietario())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }
            }

            prot.ReleaseExclusive();

            T_InfoAdicionais add_info = new T_InfoAdicionais(this);

            add_info.set_st_codigo(Context.NOT_SET);
            add_info.set_st_empresaAfiliada(input_cont_da.get_st_empresa());
            add_info.set_st_presenteado(input_cont_da.get_st_presenteado());
            add_info.set_st_recado(input_cont_da.get_st_recado());

            if (!add_info.create_T_InfoAdicionais())
            {
                PublishError(Erro.NovoCartao);
                return(false);
            }

            if (input_cont_dc.get_tg_tipoCartao() == TipoCartao.presente)
            {
                cart.set_fk_dadosProprietario(prot.get_identity());
                cart.set_fk_infoAdicionais(add_info.get_identity());
                cart.set_tg_status(CartaoStatus.Habilitado);
                cart.set_vr_limiteTotal(input_cont_dc.get_vr_dispTotal());
                cart.set_tg_tipoCartao(TipoCartao.presente);

                cart.set_st_senha(var_util.DESCript("9999".PadLeft(8, '*'), "12345678"));

                if (!cart.synchronize_T_Cartao())
                {
                    return(false);
                }
            }
            else
            {
                cart.Reset();

                cart.set_st_empresa(input_cont_dc.get_st_empresa().PadLeft(6, '0'));
                cart.set_st_matricula(input_cont_dc.get_st_matricula().PadLeft(6, '0'));
                cart.set_st_titularidade(titularidade.ToString().PadLeft(2, '0'));
                cart.set_st_senha(input_cont_dc.get_st_senha());
                cart.set_tg_tipoCartao(input_cont_dc.get_tg_tipoCartao());
                cart.set_st_venctoCartao(input_cont_dc.get_st_vencimento());
                cart.set_tg_status(CartaoStatus.Habilitado);
                cart.set_dt_utlPagto(GetDataBaseTime());
                cart.set_nu_senhaErrada(Context.NONE);
                cart.set_dt_inclusao(GetDataBaseTime());
                cart.set_dt_bloqueio(GetDataBaseTime());
                cart.set_tg_motivoBloqueio(CartaoMotivoBloqueio.Expirado);
                cart.set_st_banco(input_cont_dc.get_st_banco());
                cart.set_st_agencia(input_cont_dc.get_st_agencia());
                cart.set_st_conta(input_cont_dc.get_st_conta());
                cart.set_st_matriculaExtra(Context.FALSE);
                cart.set_st_celCartao(input_cont_dc.get_st_celCartao());
                cart.set_fk_dadosProprietario(prot.get_identity());
                cart.set_fk_infoAdicionais(add_info.get_identity());

                cart.set_nu_viaCartao("1");

                cart.set_vr_limiteTotal(input_cont_dc.get_vr_limiteTotal());
                cart.set_vr_limiteMensal(input_cont_dc.get_vr_limiteMensal());
                cart.set_vr_limiteRotativo(input_cont_dc.get_vr_limiteRotativo());
                cart.set_vr_extraCota(input_cont_dc.get_vr_extraCota());

                cart.set_st_aluno(input_cont_da.get_st_nome_aluno());

                cart.set_vr_educacional("0");
                cart.set_vr_disp_educacional("0");
                cart.set_vr_edu_diario("0");

                if (input_cont_dc.get_tg_tipoCartao() == TipoCartao.presente)
                {
                    // necessita de confirmação de produtos
                    cart.set_tg_status(CartaoStatus.Bloqueado);
                }

                if (!cart.create_T_Cartao())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }
            }

            LINK_ProprietarioCartao prop_cart = new LINK_ProprietarioCartao(this);

            prop_cart.set_fk_cartao(cart.get_identity());
            prop_cart.set_fk_proprietario(prot.get_identity());

            if (!prop_cart.create_LINK_ProprietarioCartao())
            {
                PublishError(Erro.NovoCartao);
                return(false);
            }

            for (int t = 0; t < var_util.indexCSV(input_st_csv_deps, '|'); ++t)
            {
                T_Cartao cart_dep = new T_Cartao(this);

                cart_dep.copy(ref cart);

                cart_dep.set_st_titularidade((++titularidade).ToString().PadLeft(2, '0'));

                if (!cart_dep.create_T_Cartao())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }

                T_Dependente dep = new T_Dependente(this);

                dep.set_nu_titularidade(cart_dep.get_st_titularidade());
                dep.set_st_nome(var_util.getCSV(t));
                dep.set_fk_proprietario(prot.get_identity());

                if (!dep.create_T_Dependente())
                {
                    PublishError(Erro.NovoCartao);
                    return(false);
                }
            }

            PublishNote("Cartão criado com sucesso");

            /// USER [ execute ] END

            Registry("execute done ins_cartaoProprietario ");

            return(true);
        }