예제 #1
0
        public static string ProcessarParcelasCad_CondPGTO(TRegistro_CadCondPgto val, TRegistro_CadCondPgto_X_Parcelas Cad_CondPGTO_X_Parcelas, bool gravar, decimal[] valoresRateio, int[] QtdDias)
        {
            TCD_CadCondPgto_X_Parcelas qtb_cond = new TCD_CadCondPgto_X_Parcelas();

            qtb_cond.CriarBanco_Dados(true);

            string retorno = string.Empty;

            try
            {
                //GRAVA OS NOVOS DADOS
                if (gravar)
                {
                    valoresRateio = null;
                }

                decimal[] valorRateio = Estruturas.calcularRateio(Convert.ToInt16(val.Qt_parcelas), 100M, valoresRateio);

                if (valorRateio != null)
                {
                    for (int i = 0; i < valorRateio.Length; i++)
                    {
                        TRegistro_CadCondPgto_X_Parcelas Cad_CondPGTO_X_ParcelasNEW = new TRegistro_CadCondPgto_X_Parcelas();

                        Cad_CondPGTO_X_ParcelasNEW.Cd_condpgto = val.Cd_condpgto;
                        Cad_CondPGTO_X_ParcelasNEW.Id_parcela  = (i + 1);

                        if (QtdDias == null)
                        {
                            Cad_CondPGTO_X_ParcelasNEW.Qt_dias = (val.Qt_diasdesdobro * (i + 1));
                        }
                        else
                        {
                            Cad_CondPGTO_X_ParcelasNEW.Qt_dias = QtdDias[i];
                        }

                        Cad_CondPGTO_X_ParcelasNEW.Pc_rateio = valorRateio[i];

                        retorno = qtb_cond.GravarCondPgto_X_Parcelas(Cad_CondPGTO_X_ParcelasNEW);
                    }
                }
                else
                {
                    //Retorna a mensagem de erro
                    throw new Exception("Atenção, o valor de todos os percentuais de rateio não pode exceder 100% no total!");
                }

                qtb_cond.Banco_Dados.Commit_Tran();
            }
            catch (Exception ex)
            {
                qtb_cond.Banco_Dados.RollBack_Tran();
                throw new Exception(ex.Message);
            }
            finally
            {
                qtb_cond.deletarBanco_Dados();
            }

            return(retorno);
        }