You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

int main(int argc, char** argv)
{
char vidRepAnc[6];
char vidRepNouv[6];
varchar vadrMail[30];
int nb, nb1, nb2, nb3, vnbP,vnbPlacesRes;
float vtarif, vmont1, vtarif2, vmont2, vdif;
connexion();
// calcul montant payé pour ancienne rep
EXEC SQL select nbPlacesRes,tarif into :vnbP, :vtarif
from inscription I, representation R, artiste A
where I.idRep=R.idRep and R.idartiste=A.idaRtiste and I.idRep=:vidRepAnc and adrMail=:vadrMail;
// avait payé
vmont1=vtarif*vnbP;
// inscription deja faite?
EXEC SQL SELECT count(*) into :nb
FROM inscription
where idRep=:vidRepNouv and adrMail=:vadrMail;
if (nb==1)
{sql_error("\ninscription déjà faite à cette nouvelle\n");}
else {
// nombres places suffisantes?
EXEC SQL SELECT nbPlaces into :nb1
FROM representation
where idRep=:vidRepNouv;
EXEC SQL SELECT sum(nbPlacesRes) into :nb2
FROM inscription
where idRep=:vidRepNouv;
EXEC SQL SELECT nbPlacesRes into :vnbPlacesRes
FROM inscription
where idRep=:vidRepAnc and adrMail=:vadrMail;
// nb places restantes
nb3=nb1-nb2-vnbPlacesRes;
if (nb3<0)
{sql_error("\nplus assez de places");}
else {
EXEC SQL select tarif into :vtarif2
from representation R, artiste A
where R.idArtiste=A.idArtiste and R.idRep=:vidRepNouv;
// devrait payer
vmont2=vtarif2*vnbPlacesRes;
//maj
EXEC SQL UPDATE inscription set idRep=:vidRepNouv
where idRep=:vidRepAnc and adrMail=:vadrMail;
EXEC SQL COMMIT;
// remboursement?
vdif=vmont1-vmont2;
if(vdif>0)
printf("\nmodif faite, on vous doit: %.2f euros", vdif);
else printf("\nmodif faite, vous devez: %.2f euros", vdif*-1);
}
}
deconnexion(1);
return(0);
}