}elseerror_box("Gli sconti incondizionati non sono abilitati nella configurazione");
break;
default:// messaggio di errore se si indica una tabella non valida
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
break;
}
if(gotcha){
add_cursor(newTCursor(_rel));// costruisce il cursore sulla relazione e lo passa alla stampa
add_file(LF_SCONTI);// notifica il file delle principale alla stampa
enable_print_menu();// abilita il men<65> di stampa
enable_setprint_menu();// abilita il men<65> di settaggio della stampa
}
return(gotcha);
}
boolTStampa_sconti::user_destroy(){
delete_rel;
returnTRUE;
}
boolTStampa_sconti::set_print(int){
boolgotcha=FALSE;
TConfigprassid(CONFIG_DITTA,"ve");
TMask*mask;
switch(_sconti[0]){
case'D':// sconti documento
mask=newTMask("ve3100d");
gotcha=TRUE;
break;
case'R':// sconti di riga
mask=newTMask("ve3100r");
if(!_catven){
KILL(F_R_CODCAT_DA);
KILL(F_R_CODCAT_A);
}else{
REVIVE(F_R_CODCAT_DA);
REVIVE(F_R_CODCAT_A);
}
gotcha=TRUE;
break;
case'I':// sconti incondizionati
mask=newTMask("ve3100i");
shortk_id[2][4]={F_I_CATVEN_DA,F_I_CATVEN_A,F_I_SCCLIENTI_DA,F_I_SCCLIENTI_A,F_I_ZONE_DA,F_I_ZONE_A,F_I_CONDPAG_DA,F_I_CONDPAG_A};// vettore dei campi da controllare
for(inti=0;i<4;i++){
boolenab=prassid.get_bool("SCOKEY",NULL,i+1);
switch(i){
case0:_scokey_catven=enab;break;
case1:_scokey_scclienti=enab;break;
case2:_scokey_zone=enab;break;
case3:_scokey_condpag=enab;break;
}
if(enab){// se nel file di config. il campo <20> abilitato...
REVIVE(k_id[0][i]);// ...i campi vengono abilitati anche sulla maschera
REVIVE(k_id[1][i]);
gotcha=TRUE;
}else{
KILL(k_id[0][i]);// se nel file di config. i campi non sono abilitati vengono disabilitati anche sulla maschera
KILL(k_id[1][i]);
}
}
if(!_catven){
KILL(k_id[0][1]);// se nel file di config. la categoria vendite <20> disabilitata viene ucciso il campo
KILL(k_id[1][1]);
}
if(!gotcha)error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
break;
}
if(gotcha&&(mask->run()==K_ENTER)){// lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
if(_sconti=="R"){
_descriz=mask->get_bool(F_R_DESCRIZ);
_compat=mask->get_bool(F_R_COMPAT);
}elseif(_sconti=="I"){
_descriz=mask->get_bool(F_I_DESCRIZ);
_compat=mask->get_bool(F_I_COMPAT);
}
TLocalisamfile&sconti=_rel->lfile();
TRectypeda(sconti.curr());// prepara il record di inizio regione
da.zero();
da.put("TIPO",_sconti);
TRectypea(da);// prepara il record di fine regione
TStringcodart;// stringa per la composizione del campo CODART negli sconti incondizionati
switch(_sconti[0]){// impostazione della chiave della testata
case'D':// sconti documento
da.put("CODCAT",mask->get(F_D_CODCAT_DA));
a.put("CODCAT",mask->get(F_D_CODCAT_A));
break;
case'R':// sconti di riga
if(_catven){
da.put("CODCAT",mask->get(F_R_CODCAT_DA));
a.put("CODCAT",mask->get(F_R_CODCAT_A));
}else{
da.blank("CODCAT");// i campi non gestiti vengono riempiti di blank
a.blank("CODCAT");
}
da.put("CODART",mask->get(F_R_CODART_DA));
a.put("CODART",mask->get(F_R_CODART_A));
break;
case'I':// sconti incondizionati
if(_catven&&_scokey_catven){
da.put("CODCAT",mask->get(F_I_CATVEN_DA));
a.put("CODCAT",mask->get(F_I_CATVEN_A));
}else{
da.blank("CODCAT");// i campi non gestiti vengono riempiti di blank