: "pmpopp.sh by Dan Martin (DRM/CTG) Thu Aug 18 16:45:59 CDT 1994" # Precious Metals Purchase Order Posting and Printing # Mod 11/03/94: (-) abricate Items and (+) efine Items # Mod 03/27/95: use AWK/pop_all.awk instead of REPORTS/pms_po.ace [ -z "$SETOK" ] && exit 0 # to be sure invocation is via pm_setup.all # Help File: HELPS/pmpopp.h # Mod 02/09/95: Cancel Run when: [ "$SITE" != "$HOMEBASE" ] && { cat << YOW ======< PRECIOUS METALS PO GENERATION - $plname >====== SORRY, BUT PRECIOUS METALS PURCHASE ORDERS CAN ONLY BE GENERATED IF YOUR LOGIN IS "RESIDENT" AT YOUR HOME PLANT (i.e., "$HOMEBASE"). PRESENTLY IT IS RESIDENT AT PLANT "$SITE". THE PROBLEM IS THAT CRITICAL INFORMATION FOR PMS-POs IS ABSORBED DIRECTLY FROM YOUR LOGIN'S CURRENT ENVIRONMENT. FOR EXAMPLE, IF YOU WERE ALLOWED TO CONTINUE GENERATING PMS-POs, THE PLANT NAME ON THE PMS-PO WOULD BE "$plname", AND YOUR SIGNATURE ON THE PMS-PO, "$chief". -- NOT GOOD. TO CORRECT THE CONDITION, PLEASE TAKE THE STEPS BELOW, IN ORDER: 1) GO BACK TO THE PRECIOUS METALS SYSTEM MAIN MENU. 2) EXIT PMS, USING OPTION 0 (THIS WILL TAKE YOU BACK TO THE SPIMS "VISITOR MENU" FROM WHENCE YOU CAME). 3) "VISIT" YOUR HOME PLANT USING OPTION #6. 4) YOU MAY THEN RETURN TO THE PMS AND RESUME OPERATIONS. YOU WILL NOW BE RETURNED TO THE PURCHASE ORDER CONTROL MENU. YOW waiter exit 0 } # EOT [ "$SITE" != "$HOMEBASE" ] # Temp Files plok=/u/tmp/pmpolok # PO Lock-File f1=/u/tmp/pms1$$ f2=/u/tmp/pms2$$ f3=/u/tmp/pms3$$ f4=/u/tmp/pms4$$ f5=/u/tmp/pms5$$ f6=/u/tmp/pms6$$ f7=/u/tmp/pms7$$ ihpo=/u/tmp/ih$$ # all In-House POs vfpo=/u/tmp/vf$$ # Vendor Faxed POs vmpo=/u/tmp/vm$$ # Vendor Mailed POs # *Note: see /u/spims2/REPORTS/rfqok.ace for inspiration(s) eraser() { rm -f $plok $f1 $f2 $f3 $f4 $f5 $f6 $f7 $ihpo $vfpo $vmpo } trap 'echo "\n PM-PO GENERATION CANCELLED!!\n"; aborp; eraser; exit 1' 2 . $PMS/concur # Controls concurrent access to various scripts # If we're still alive, get the lock file NOW: echo "\n`logname` @ $plname - `basename $0` - `date`\n" >$plok aborp() { echo "\n No Precious Metals POs will be Printed or Posted.\n" dbaccess $PDB/inpo_pms - << OUCH # 2>/dev/null -- Change any back to and any back to EXECUTE PROCEDURE po_abo ("$LOGNAME", "$HOMEBASE"); OUCH } # EOF aborp() echo "\n Now seeking old and eady Precious Metals PO data...\c" failure() { # Arguments: $1 = Title for Review $2 = type of review trap '' 2 # gotta make sure [ab]User doesn't abort clean-up echo "\n FAILURE TO APPROVE $1 REVIEW ($2 PO's)." aborp eraser echo "\n PLEASE RETURN TO THE PO SCREEN AND MAKE CORRECTIONS\n" waiter exit 1 } # EOF failure() review() { # Arguments: $1 = Title for review # $2 = type of review tput clear # $3 = name of Hard Disk File to be reviewed cat << BOX =======< $1 REVIEW - $plname >====== You will be able to Display or Hardcopy the current group of "$2" Purchase Orders. Please take careful note of the Vendors, Items, and quantites on each PO and Supplement. After the Review, you will be asked to APPROVE the accuracy of the contents. If there is a mistake, then DO NOT affirm your approval. BOX waiter echo $C132 ${PMS}/SHELLS/help_me.sh $3 echo $C80 tput clear cat << YOW ====< $1 APPROVAL - $plname >==== IF the previous review of "$2" Purchase Orders WAS NOT 100% OK, then you MUST answer "N" to the prompt below. "N" will halt this program immediately, and POs WILL NOT be printed. "Y" will proceed to the next review-section of the program. YOW yorn="" while [ -z "$yorn" ] do echo " Was the \"$2\" Review 100% OK? (Y/N) \c" read yorn done case $yorn in y|Y) : ;; *) failure "$1" "$2";; esac } # EOF review() dareya() { nory="" while [ -z "$nory" ] do echo '\n IS EVERYTHING CORRECT (Y/N)? \c' read nory done nory=`echo "$nory" | tr "[a-z]" "[A-Z]"` # force UPPER CASE ANSWER if [ "$nory" != "Y" ] then echo "\n PROGRAM \"$0\" CANCELLED. PLEASE TRY AGAIN." aborp eraser exit 0 fi } # EOF dareya() dbaccess $PDB/inpo_pms - << LOK 2>/dev/null -- Get a File on all Plant & POs SELECT pomnum pom, DATE(pocreate) writ, pologad[1,5] pa, poplant plt, po_stat st, po_fom way, v_name[1,21] vnm FROM po_master, vendors WHERE po_stat IN ("H", "R") AND poplant = "$HOMEBASE" AND po_vnd = v_no INTO TEMP potm; -- Change all to & to (in Table po_master): EXECUTE PROCEDURE po_lok1 ("$LOGNAME", "$HOMEBASE"); -- Count the Line Items for each PO: SELECT ref_pono poi, COUNT(*) a, SUM(pt_amte) b, SUM(pd_amte) c, SUM(rh_amte) d FROM potm, refab WHERE pom = ref_pono AND ref_ty = "R" {efine Items are (+)} GROUP BY ref_pono UNION SELECT ref_pono, COUNT(*), -SUM(pt_amte), -SUM(pd_amte), -SUM(rh_amte) FROM potm, refab WHERE pom = ref_pono AND ref_ty = "F" {abricate Items are (-)} GROUP BY ref_pono INTO TEMP buy; SELECT poi, SUM(a) items, SUM(b) ept, SUM(c) epd, SUM(d) erh FROM buy GROUP BY poi INTO TEMP nitm; DROP TABLE buy; -- Dump a file on all old: UNLOAD TO "$f1" DELIMITER "^" SELECT pom, st, writ, pa, plt, items, "MAIL" via, vnm, ept, epd, erh FROM potm, nitm WHERE st = "H" AND pom = poi AND way = "M" UNION SELECT pom, st, writ, pa, plt, items, "FAX", vnm, ept, epd, erh FROM potm, nitm WHERE st = "H" AND pom = poi AND way = "F" ORDER BY 1; -- Dump a file on all eady: UNLOAD TO "$f2" DELIMITER "^" SELECT pom, st, writ, pa, plt, items, "MAIL" via, vnm, ept, epd, erh FROM potm, nitm WHERE st = "R" AND pom = poi AND way = "M" UNION SELECT pom, st, writ, pa, plt, items, "FAX", vnm, ept, epd, erh FROM potm, nitm WHERE st = "R" AND pom = poi AND way = "F" ORDER BY 1; DROP TABLE potm; DROP TABLE nitm; LOK >$f3 echo "\n ======< PRECIOUS METALS PO SUMMARY - $plname >======" >$TNIRP echo "\n NOTES: \"#I\" Column is Number of Items on PO." >>$TNIRP if [ -s "$f1" ] then awk -F"^" -f AWK/pmpopp1.awk $f1 >>$TNIRP else echo "\n (THERE ARE NO HOLD POs AS OF `date`)\n" >>$TNIRP fi if [ -s "$f2" ] then awk -F"^" -f AWK/pmpopp1.awk $f2 >>$TNIRP else echo "\n (THERE ARE NO READY POs AS OF `date`)\n" >>$TNIRP fi echo " END REPORT (ID: \"$0\") AS OF: `date`\n" >>$TNIRP SHELLS/help_me.sh $TNIRP dareya [ -s "$f1" ] && { # Oh, Joy! There _are_ some old PM-POs clear echo "\n ======< PRECIOUS METALS PO GENERATION - $plname >======" echo "\n * PLEASE SELECT $RN HOLD $RO PM-POs TO BE MADE $RN READY: $RO" echo ' * Entering "Y" or "R" will CHANGE the PO to eady' echo ' * Typos or the key will leave it on old.\n' echo ' PM PO WRITTEN ON AGENT VIA TO VENDOR' echo ' ----- ---------- ----- ---- ---------------------' icnt=`awk 'END {print NR}' $f1` # How many old POs are there? sl=1 yorn="" while [ "$sl" -le "$icnt" ] do # awk fields: # $1 = pom, $2 = st, $3 = writ, $4 = pa, # $5 = plt, $6 = items, $7 = via, $8 = vnm, # $9 = ept, $10 = epd, $11 = erh cat $f1 | sed -n ${sl}p | awk -F"^" \ "{printf(\" %5d %10s %-5s %4s %-21s $RN Make PO READY?:$RO \", \$1,\$3, \$4, \$7,\$8)}" read yorn case "$yorn" in y|Y|r|R) cat $f1 | sed -n ${sl}p | awk -F"^" '{printf("%d^R^\n", $1)}' >>$f3 sl=`expr $sl + 1` ;; *) cat $f1 | sed -n ${sl}p | awk -F"^" '{printf("%d^Q^\n", $1)}' >>$f3 sl=`expr $sl + 1` ;; esac done dareya echo "\n Now Updating to \"Ready\" those POs for which you answered \"Y\"...\c" } # EOT [ -s "$f1" ] [ ! -s "$f1" ] && echo "\n Data Gathering continues...\c" >$f2 dbaccess $PDB/inpo_pms - << UPD 2>/dev/null -- Re-Make and load temp. Column "st" will contain "R" or "Q" only. CREATE TEMP TABLE potm (pom integer, st char(1)); LOAD FROM "$f3" DELIMITER "^" INSERT INTO potm(pom, st); -- Make Rs go to Ys and Qs go back to Hs: EXECUTE PROCEDURE po_lok1 ("$LOGNAME", "$HOMEBASE"); DROP TABLE potm; SELECT pomnum pom, DATE(pocreate) writ, pologad[1,5] pa, po_fom way, poplant plt, po_stat st, v_name[1,21] vnm FROM po_master, vendors WHERE po_stat = "Y" AND po_vnd = v_no INTO TEMP popp; -- Count the Line Items for each Ready PO: SELECT ref_pono poi, COUNT(*) a, SUM(pt_amte) b, SUM(pd_amte) c, SUM(rh_amte) d FROM popp, refab WHERE pom = ref_pono AND ref_ty = "R" {efine Items all (+)} GROUP BY ref_pono UNION SELECT ref_pono, COUNT(*), -SUM(pt_amte), -SUM(pd_amte), -SUM(rh_amte) FROM popp, refab WHERE pom = ref_pono AND ref_ty = "F" {abricate Items all (-)} GROUP BY ref_pono INTO TEMP buy; SELECT poi, SUM(a) items, SUM(b) ept, SUM(c) epd, SUM(d) erh FROM buy GROUP BY poi INTO TEMP nitm; DROP TABLE buy; UNLOAD TO "$f2" DELIMITER "^" SELECT pom, st, writ, pa, plt, items, "MAIL" via, vnm, ept, epd, erh FROM popp, nitm WHERE pom = poi AND way = "M" UNION SELECT pom, st, writ, pa, plt, items, "FAX", vnm, ept, epd, erh FROM popp, nitm WHERE pom = poi AND way = "F" ORDER BY 1; DROP TABLE popp; DROP TABLE nitm; UPD echo "\n ======< \"READY\" PRECIOUS METALS POs FOR $plname >======" >$TNIRP echo "\n NOTES: \"#I\" Column is Number of Items on PO." >>$TNIRP awk -F"^" -f AWK/pmpopp1.awk $f2 >>$TNIRP echo " END REPORT (ID: \"$0\") AS OF: `date`\n" >>$TNIRP SHELLS/help_me.sh $TNIRP dareya clear echo "\n ======< PRECIOUS METALS PO GENERATION - $plname >======" echo "\n * PLEASE SELECT $RN READY $RO PM-POs TO BE $RN PRINTED: $RO" echo ' * "Y" or "P" will PRINT AND POST the PO.' echo ' * "N", any Typos, or the key will NOT print the PO.\n' echo ' PM PO WRITTEN ON AGENT VIA TO VENDOR' echo ' ----- ---------- ----- ---- ---------------------' icnt=`awk 'END {print NR}' $f2` # How many POs are there? sl=1 yorn="" >$f3 while [ "$sl" -le "$icnt" ] do # awk fields: # $1 = pom, $2 = st, $3 = writ, $4 = pa, # $5 = plt, $6 = items, $7 = via, $8 = vnm, # $9 = ept, $10 = epd, $11 = erh cat $f2 | sed -n ${sl}p | awk -F"^" \ "{printf(\" %5d %10s %-5s %4s %-21s $RN PRINT PO?:$RO \", \$1,\$3, \$4, \$7,\$8)}" read yorn case "$yorn" in y|Y|p|P) cat $f2 | sed -n ${sl}p | awk -F"^" '{printf("%d^Z^\n", $1)}' >>$f3 sl=`expr $sl + 1` ;; *) cat $f2 | sed -n ${sl}p | awk -F"^" '{printf("%d^N^\n", $1)}' >>$f3 sl=`expr $sl + 1` ;; esac done dareya ############################################################################# ## BY THIS POINT IN TIME THE [ab]USER SHOULD HAVE NO DOUBT AS TO WHICH ## ## P-M POs ARE GOING TO BE PRINTED AND POSTED. VERY SHORTLY THESE WILL BE ## ## IN THE PO-HEADER AS A STATUS OF 'Z", READY TO PROCEED WITH PROCESSING. ## ############################################################################# echo "\n EXTRACTING DATA FOR ALL \"Y\" PRECIOUS METALS PURCHASE ORDERS...\c" # FAX NUMBER FUDGING-MACHINE: case "$HOMEBASE" in bea|law|hoot) FPH="faxph";; *) FPH="faxph[3,18]";; # lose the "9 " for $f1 $f2 and $f5 esac # END FNFM dbaccess $PDB/inpo_pms - << FIND # 2>/dev/null -- Re-Make and load potm from $f3. Column "st" contains "Z" or "N" only. CREATE TEMP TABLE potm (pom integer, st char(1)); LOAD FROM "$f3" DELIMITER "^" INSERT INTO potm(pom, st); -- Make Rs go to Zs and Ys go back to Rs (in Table po_master): EXECUTE PROCEDURE po_lok1 ("$LOGNAME", "$HOMEBASE"); DROP TABLE potm; -- Find each Vendor's Total Net Current Tolerance by Metal: SELECT v_no vno, (pt_bal + pt_r_est - pt_f_est + v_pttol) pt_ok, (pd_bal + pd_r_est - pd_f_est + v_pdtol) pd_ok, (rh_bal + rh_r_est - rh_f_est + v_rhtol) rh_ok FROM vendors WHERE v_no > 0 INTO TEMP vb_ok; {Net Vendor Tolerances} -- Now find the Net Metal Needs per Vendor on eady ("Z", actually) POs: SELECT po_vnd, "R" ty, ref_pono pon, ref_ain ain, ref_name, pt_amte pt_po, pd_amte pd_po, rh_amte rh_po FROM po_master, refab WHERE po_stat = "Z" AND pomnum = ref_pono AND ref_ty = "R" {Refine Items all (+)} UNION SELECT po_vnd, "F", ref_pono, ref_ain, ref_name, -pt_amte, -pd_amte, -rh_amte FROM po_master, refab WHERE po_stat = "Z" AND pomnum = ref_pono AND ref_ty = "F" {Fabricate Items all (-)} ORDER BY 1, 2, 3 INTO TEMP pos; -------------------------------------------------------- -- NOW UNLOAD A FILE WHICH WILL SHOW THE [ab]USER -- -- EXACTLY WHAT METALS WERE CONSUMED ON THIS PO-RUN. -- -- Scratch file "$f6" is processed by AWK/pmpopp4.awk -- -- and also by AWK/pmpopp6.awk. DON'T CHANGE "$f6"! -- -- VALUES UNLOADED INTO "$f6" ARE LATER awkED INTO -- -- $f7 AND THEN SUBSEQUENTLY POSTED INTO THE VARIOUS -- -- VENDOR PRECIOUS METALS ACCOUNTS. -- -------------------------------------------------------- UNLOAD TO "$f6" DELIMITER "^" SELECT pon, po_vnd, v_name[1,21], ain, ty, ref_name, pt_po, pd_po, rh_po FROM pos, vendors {abricate values in pos are all (-)} WHERE po_vnd = v_no ORDER BY po_vnd, pon, ain; SELECT po_vnd vdr, SUM(pt_po) pt_nt, SUM(pd_po) pd_nt, SUM(rh_po) rh_nt FROM pos GROUP BY po_vnd INTO TEMP nets; {Net Ready PO Requirements} ------------------------------------------------------------------ -- Note that a (+) cell in Table "nets" is a Metal Deposit, -- -- and " " (-) " " " " " " " Withdrawal. -- ------------------------------------------------------------------ UNLOAD TO "$f3" DELIMITER "^" SELECT vdr, pt_nt, pd_nt, rh_nt, v_name[1,21] FROM nets, vendors WHERE vdr = v_no ORDER BY vdr; DROP TABLE pos; SELECT vno vnum, pt_ok ptbal, pd_ok pdbal, rh_ok rhbal FROM vb_ok UNION SELECT vdr, pt_nt, pd_nt, rh_nt FROM nets INTO TEMP kite; SELECT vnum, SUM(ptbal) npt, SUM(pdbal) npd, SUM(rhbal) nrh FROM kite GROUP BY vnum INTO TEMP pass; DROP TABLE kite; ------------------------------------------------------------------ -- Discover any Metal(s) Shortages for any Vendor(s). If the -- -- subsequent [ -s "$f4" ] is true, an OverDraft Report will be -- -- produced and this $0 will self-abort. Note that Tolerances -- -- are backed out of the short amounts for the OD Report. -- ------------------------------------------------------------------ UNLOAD TO "$f4" DELIMITER "^" SELECT vnum, (npt - v_pttol), "PT", v_name[1,21], (pt_ok - v_pttol), pt_nt FROM pass, vb_ok, nets, vendors WHERE npt < 0 AND vnum = v_no AND vnum = vno AND vnum = vdr UNION SELECT vnum, (npd - v_pdtol), "PD", v_name[1,21], (pd_ok - v_pdtol), pd_nt FROM pass, vb_ok, nets, vendors WHERE npd < 0 AND vnum = v_no AND vnum = vno AND vnum = vdr UNION SELECT vnum, (nrh - v_rhtol), "RH", v_name[1,21], (rh_ok - v_rhtol), rh_nt FROM pass, vb_ok, nets, vendors WHERE nrh < 0 AND vnum = v_no AND vnum = vno AND vnum = vdr ORDER BY 1, 3; DROP TABLE vb_ok; DROP TABLE nets; DROP TABLE pass; ---------------------------------------------------------- -- WHILE WE'VE STILL GOT dbaccess REVVED UP, UNLOAD ALL -- -- "Z" PO DATA FOR SUBSEQUENT PROCESSING BY the awk. -- -- WARNING: squipt "xfer.sh" ALSO USES THE SAME UNLOAD, -- -- ~~~~~~~ SO IMPLEMENT ANY FURURE CHANGES BELOW INTO -- -- IT AS WELL AS INTO AWK/pop_all.awk -- ---------------------------------------------------------- SELECT pomnum, podueby, po_vnd, po_attn, po_vdq, po_vrf, po_rfq, po_req, po_via, po_cpp, po_tax, po_cnf, po_trm, po_fob, TODAY ran, DATE(pocreate) rit, pomrem, po_fom, {19} v_no, v_name, v_add1, v_add2, v_city, v_st, v_zip, v_con, v_con_ph, $FPH, acctno, v_faxok, {31} who_log, who_at, who_tit, who_ami, {35} shplnam, shpladd, shplcty, shplst, shplzip, shplwho, shplph, shplfx, {43} poi_rec, poitxt, pov_rec, povtxt, {47} ref_name, ref_num, ref_ty, ref_ain, ref_vpn, ref_key, ref_gdi, ref_edi, ref_sha, ref_ega, ref_opt, ref_tpd, ref_flo, ref_sqi, ref_run, pt_amte, pd_amte, rh_amte, ref_ln1, ref_ln2, ref_ln3, ref_ln4, ref_ln5, ref_ln6, ref_ln7, ref_due, ptm, pdm, rhm, clo, ref, po_blnk FROM po_master, vendors, whocan, ship_to, refab, mkt, OUTER povco, OUTER poico WHERE po_stat = "Z" AND po_vnd = v_no AND pologad = who_log AND po_ship = shp_rec AND pomnum = poi_po AND pomnum = pov_po AND pomnum = ref_pono INTO TEMP allpo; UNLOAD TO "$f1" DELIMITER "^" SELECT * FROM allpo WHERE po_fom = "F" ORDER BY pomnum, poi_rec, pov_rec, ref_ain ; UNLOAD TO "$f2" DELIMITER "^" SELECT * FROM allpo WHERE po_fom = "M" ORDER BY pomnum, poi_rec, pov_rec, ref_ain ; DROP TABLE allpo; FIND # At the moment, the Temp Files now contain: # f1 = Faxed PO data (ASCII) # f2 = Mailed PO data (ASCII) # f3 = PO Net Estimate amounts for Posting Report # f4 = Overdraft Amounts by Metal and Vendor (if any) # f5 = null (but see further below) # f6 = Line Item Metal values - soon to be awked into $f7 and $TNIRP cp $f1 $PMS/TRAK/po1_fdat.$HOMEBASE # Faxed Data cp $f2 $PMS/TRAK/po1_hdat.$HOMEBASE # Mailed Data if [ -s "$f4" ] # _GASP_ WE'VE GOT METALLIC OVER-DRAFT(S)!! then echo "\n * * * ALERT FROM LOGIN \"`logname`\" AT $plname * * *" >$TNIRP echo " THE PRECIOUS METALS PURCHASE ORDERS PRINTING AND POSTING OPERATION" \ >> $TNIRP echo ' WAS COMPUTER-CANCELLED DUE TO SHORTAGE(S) OF PRECIOUS METAL:\n' \ >> $TNIRP awk -F"^" -f AWK/pmpopp2.awk $f4 >>$TNIRP echo "\n END REPORT (ID: \"$0\") AS OF: `date`\n" >>$TNIRP aborp eraser # for i in plw bat rwl # fink-mail # do # mail $i < $TNIRP # done lp -dlaw_plw $TNIRP # Patty prefers Hardcopy SHELLS/help_me.sh $TNIRP exit 0 ## BAIL OUT NOW! DIE! DIE! fi ## FIE! clear echo "\n ======< PRECIOUS METALS PO GENERATION - $plname >======" # Synthesize In-House PO data into $f5 (i.e., content of both $f1 and $f2): >$f5 # givita Fleet! [ -s "$f2" ] && cat $f2 >>$f5 # OK to take time for this now, [ -s "$f1" ] && cat $f1 >>$f5 # since we're still alive. if [ ! -s "$f5" ] # Get off this merry-go-round if there's no PO data then echo "\n NO PO DATA IS AVAILABLE. PO GENERATION IS CANCELLED." aborp eraser exit 0 else echo "\n FOUND PO IN-HOUSE DATA-FILE OK: (\"$f5\")." fi ## FIE! if [ ! -s "$f6" ] # Try to Get Off (of the m-g-r) if there's no Line-Item data then echo "\n NO PO LINE-ITEM DATA IS AVAILABLE. PO GENERATION IS CANCELLED." aborp eraser exit 0 else echo "\n FOUND PO LINE-ITEM DATA-FILE OK: (\"$f6\")." fi ## FIE! ############################################################################# ## WARNING: AWK/pmpopp6.awk has a hard-wired (but easy to change) limit of ## ## nine (9) Vendor-Numbers, providing for the future addition of ## ## up to six (6) more Vendors than presently (Thu Oct 13 1994) ## ## needed. If the limit of nine is exceeded, then those Vendors ## ## POs will not post until AWK/pmpopp6.awk is modified. ## ## See internal documentation for instructions how to do so. ## ############################################################################# # $f6 contains values for all Items. $f7 is a summary of same to be LOADed. awk -F"^" -f AWK/pmpopp6.awk $f6 >$f7 if [ ! -s "$f7" ] # Try to Get Off (of the m-g-r) if there's no Posting data then echo "\n NO PO POSTING DATA IS AVAILABLE. PO GENERATION IS CANCELLED." aborp eraser exit 0 else echo "\n FOUND PO POSTING DATA-FILE OK: (\"$f7\")." fi ## FIE! echo "\n NOW GENERATING IN-HOUSE PURCHASE ORDERS...\c" upit=`echo "$HOMEBASE" | tr "[a-z]" "[A-Z]"` # make UPPER CASE $HOMEBASE ############################################################# ## NOW USING AWK/pop_all.awk INSTEAD OF REPORTS/pms_po.ace ## ############################################################# eof=`awk 'END {print NR}' $f5` awk -f AWK/pop_all.awk -F"^" \ cona="$coname" plna="$plname" plad="$pladd" plct="$plcity" \ plst="$plst" plzp="$plzip" pvph="$plvph" pfph="$plfph" \ bmoc="$chief" btit="$title" pfix="$upit" fxhc="I" eof="$eof" \ $f5 >$ihpo # In-House POs are now done and living in $ihpo. if [ -s $f1 ] # there's some FAX PO-Data then echo "\n\n NOW GENERATING FAXED VENDOR PURCHASE ORDERS...\c" mv $f1 $f5 eof=`awk 'END {print NR}' $f5` awk -f AWK/pop_all.awk -F"^" \ cona="$coname" plna="$plname" plad="$pladd" plct="$plcity" \ plst="$plst" plzp="$plzip" pvph="$plvph" pfph="$plfph" \ bmoc="$chief" btit="$title" pfix="$upit" fxhc="F" eof="$eof" \ $f5 >$vfpo # Faxed POs are now done and living in $vfpo. else echo "\n NO FAXED-PO DATA IS AVAILABLE FOR PROCESSING." fi if [ -s $f2 ] # there's some MAIL PO-Data then echo "\n\n NOW GENERATING MAILED VENDOR PURCHASE ORDERS...\c" mv $f2 $f5 eof=`awk 'END {print NR}' $f5` awk -f AWK/pop_all.awk -F"^" \ cona="$coname" plna="$plname" plad="$pladd" plct="$plcity" \ plst="$plst" plzp="$plzip" pvph="$plvph" pfph="$plfph" \ bmoc="$chief" btit="$title" pfix="$upit" fxhc="H" eof="$eof" \ $f5 >$vmpo # Mailed POs are now done and living in $vmpo else echo "\n NO MAILED-PO DATA IS AVAILABLE FOR PROCESSING." fi [ -s "$ihpo" ] && review "IN-HOUSE PURCHASE ORDER" "IN-HOUSE" "$ihpo" [ -s "$vfpo" ] && review "FAX-TO-VENDOR PO" "FAX-TO-VENDOR" "$vfpo" [ -s "$vmpo" ] && review "MAIL-TO-VENDOR PO" "MAIL-TO-VENDOR" "$vmpo" clear cat << MEOW =======< FINAL PO APPROVAL - $plname >====== >>>>>>>> NOW READ THIS <<<<<<<< By now you have approved all Precious Metals IN-HOUSE, FAX-TO-VENDOR, and MAIL-to-VENDOR POs, as being 100% OK. If you choose to continue, all In-House and Mail-to-Vendor PO copies WILL be Hardcopied, and all Fax-to-Vendor PO Copies WILL be immediately Faxed without possibility of recall. IF: you feel IN ANY WAY UNSURE of this, THEN: you are advised to BAIL-OUT NOW! CAUTION: If you continue, it will be impossible to halt this program! The PO Hardcopy, Faxing, and Posting will proceed relentlessly. Press the key NOW to BAIL-OUT (last chance!), or MEOW waiter trap 'echo "\nOUCH!!\n"; continue' 2 # the [ab]User has NOT chosen abortion, tput clear # so run POs and Post everything ABS. echo "\n========[ NOW PRINTING & FAXING POs - $plname ]========" case $HOMEBASE in bea) PRLIST="$POPTR";; dod) PRLIST="$POPTR";; eni) PRLIST="$POPTR";; law) PRLIST="$POPTR";; *) PRLIST="law_plw";; esac TITLE="MAIL-TO-VENDOR PO's" if [ -s "$vmpo" ] then for i in $PRLIST # The value of PRLIST can contain several printer-names. do echo "\nNow sending $TITLE to PO printer \"${i}\":" lp -c -d${i} -o15 -oE $vmpo # Hardcopy at 15 cpi, 88 lpp lpstat -p $i -D sleep 2 done fi case $HOMEBASE in bea) PRLIST="$FAXPTR";; dod) PRLIST="$FAXPTR";; eni) PRLIST="$FAXPTR";; law) PRLIST="$FAXPTR";; *) PRLIST="law_plw";; # testing esac TITLE="FAX-TO-VENDOR PO's" if [ -s "$vfpo" ] then for i in $PRLIST # The value of PRLIST can contain several lp fax-names. do echo "\nNow sending $TITLE to FAX Machine \"${i}\":" lp -c -d${i} $vfpo # For use only with fax machine # lp -c -d${i} -o15 -oE $vfpo # Testing-only Hardcopy at 15 cpi, 88 lpp lpstat -p $i -D cp $vfpo $PMS/TRAK/po1_f.$HOMEBASE sleep 2 done else echo "\n NO PRECIOUS METALS PURCHASE ORDERS WERE FAXED.\n" sleep 2 fi case $HOMEBASE in bea) PRLIST="$INVPTR $ACCPTR law_plw";; dod) PRLIST="$INVPTR $ACCPTR law_plw";; eni) PRLIST="$INVPTR $ACCPTR law_plw";; law) PRLIST="$ACCPTR law_plw ice_lwhs law_nit";; *) PRLIST="law_plw";; esac TITLE="IN-HOUSE PO COPIES" if [ -s "$ihpo" ] then for i in $PRLIST # The value of PRLIST can contain several printer-names. do echo "\nNow sending $TITLE to printer \"${i}\":" lp -d${i} -o15 -oE $ihpo # Hardcopy at 15 cpi, 88 lpp lpstat -p $i -D sleep 2 done fi ######################################### ## PO PROCESSING & PRINTING ENDS HERE ## ######################################### echo "\n ======< PRECIOUS METALS PO POSTING REPORT - $plname >======" >$TNIRP echo "\n THESE PO LINE ITEM ESTIMATES HAVE BEEN POSTED \c" >>$TNIRP echo "(BY $LOGLONG):\n" >>$TNIRP awk -F"^" -f AWK/pmpopp4.awk $f6 >>$TNIRP echo "\n NOW POSTING PRECIOUS METALS PURCHASE ORDERS ESTIMATES\n" # Temps $f1, $f2, $f4, $f5, and $f6 are now available for re-cycling. dbaccess $PDB/inpo_pms - << POPO # 2>/dev/null CREATE TEMP TABLE post (vnd integer, ptr decimal(10,4), pdr decimal(10,4), rhr decimal(10,4), ptf decimal(10,4), pdf decimal(10,4), rhf decimal(10,4)); ---------------------------------------------------------- -- $f7 is produced by AWK/pmpopp6.awk using $f6 as data -- -- See Internal Comments above at approx Line 530 -- ---------------------------------------------------------- LOAD FROM "$f7" DELIMITER "^" INSERT INTO post (vnd, ptr, pdr, rhr, ptf, pdf, rhf); -- Just In Case... DE-NULL!! UPDATE post SET vnd = 0 WHERE vnd IS NULL; UPDATE post SET ptr = 0 WHERE ptr IS NULL; UPDATE post SET pdr = 0 WHERE pdr IS NULL; UPDATE post SET rhr = 0 WHERE rhr IS NULL; UPDATE post SET ptf = 0 WHERE ptf IS NULL; UPDATE post SET pdf = 0 WHERE pdf IS NULL; UPDATE post SET rhf = 0 WHERE rhf IS NULL; -- Get rid of all-zero rows (so Procedure po_post() won't bother with them). DELETE FROM post WHERE (ptr + pdr + rhr + ptf + pdf + rhf) = 0; --------------------------------------------------- -- Notes: pmpopp6.awk has accounted for the sign -- -- of all Estimated Fabricate (-) values, -- -- and TEMP Table post now has only one -- -- row per "real" Vendor. TEMP post will -- -- later be used by Procedure po_post(). -- --------------------------------------------------- EXECUTE PROCEDURE hist_all ("BBE", "VENDOR PRE-POSTING HISTORICAL BALANCES"); -- Find each Vendor's PRE-POST Net Total Current Balances by Metal: UNLOAD TO "$f2" DELIMITER "^" SELECT v_no, (pt_bal + pt_r_est - pt_f_est), (pd_bal + pd_r_est - pd_f_est), (rh_bal + rh_r_est - rh_f_est), v_name[1,21] FROM vendors, post WHERE v_no = vnd; EXECUTE PROCEDURE hist_vd0 ("BBE", "ALL VENDOR TOTALS BEFORE POSTING PO ESTIMATES", "$HOMEBASE", "LOGNAME"); -- Here's where the Big Thing happens: EXECUTE PROCEDURE po_post ("$LOGNAME", "$HOMEBASE"); -- Find Vendor's NEW Net Total Current Balances by Metal: UNLOAD TO "$f4" DELIMITER "^" SELECT v_no, (pt_bal + pt_r_est - pt_f_est), (pd_bal + pd_r_est - pd_f_est), (rh_bal + rh_r_est - rh_f_est), v_name[1,21] FROM vendors, post WHERE v_no = vnd; EXECUTE PROCEDURE hist_vd0 ("BAE", "ALL VENDOR TOTALS AFTER POSTING PO ESTIMATES", "$HOMEBASE", "LOGNAME"); EXECUTE PROCEDURE hist_all ("BAE", "VENDOR AFTER-POSTING HISTORICAL BALANCES"); DROP TABLE post; UNLOAD TO "$PMS/pmsbals" DELIMITER "^" SELECT ptnet, pdnet, rhnet FROM pmbals {a VIEW} ; -- See /u2/pmet2/DB/pms_stru/01_ven.sql within which VIEW is CREATEd. POPO echo "\n THESE ARE THE PRE-POSTING NET TOTALS FOR VENDORS LISTED:\n" >>$TNIRP awk -F"^" -f AWK/pmpopp3.awk $f2 >>$TNIRP echo "\n NET TOTALS (BELOW) OF LINE ITEMS (FURTHER ABOVE) POSTED:\n" \ >>$TNIRP awk -F"^" -f AWK/pmpopp3.awk $f3 >>$TNIRP echo "\n THESE ARE THE AFTER-POSTING NET TOTALS FOR VENDORS LISTED:\n" >>$TNIRP awk -F"^" -f AWK/pmpopp3.awk $f4 >>$TNIRP echo "\n END REPORT (ID: \"$0\") AS OF: `date`\n" >>$TNIRP for i in plw # fink-mail do mail $i < $TNIRP done case $HOMEBASE in bea) PRLIST="$INVPTR $ACCPTR law_plw";; dod) PRLIST="$INVPTR $ACCPTR law_plw";; eni) PRLIST="$INVPTR $ACCPTR law_plw";; law) PRLIST="$ACCPTR law_plw";; *) PRLIST="law_plw";; esac TITLE="PRECIOUS METALS PO POSTING REPORT" if [ -s "$TNIRP" ] then for i in $PRLIST # The value of PRLIST can contain several printer-names. do echo "\nNow sending $TITLE to printer \"${i}\":" pr -o2 $TNIRP | lp -d$i lpstat -p $i -D done fi echo "\n Precious Metals Purchase Order Printing and Posting is Complete.\n" eraser waiter # EOF pmpopp.sh