#include /* string functions */ #include #include #include /* form header file */ #include #include /* key functions */ #include /* string fields */ #include /* help header file */ #include /* btrieve functions */ #include /* function prototypes */ #include #include #include reminder(fmp) /* reminder report */ MFORMPTR fmp; { char fn[] = "reminder"; DFORMPTR remrpt; DFIELDPTR fp; char template[9]; char rdate[9]; char y2kdate[11]; char *prtline; int i,j,k; /* counters in for loop */ long int remdate; int status; /* returned by BTRV */ int screen; INIT_MODULE(fn); strcpy(&fullpath[pathl],"ECREMIND.DAT"); /* add file name to path */ status = BTRV(b_open,rem_blk,(char *) &rem_buf,&rem_len,fullpath,0); if (status) { wfd_btr_err(status,"ECREMIND.DAT",fn,"open"); EXIT_MODULE(fn); return(SAMELEVEL); } stccpy(rdate,sysdate,sizeof(rdate)); /* init date to today */ remrpt = fm_def(12,27,5,27,(UCHAR) LMNINACT,BDR_DLNP); /* define form */ sw_title(" Report Date ",LMNACT,TOPCENTER,remrpt->wnp); /* set name */ fp = fld_def(1,1,"Reminder Date ",FADJACENT,"99/99/99",F_DATE, rdate,remrpt); sf_msg(msgline,fp); status = fm_proc(0,remrpt); /* process form */ fm_free(remrpt); if (status != AC_EXIT) /* Esc pressed or error */ { BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len,(char *) &rem_key1,1); EXIT_MODULE(fn); return(1); } if (st_isblank(rdate)) /* blank for report date */ { remdate = 0L; /* avoid error */ } else { y2k(y2kdate,rdate); /* convert date */ remdate = date_tojul(y2kdate,"MM/DD/YYYY"); /* convert to julian */ } rem_key1 = remdate; status = BTRV(b_getle,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); if (status != 0 && status != 4 && status != 9) { wfd_btr_err(status,"ECREMIND.DAT",fn,"open"); BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len,(char *) &rem_key1,1); EXIT_MODULE(fn); return(SAMELEVEL); } if (status != 0) { BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len,(char *) &rem_key1,1); wn_up(&msg); v_stpl(1,1,"No reminders due by ",&msg); v_st(rdate,&msg); v_stpl(3,1," - PRESS ANY KEY",&msg); ki(); wn_dn(&msg); EXIT_MODULE(fn); return(SAMELEVEL); } screen = scr_prt(); /* check for screen print */ if (screen) /* printing to screen */ { strcpy(template,"ECXXXXXX"); /* init template */ status = ec_tempf(template); /* get temporary file name */ if (status) { BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); EXIT_MODULE(fn); return(SAMELEVEL); } strcpy(&fullpath[pathl],template); /* add file name to path */ prtfil = fopen(fullpath,"wb+"); /* open temp file */ if (prtfil == NULLP) /* open failed */ { BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); wn_up(&ec_err); v_stpl(1,1,"Error opening screen file: ",&ec_err); v_stpl(2,1,fullpath,&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); csr_hide(); bell_err(); ki(); wn_dn(&ec_err); EXIT_MODULE(fn); return(SAMELEVEL); } } else { status = open_prt(rptprt); /* open report printer */ if (status) { BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); EXIT_MODULE(fn); return(SAMELEVEL); } } if (! wn_isup(&msg)) wn_up(&msg); else wn_clr(&msg); if (screen) { v_stattpl(1,CENTER_TEXT,"Creating temporary file ...", LURGENT,STATT,&msg); v_stattpl(3,CENTER_TEXT,"Press Esc to cancel", LMNINACT,STATT,&msg); } else { v_stattpl(1,CENTER_TEXT,"Printing the reminder report ...", LURGENT,STATT,&msg); v_stattpl(3,CENTER_TEXT,"Press Esc to cancel printing", LMNINACT,STATT,&msg); } csr_hide(); fputs("\r\n REMINDER REPORT",prtfil); fputs("\r\n For reminders due by ",prtfil); fputs(rdate,prtfil); prtline = mem_stblank(81); /* get memory for line */ fputs("\r\n\n",prtfil); fputs("\x1B\x0F",prtfil); /* put printer in compressed */ fputs(" Name Address City ST Zip ",prtfil); fputs("\r\n",prtfil); prline(NULLP,-1,5); /* init prline function */ do { if (ki_chk() == KEY_ESC) /* Esc pressed */ { ki(); /* remove Esc key */ wn_clr(&msg); v_stpl(1,CENTER_TEXT,"Report terminated by operator",&msg); prline(" *** Report terminated by operator ***",2,0); break; } if (rem_buf.data.rdate > remdate) break; /* no more reminders to prt */ strncpy(cus_key0,rem_buf.data.cusno,5); /* copy customer num to key */ status = BTRV(b_geteq,cus_blk,(char *) &cus_buf,&cus_len,cus_key0,0); if (status) { wn_up(&ec_err); v_stpl(1,1,"Customer ",&ec_err); stccpy(prtline,rem_buf.data.cusno,6); v_st(prtline,&ec_err); v_st(" NOT FOUND!",&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); ki(); wn_dn(&ec_err); status = BTRV(b_del,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); continue; } if (cus_buf.data.inactive == '*' || cus_buf.data.inactive == '@') { status = BTRV(b_del,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); continue; } strncpy(car_key1,rem_buf.data.carno,20); /* copy car num to key */ status = BTRV(b_geteq,car_blk,(char *) &car_buf,&car_len,car_key1,1); if (status) { wn_up(&ec_err); v_stpl(1,1,"Car ",&ec_err); stccpy(prtline,rem_buf.data.carno,21); v_st(prtline,&ec_err); v_st(" NOT FOUND!",&ec_err); v_stpl(3,1," - PRESS ANY KEY",&ec_err); ki(); wn_dn(&ec_err); status = BTRV(b_del,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); continue; } strcpy(prtline," "); /* indent 3 spaces */ prline(prtline,1,0); if (strncmp(&cus_buf.data.fname[0]," ",1) != 0) { for (k = 11; k > 0; k--) if (strncmp(&cus_buf.data.fname[k]," ",1) != 0) break; for (i = 0; i <= k; i++) prtline[i] = cus_buf.data.fname[i]; /* first name */ prtline[i++] = ' '; } else i = 0; for (k = 0; k < 20; k++,i++) prtline[i] = cus_buf.data.lname[k]; /* copy last name */ for (; i < 33; i++) prtline[i] = ' '; /* pad rest of name with ' ' */ prtline[33] = '\0'; /* add terminating null */ prline(prtline,0,0); prline(" ",0,0); stccpy(prtline,(char *) cus_buf.data.addr,37); prline(prtline,0,0); /* print address */ prline(" ",0,0); stccpy(prtline,(char *) cus_buf.data.city,21); prline(prtline,0,0); /* print city */ prline(" ",0,0); stccpy(prtline,(char *) cus_buf.data.state,3); prline(prtline,0,0); /* print state */ prline(" ",0,0); stccpy(prtline,(char *) cus_buf.data.zip,6); prline(prtline,0,0); /* print zip code */ strncpy(prtline,blanks,80); /* clear print line */ strcpy(prtline," "); /* indent 3 spaces */ prline(prtline,1,0); if (rem_buf.data.type == 'O') strcpy(prtline,"Oil change due for "); if (rem_buf.data.type == 'M') strcpy(prtline,"Maintenance due for "); prline(prtline,0,0); /* print message */ strncpy(prtline,blanks,80); /* clear print line */ for (i = 0,j = 0; i < 2; i++,j++) prtline[i] = car_buf.data.yr[i]; /* copy year to line */ prtline[j++] = ' '; for (k = 11; k >= 0; k--) if (strncmp(&car_buf.data.make[k]," ",1) != 0) break; for (i = 0; i <= k; i++,j++) prtline[j] = car_buf.data.make[i]; /* copy make to line */ prtline[j++] = ' '; for (k = 11; k >= 0; k--) if (strncmp(&car_buf.data.model[k]," ",1) != 0) break; for (i = 0; i <= k; i++,j++) prtline[j] = car_buf.data.model[i]; /* copy model to line */ prtline[j] = '\0'; prline(prtline,0,0); /* car description */ strcpy(prtline," "); /* skip next line */ prline(prtline,1,0); status = BTRV(b_del,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1); if (ferror(prtfil)) { if (screen) file_err(fullpath,fn,"fputs"); else file_err(rptprt,fn,"fputs"); break; } } while (! BTRV(b_getpr,rem_blk,(char *) &rem_buf,&rem_len, (char *) &rem_key1,1)); BTRV(b_close,rem_blk,(char *) &rem_buf,&rem_len,(char *) &rem_key1,1); fputs("\x1B\x12",prtfil); /* take off compressed mode */ fputs("\r\n\014",prtfil); /* newline and form feed */ fclose(prtfil); if (wn_isup(&msg)) wn_dn(&msg); if (screen) { disprpt(1,rptprt); /* display wide screen print */ remove(fullpath); /* delete file */ } if (wn_isup(&msg)) wn_dn(&msg); mem_free(prtline); EXIT_MODULE(fn); return(SAMELEVEL); }