Files
CGW/CGWPRNT2.PRG
Jason Soltys 7905c43278 first commit
2026-07-14 00:41:31 -05:00

2365 lines
92 KiB
Plaintext

*****************************************************************
//** P3N - 8/20/99 - MOVED FROM CGWPRINT.PRG
//** P3N - 8/20/99 - CGWPRINT.PRG WAS TOOO BIG FOR THE DBUGER
*****************************************************************
FUNCTION FORMAT_PRT(BODY_DESC, PAMTS_ARR, PADSZ, SUBTYPE, WHCHORDER, ;
PARTIAL_INVOICE, REPRINT_INVOICE )
LOCAL PRT_VAL, NEGAMT, NEGTOT, PRT_AMTS := PAMTS_ARR[5], PRT_BO := PAMTS_ARR[6]
LOCAL BOQTY := PAMTS_ARR[2], SHPQTY := PAMTS_ARR[3], INVQTY := 0
LOCAL OQTY := PAMTS_ARR[1], XQTY := PAMTS_ARR[7], XUOM := ' ', MIENTRYSZ := 0
LOCAL PRT_QTY := 0, TOTWINDOWS := XQTY + 1, WORKVAR
IF WHCHORDER == 'BACKORD' //** P3N -12/2/98
BOQTY := PAMTS_ARR[3] //** P3N -12/2/98
SHPQTY := 0 //** P3N -12/2/98
ENDIF
IF LEN(PAMTS_ARR) >= 8
IF EMPTY(PAMTS_ARR[8]) //** P3N - 12/3/98
XUOM := ' '
ELSE
XUOM := ALLTRIM(PAMTS_ARR[8]) + ' ' //** P3N - 12/01/98
ENDIF
ENDIF
IF LEN(PAMTS_ARR) >= 9 //** P3N - 12/3/98
IF EMPTY(PAMTS_ARR[9]) //** P3N - 12/3/98
INVQTY := 0 //** P3N - 12/3/98
ELSE //** P3N - 12/3/98
INVQTY := PAMTS_ARR[9] //** P3N - 12/3/98
ENDIF
ENDIF
/////////////*****************\\\\\\\\\\\\\\\\\\\\\\\
//** IF THE OQTY IS AN ARRAY - IT CONTAINS THE QTY AND THE
//** MISC_ITEMS ENTRY SIZE WHICH WILL PRINT IN THE PLACE OF THE QTY.
/////////////*****************\\\\\\\\\\\\\\\\\\\\\\\
IF VALTYPE(OQTY) = 'A'
PAMTS_ARR[1] := OQTY[1]
MIENTRYSZ := FORMAT_MISCSIZE( OQTY[2] )
OQTY := PAMTS_ARR[1] //** NUMERIC MISC ITEM ORDER QTY
ELSEIF EMPTY(OQTY) // NUMERIC QUANTITY //** P3N - 6/5/98
OQTY := 0 //** P3N - 12/2/98
ENDIF
IF VALTYPE(MIENTRYSZ) = 'N' //** P3N -12/3/98
IF EMPTY(MIENTRYSZ) //** P3N -12/3/98
ELSE //** P3N -12/3/98
XUOM := STR(MIENTRYSZ) + ' ' + XUOM //** P3N -12/3/98
OQTY := 0 //** P3N - 5/26/98
BOQTY := 0 //** P3N - 5/26/98
SHPQTY := 0 //** P3N - 5/26/98
ENDIF //** P3N -12/3/98
IF WHCHORDER == 'BACKORD' //** P3N -12/3/98
IF EMPTY(BOQTY) //** P3N - 5/26/99
PRT_VAL := SPACE(13) //** P3N - 5/26/99
//** IOLA AND PAWNEE USE DELIVERY COPIES FOR BACKORDERS
ELSEIF MHOME_LOC_CODE = 'PAWNEE' //** P3N - 2/23/99
IF BOQTY <= 999 //** P3N - 2/23/99
PRT_VAL := SPACE(5) + STR(BOQTY, 4,0)+SPACE(4)
ELSE //** P3N - 2/23/99
PRT_VAL := SPACE(3) + STR(BOQTY, 6,0)+SPACE(4)
ENDIF //** P3N - 2/23/99
ELSEIF MHOME_LOC_CODE = 'IOLA' //** P3N - 3/09/99
IF BOQTY <= 999 //** P3N - 3/09/99
PRT_VAL := SPACE(4) + STR(BOQTY, 4,0)+SPACE(5)
ELSE //** P3N - 3/09/99
PRT_VAL := SPACE(3) + STR(BOQTY, 6,0)+SPACE(4)
ENDIF //** P3N - 3/09/99
ELSE //** P3N - 3/09/99
IF BOQTY <= 999 //** P3N -12/3/98
PRT_VAL := SPACE(9) + STR(BOQTY, 4,0) //** P3N -12/3/98
ELSE //** P3N -12/3/98
PRT_VAL := SPACE(7) + STR(BOQTY, 6,0) //** P3N -12/3/98
ENDIF //** P3N -12/3/98
ENDIF //** P3N - 2/23/99
ELSE
//** MISC ITEMS CAN HAVE A QTY OF 999999
IF OQTY <= 999 //** P3N -12/3/98
IF EMPTY(OQTY) //** P3N - 5/10/99
PRT_VAL := SPACE(4) // ORDER QTY //** P3N - 5/10/99
ELSE //** P3N - 5/10/99
PRT_VAL := STR(OQTY,4,0) // ORDER QTY //** P3N -12/3/98
ENDIF //** P3N - 5/10/99
IF PRT_BO .AND. !EMPTY(BOQTY) // DO NOT PRINT 0 BACK ORDER QTY
PRT_VAL := PRT_VAL + SPACE(1) + STR(BOQTY,3,0) //BACK ORDER QTY
ELSE
PRT_VAL := PRT_VAL + SPACE(4)
ENDIF
IF PRT_BO .AND. !EMPTY( SHPQTY ) .AND. ; // DO NOT PRINT 0 SHIP QTY
PAMTS_ARR[1] <> SHPQTY // IS THE ORDER QTY = SHIP QTY
PRT_VAL := PRT_VAL + SPACE(2) + STR(SHPQTY,3,0) //SHIP QTY
ELSE
PRT_VAL := PRT_VAL + SPACE(5)
ENDIF
ELSEIF EMPTY(OQTY) //** P3N - 5/10/99
PRT_VAL := SPACE(6) //MISC ITEM ORDER QTY //** P3N - 5/10/99
ELSE //** P3N - 5/10/99
PRT_VAL := STR(OQTY,6,0) //MISC ITEM ORDER QTY //** P3N -12/3/98
ENDIF //** P3N - 5/10/99
PRT_VAL := PADR(PRT_VAL, 13,' ') //** P3N -12/3/98
ENDIF
PRT_VAL := PRT_VAL + SPACE(2)
IF PRT_AMTS .AND. !EMPTY(PAMTS_ARR[4])
IF EMPTY(XUOM)
PRT_VAL := PRT_VAL + PADR(ALLTRIM(BODY_DESC), PADSZ, ' ') //ITEM DESC
ELSE
PRT_VAL := PRT_VAL + PADR(XUOM + ALLTRIM(BODY_DESC), PADSZ, ' ') //ITEM DESC
ENDIF
IF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. PARTIAL_INVOICE
PRTQTY := SHPQTY
ELSEIF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. REPRINT_INVOICE
PRTQTY := INVQTY
ELSE
PRTQTY := PAMTS_ARR[1]
ENDIF
IF PAMTS_ARR[4] < 0 .OR. PAMTS_ARR[1] < 0
//** P3N - 11/23/98 PARTIAL INVOICE MODIFICATIONS
//**NEGTOT := TRANSFORM(PAMTS_ARR[1] * PAMTS_ARR[4],'(9999999999.99)')
NEGTOT := TRANSFORM(PRTQTY * PAMTS_ARR[4],'(9999999999.99)')
NEGAMT := TRANSFORM(PAMTS_ARR[4],'(99999.99)')
NEGAMT := STRTRAN(NEGAMT, ' ', '')
NEGAMT := STRTRAN(NEGAMT, '-', '')
NEGTOT := STRTRAN(NEGTOT, ' ', '')
NEGTOT := STRTRAN(NEGTOT, '-', '')
NEGAMT := PADL(NEGAMT, 9, ' ')
NEGTOT := PADL(NEGTOT,13, ' ')
ELSE
NEGAMT := 0
NEGTOT := 0
ENDIF
WORKVAR := STR(PAMTS_ARR[4],12,4)
//**IF MHOME_LOC_CODE = 'KC' .OR. MHOME_LOC_CODE = 'LINDS' //PER LINDA - 6/16/97
//** PRT_VAL := PRT_VAL + ' '
//**ENDIF
//**IF MHOME_LOC_CODE = 'KC' //** P3N - 7/18/00 remove spaces for kc
//** PRT_VAL := PRT_VAL + ' '
//**ENDIF
IF MHOME_LOC_CODE = 'LINDS' //** P3N - 7/17/00 ADDRESS THE DELIVERY TICKET PRINT ISSUES
IF SUBTYPE = 'DELIVERY' //** P3N - 7/17/00
PRT_VAL := PRT_VAL + ' ' //** P3N - 7/17/00
ELSE //** P3N - 7/17/00
PRT_VAL := PRT_VAL + ' ' //** P3N - 7/17/00 LEAVE THE SAME FOR ALL OTHER COPIES AT LINDS
ENDIF //** P3N - 7/17/00
ELSEIF MHOME_LOC_CODE = 'KC' //** P3N - 7/18/00 LEAVE THE SAME FOR KC COPIES
PRT_VAL := PRT_VAL + ' ' //** P3N - 7/18/00
ENDIF
IF RIGHT(WORKVAR,2) = '00'
IF EMPTY(NEGAMT)
PRT_VAL := PRT_VAL + STR(PAMTS_ARR[4], 8, 2) //POSITIVE ITEM AMT
ELSE
PRT_VAL := PRT_VAL + NEGAMT //(NEGATIVE) ITEM AMT
ENDIF
IF MHOME_LOC_CODE = 'KC'
PRT_VAL := PRT_VAL + ' '
ENDIF
IF EMPTY(NEGTOT) //POSITIVE TOTAL AMT
IF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. PARTIAL_INVOICE
PRT_VAL := PRT_VAL + STR( SHPQTY * PAMTS_ARR[4], 13, 2 )
ELSEIF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. REPRINT_INVOICE
PRT_VAL := PRT_VAL + STR( INVQTY * PAMTS_ARR[4], 13, 2 )
ELSE
PRT_VAL := PRT_VAL + STR( PAMTS_ARR[1] * PAMTS_ARR[4], 13, 2 )
ENDIF
ELSE
PRT_VAL := PRT_VAL + NEGTOT //(NEGATIVE) TOTAL AMT
ENDIF
ELSE
IF EMPTY(NEGAMT) //POSITIVE AMT
PRT_VAL := PRT_VAL + STR(PAMTS_ARR[4], 9, 4) //MISC 9.9999 ITEM AMT
ELSE
PRT_VAL := PRT_VAL + NEGAMT //MISC 9.9999 ITEM AMT
ENDIF
IF MHOME_LOC_CODE = 'KC'
PRT_VAL := PRT_VAL + ' '
ENDIF
IF EMPTY(NEGTOT) //POSITIVE TOTAL AMT
IF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. PARTIAL_INVOICE
PRT_VAL := PRT_VAL + STR( SHPQTY * PAMTS_ARR[4], 12, 2 )
ELSEIF CUR_MAST == 'ORD_MAST' .AND. WHCHORDER == 'INV' .AND. REPRINT_INVOICE
PRT_VAL := PRT_VAL + STR( INVQTY * PAMTS_ARR[4], 12, 2 )
ELSE
PRT_VAL := PRT_VAL + STR( PAMTS_ARR[1] * PAMTS_ARR[4], 12, 2 )
ENDIF
ELSE
PRT_VAL := PRT_VAL + NEGTOT //(NEGATIVE) TOTAL
ENDIF
ENDIF
ELSEIF EMPTY(XUOM)
PRT_VAL := PRT_VAL + PADR(ALLTRIM(BODY_DESC), PADSZ, ' ') //ITEM DESC
ELSE
PRT_VAL := PRT_VAL + PADR(XUOM + ALLTRIM(BODY_DESC), PADSZ, ' ') //ITEM DESC
ENDIF
ELSE
//** INVALID MISC ITEM ENTRY SIZE
PRT_VAL := MIENTRYSZ+' '+ PADR(XUOM + ALLTRIM(BODY_DESC), PADSZ, ' ') //ITEM DESC
ENDIF
RETURN PRT_VAL
**************************************************
**************************************************
**************************************************
***************************************************************
//* PRINT THE ORDER AS DEFINED IN THE PASSED ARRAYS
***************************************************************
FUNCTION PROCESS_OO(PHEAD_ARR, PBODY_ARR, PTAIL_ARR, PAMTS_ARR, SUBTYPE, ;
PRT_GL_INFO, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
LOCAL I:= 0, PG_NUM := 0, LINE_CNT := 0, LINES_DONE := 0, PASSHEAD := {}
LOCAL SV_LI_DESC := {}, TAILERR, WKNOTEARR, N := 0
LOCAL PG_DEF_ARR := CALC_PAGES(PBODY_ARR, PTAIL_ARR)
LOCAL TOTL_PAGES := LEN(PG_DEF_ARR)
LOCAL WKNOTES := '', PRNTLEN := 55 //** P3N - 12/22/00
LOCAL RETVARARR := {}, II := 0 //** P3N - 12/22/00
//** ADDRESS LINDS DELIVERY COPY PRINT ANOMALLY //** P3N - 7/12/00
LOCAL SVLMAR := MLMAR //** P3N - 7/12/00
IF EMPTY(PRINTERS->SP10) //** P3N - 05/16/01
TSTPRT := '' //** P3N - 05/16/01
ELSE //** FOR TESTING WITH EPSON LQ-500 //** P3N - 05/16/01
TSTPRT := ALLTRIM(PRINTERS->SP10) //** P3N - 05/16/01
TSTPRT := &TSTPRT //** P3N - 05/16/01
?? TSTPRT //** P3N - 05/16/01
ENDIF //** P3N - 05/16/01
IF MHOME_LOC_CODE == 'LINDS ' //** P3N - 7/12/00
IF SUBTYPE == 'DELIVERY' //** P3N - 7/12/00
MLMAR := SPACE( LEN(MLMAR) - 5 ) //** P3N - 7/12/00
ENDIF //** P3N - 7/12/00
ENDIF //** P3N - 7/12/00
IF TOTL_PAGES = 0
RETURN
ENDIF
IF PG_DEF_ARR[TOTL_PAGES, 2] + LEN(PTAIL_ARR) > MBODY_LEN
TOTL_PAGES := TOTL_PAGES + 1
ENDIF
FOR I := 1 TO LEN(PG_DEF_ARR)
IF OUTMODE == 'PRINT' //** P3N - 12/14/98
IF !EJECT_MSG()
RETURN
ENDIF
ENDIF
FOR II := 1 TO MTMAR
? // PRINT THE TOP MARGIN LINES AS DEFINED IN
NEXT // THE CONTROL FILE FIELD TMAR
PG_NUM := PG_NUM + 1
//* THE CUSTOMER INVOICE MUST FIT ON THE EXISTING ORDER FORM
PRT_HEAD(PHEAD_ARR, PG_NUM, TOTL_PAGES, SUBTYPE )
IF I <= LEN(PG_DEF_ARR)
LINE_CNT := PG_DEF_ARR[I,2]
IF EMPTY(SV_LI_DESC) .OR. EMPTY(LINES_DONE)
SV_LI_DESC := ;
PRT_BODY(PBODY_ARR, PG_DEF_ARR[I, 2], LINES_DONE, PAMTS_ARR, , ;
SUBTYPE, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE)
ELSE
SV_LI_DESC := ;
PRT_BODY(PBODY_ARR, PG_DEF_ARR[I, 2], LINES_DONE, PAMTS_ARR, ;
SV_LI_DESC, SUBTYPE, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE )
IF PG_NUM == TOTL_PAGES
SV_LI_DESC := {} // CLEAR LINE ITEM DESC FOR NEXT PRODUCT
ENDIF
ENDIF
LINES_DONE := LINES_DONE + PG_DEF_ARR[I,2]
ENDIF
//** FIXED NOTE FIELD ON ORDER SCREEN
IF !EMPTY( (CUR_MAST)->NOTE_FIELD ) .AND. (CUR_MAST)->PRNT_NOTES$'Y'
//PRT ORDER MASTER ONE LINE NOTE - UP TO 5 LINES OF 55 BYTES / 254 CHARS. TOTAL
//**? SPACE(15) + ALLTRIM((CUR_MAST)->NOTE_FIELD) //** P3N - 12/22/00
WKNOTES := (CUR_MAST)->NOTE_FIELD //** P3N - 12/22/00
RETVARARR := PRT_MEMO({}, {}, WKNOTES, PRNTLEN) // PRINT THE ORDER MASTER NOTES
IF EMPTY(RETVARARR) //** P3N - 12/22/00
ELSE //** P3N - 12/22/00
WKNOTES := RETVARARR[1] //** P3N - 12/22/00
FOR II := 1 TO LEN(WKNOTES) //** P3N - 12/22/00
IF EMPTY(WKNOTES[II]) //** P3N - 05/15/01
ELSE //** P3N - 05/15/01
? SPACE(15) + WKNOTES[II] //** P3N - 12/22/00
ENDIF //** P3N - 05/15/01
NEXT //** P3N - 12/22/00
ENDIF //** P3N - 12/22/00
ENDIF
IF LEN(PG_DEF_ARR) < TOTL_PAGES .OR. I < LEN(PG_DEF_ARR)
?? CHR(13) + CHR(10)
EJECT
ENDIF
NEXT
IF LEN(PG_DEF_ARR) < TOTL_PAGES
IF OUTMODE == 'PRINT' //** P3N - 12/14/98
IF !EJECT_MSG()
RETURN
ENDIF
ENDIF
PG_NUM := PG_NUM + 1
PRT_HEAD(PHEAD_ARR, PG_NUM, TOTL_PAGES, SUBTYPE )
LINES_DONE := 0
ELSE
LINES_DONE := PG_DEF_ARR[TOTL_PAGES,2]
ENDIF
TAILERR := PRT_TAIL(PTAIL_ARR, LINES_DONE, PRT_GL_INFO, WHCHORDER, SUBTYPE, PG_DEF_ARR )
?? CHR(13) + CHR(10)
EJECT
IF EMPTY(TSTPRT) //** P3N - 05/16/01
ELSE //** SET BACK TO 10 PITCH (CPI) //** P3N - 05/16/01
TSTPRT := SP10 //** P3N - 05/16/01
ENDIF //** P3N - 05/16/01
IF EMPTY(TAILERR)
ELSE
SET_P_OFF()
IF PRT_GL_INFO .AND. TAILERR < 3
ERR_BOX('** Can NOT print GL entries on bottom of this Order! **')
ELSE
ERR_BOX('** Can NOT print ENTIRE Invoice Msg on the bottom of this Order! **')
ENDIF
ENDIF
MLMAR := SVLMAR //** P3N - 7/12/00
RETURN
*************************************************************
*************************************************************
*************************************************************
FUNCTION EJECT_MSG()
// NOTE THAT FORMTYPE MAY = 'PREPRINT-TRACTOR' - THUS BYPASS THIS LOGIC
IF FORMTYPE == 'PREPRINT' // PRE-PRINTED FORMS
IF MSING_SHEET == 'Y' // SINGLE SHEET FEED
//SEND MSG FOR PAUSE
SET_P_OFF(.F.) // DON'T CHANGE PRINTER PORT ASSIGNMENT
?? CHR(7)
@ 23,0 SAY 'Place PRE-PRINTED ORDER FORM in PRINTER - Then Any Key to CONTINUE.'
@ 24,0 SAY ' OR Press <ESC> to CANCEL.'
CLEAR TYPEAHEAD
INKEY(0) //PAUSE
@23, 0
@24, 0
IF LASTKEY() = 27
RETURN .F.
ENDIF
SET_P_ON()
ENDIF
ENDIF
RETURN .T.
***************************************************************
//* PRINT THE ORDER HEADING
***************************************************************
FUNCTION PRT_HEAD(PHEAD_ARR, PG_NUM, TOT_PAGES, SUBTYPE )
LOCAL PG_HD := 'Page' + STR(PG_NUM,2) + ' OF ' + STR(TOT_PAGES,2), I_NUMPRT, I_LINE, I
// I_NUMPRT := INVOICE NUMBER TO PRINT IN BOLD LETTERS
IF SUBTYPE <> 'PREBILL' ;
.AND. SUBTYPE <> 'PO' // SUPRESS ORDER NUMBER ON INTER-COMPANY PO'S PER DARLENE 6-26-20
I_NUMPRT := &WIDEON + (CUR_MAST)->ORDER_NUM + &WIDEOFF
ELSE
I_NUMPRT := ''
ENDIF
IF MHOME_LOC_CODE = 'IOLA'
?
?
ENDIF
IF MHOME_LOC_CODE = 'LINDS'
I_LINE := 3 //NEW FORMS - ADJUST BASED ON THE LP_HEADING() FUNCTION!
ELSEIF MHOME_LOC_CODE = 'PAWNEE' //** P3N - 2/04/99
IF FORMTYPE = 'PREPRINT' // PRE-PRINTED FORMS //** P3N - 2/04/99
? //** P3N - 2/04/99
I_LINE := 5 //PAWNEE FORMS - ADJUST BASED ON THE LP_HEADING() FUNCTION!
ELSE
I_LINE := 1
ENDIF
ELSE
I_LINE := 1
ENDIF
FOR I := 1 TO LEN(PHEAD_ARR)
IF I = I_LINE
IF MHOME_LOC_CODE = 'IOLA'
? PADR(MLMAR + PHEAD_ARR[I], 60) + I_NUMPRT
ELSEIF MHOME_LOC_CODE = 'KC'
IF AT('DUPLICATE', PHEAD_ARR[I]) > 0 //DUPLICATE INVOICE MSG
? PADR(MLMAR + PHEAD_ARR[I], 63) + I_NUMPRT
ELSE
? PADR(MLMAR + PHEAD_ARR[I], 70) + I_NUMPRT
ENDIF
ELSE
? PADR(MLMAR + PHEAD_ARR[I], 66) + I_NUMPRT
ENDIF
ELSEIF I = I_LINE + 1
IF MHOME_LOC_CODE = 'KC'
? PADR(MLMAR + PHEAD_ARR[I], 70) + PG_HD
ELSEIF MHOME_LOC_CODE = 'PAWNEE'
IF SUBTYPE = 'DELIVERY'
? PADR(MLMAR + PHEAD_ARR[I], 63) + PG_HD
ELSE
? PADR(MLMAR + PHEAD_ARR[I], 66) + PG_HD
ENDIF
ELSEIF MHOME_LOC_CODE = 'LINDS' //** P3N - 7/12/00
IF SUBTYPE = 'DELIVERY' .AND. ; //** P3N - 7/12/00
AT('DUPLICATE', PHEAD_ARR[I]) > 0 //DUPLICATE INVOICE MSG
? PADR(MLMAR + PHEAD_ARR[I], 59) + PG_HD //** P3N - 7/12/00
ELSE //** P3N - 7/12/00
? PADR(MLMAR + PHEAD_ARR[I], 66) + PG_HD //** P3N - 7/12/00
ENDIF //** P3N - 7/12/00
ELSE
? PADR(MLMAR + PHEAD_ARR[I], 66) + PG_HD
ENDIF
ELSE
? MLMAR + PHEAD_ARR[I]
ENDIF
NEXT
RETURN
***************************************************************
//* PRINT THE ORDER BODY
***************************************************************
FUNCTION PRT_BODY(PBODY_ARR, LINE_CNT, LINES_DONE, PAMTS_ARR , SV_LI_DESC, ;
SUBTYPE, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE)
LOCAL I, CUR_LINE := LINES_DONE + 1, PRT_VAL
LOCAL PADSZ := 43, IOLAMAR := '', STRTPOS, II := 0, RET_VAL := SV_LI_DESC
IF FORMTYPE <> 'PREPRINT' .AND. !DO_WE_PRT_AMT( WHCHORDER, SUBTYPE ) //** P3N - 10/13/98
PADSZ := 60 //** P3N - 10/13/98
ENDIF //** P3N - 10/13/98
FOR I := 1 TO LINE_CNT
IF LEFT(PBODY_ARR[CUR_LINE], 1) == '^'
SV_LI_DESC := {} //CLEAR LINE ITEM HEADING
IF EMPTY(SUBS(PBODY_ARR[CUR_LINE],2))
ELSE
RET_VAL := SV_DESC_LINE_ITEM(PBODY_ARR, CUR_LINE) //FIND LINE ITEM HEADING
ENDIF
IF SUBS(PBODY_ARR[CUR_LINE], 2,1)$CHR(1)
STRTPOS := 3
ELSE
STRTPOS := 2
ENDIF
IF PAMTS_ARR[CUR_LINE] = NIL
// use entire line - no amounts will print
PRT_VAL := SPACE(15) + ALLTRIM(SUBS(PBODY_ARR[CUR_LINE], STRTPOS ))
ELSEIF EMPTY( PAMTS_ARR[CUR_LINE] )
PRT_VAL := PBODY_ARR[CUR_LINE] // ITEM TOTAL LINE
ELSE
PRT_VAL := ALLTRIM(SUBS(PBODY_ARR[CUR_LINE], STRTPOS ))
PRT_VAL := FORMAT_PRT(PRT_VAL, PAMTS_ARR[CUR_LINE], PADSZ, SUBTYPE, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE )
ENDIF
ELSE
IF !EMPTY(SV_LI_DESC) //PRINT LINE ITEM HEADING FOR MULTIPLE PAGES
IF EMPTY(II) // ONLY PRINT ONCE
FOR II := 1 TO LEN(SV_LI_DESC)
IF SUBS(SV_LI_DESC[II], 2,1)$CHR(1)
STRTPOS := 3
ELSEIF SUBS(SV_LI_DESC[II], 1,1)$'^'
STRTPOS := 2
ELSE
STRTPOS := 1
ENDIF
PRT_VAL := SPACE(15) + ALLTRIM(SUBS(SV_LI_DESC[II], STRTPOS) )
PRINT_BODY_LINE(IOLAMAR, MLMAR, PRT_VAL, 0)
NEXT
ENDIF
ENDIF
IF PAMTS_ARR[CUR_LINE] = NIL
PRT_VAL := SPACE(15) + ALLTRIM(PBODY_ARR[CUR_LINE])
ELSEIF EMPTY( PAMTS_ARR[CUR_LINE] )
PRT_VAL := PBODY_ARR[CUR_LINE] // ITEM TOTAL LINE
ELSE
PRT_VAL := FORMAT_PRT(PBODY_ARR[CUR_LINE], PAMTS_ARR[CUR_LINE], PADSZ, SUBTYPE, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE )
ENDIF
ENDIF
CUR_LINE := PRINT_BODY_LINE(IOLAMAR, MLMAR, PRT_VAL, CUR_LINE)
NEXT
RETURN RET_VAL //LINE ITEM HEADING
***************************************************************
* PRINT THE LINE ITEM LINE
***************************************************************
FUNCTION PRINT_BODY_LINE(IOLAMAR, MLMAR, PRT_VAL, CUR_LINE)
? IOLAMAR + MLMAR + PRT_VAL
CUR_LINE++
RETURN CUR_LINE
***************************************************************
* SAVE THE LINE ITEM DESCRIPTION FOR PRINTING ON MULTIPLE PAGES
***************************************************************
FUNCTION SV_DESC_LINE_ITEM(PBODY_ARR, CUR_LINE)
LOCAL RET_VAL := {}, I := CUR_LINE
DO WHILE I <= LEN(PBODY_ARR) .AND. !EMPTY(PBODY_ARR[I])
IF SUBS(PBODY_ARR[I], 1,1)$'^'
//**AADD(RET_VAL, PBODY_ARR[I])
FOR I := I TO LEN(PBODY_ARR)
IF EMPTY(PBODY_ARR[I])
I := LEN(PBODY_ARR)
EXIT
ELSE
AADD(RET_VAL, PBODY_ARR[I])
ENDIF
NEXT
ENDIF
I++
ENDDO
IF EMPTY(RET_VAL)
ELSE
AADD(RET_VAL, ' ') // BLANK LINE BETWEEN LINE ITEM DESC AND THE
ENDIF
RETURN RET_VAL // LINE ITEM DETAIL
***************************************************************
* FORMAT THE ORDER ITEM LINES
***************************************************************
***************************************************************
//* PRINT THE ORDER TAIL
***************************************************************
FUNCTION PRT_TAIL (PTAIL_ARR, LINES_DONE, PRNT_GL_INFO, WHCHORDER, SUBTYPE, PG_DEF_ARR )
LOCAL I, STOPVAR, X, WKI, WKGLAMT, NEGTOT, WKTAIL, WORKARR, TAILERR := 0
LOCAL RETVARARR := {}, PRNT_LEN := 80, WINV_NOTE := ' ', MSGCNT := 0
LOCAL DEFAULT_NOTE := DEFAULTNOTE()
LOCAL INVNOTEPOS := DEFAULT_NOTE[2]
LOCAL NOTE_LEN := 0 //** P3N - 05/15/01
IF EMPTY(PTAIL_ARR)
RETURN TAILERR
ENDIF
IF EMPTY( (CUR_MAST)->NOTE_FIELD ) //** P3N - 05/15/01
ELSEIF (CUR_MAST)->PRNT_NOTES$'Y' //** P3N - 05/15/01
//** TAKE INTO ACCOUNT THE ORDER MASTER->NOTE_FIELD (UP TO 5 LINES OF 50 CHARS)
NOTE_LEN := INT (LEN(ALLTRIM( (CUR_MAST)->NOTE_FIELD) ) / 50 )
LINES_DONE := LINES_DONE + NOTE_LEN + 1 //** P3N - 05/15/01
ENDIF //** P3N - 05/15/01
WORKARR := {}
//** THE QUOTE HEADING IS LONGER THAN THE ORDER HEADING
//** INCREASE THE LINES_DONE TO ACCOUNT FOR THIS DIFF.
IF CUR_MAST = 'QUOTE' //** P3N - 1/6/99
LINES_DONE := LINES_DONE + 8 //** P3N - 1/6/99
ENDIF //** P3N - 1/6/99
FOR I := LINES_DONE + 1 TO MAX(MBODY_LEN, LEN(PTAIL_ARR) )
AADD(WORKARR, '')
NEXT
IF LEN(WORKARR) < LEN(PTAIL_ARR)
FOR I := 1 TO LEN(PTAIL_ARR)
//** P3N - 4/20/98 NONTAX ITEM
IF AT(' ~ ',PTAIL_ARR[I]) > 0
//** P3N - 6/8/98 ADJ NONTAX ITEM FORMATING
WKTAIL := STRTRAN(PTAIL_ARR[I], '~', ' ' )
? MLMAR + WKTAIL
ELSE
? MLMAR + SPACE(5) + PTAIL_ARR[I]
ENDIF
NEXT
TAILERR := 1
ELSE
FOR I := 1 TO LEN(PTAIL_ARR)
WORKARR[I] := PTAIL_ARR[I]
NEXT
IF PRNT_GL_INFO
STOPVAR := LEN(WORKARR) - LEN(GL_ARR)
X := LEN(GL_ARR)
FOR I := LEN(WORKARR) TO MAX(STOPVAR, 1) STEP -1
IF X > 0 .AND. X <= LEN(GL_ARR)
IF GL_ARR[X,2] < 0 //** P3N - 4/28/98
NEGTOT := TRANSFORM(GL_ARR[X,2],'(9999999999999999.99)') //**P3N 4/28/98
NEGTOT := STRTRAN(NEGTOT, ' ', '') //** P3N - 4/28/98
NEGTOT := STRTRAN(NEGTOT, '-', '') //** P3N - 4/28/98
NEGTOT := PADL(NEGTOT,11, ' ') //** P3N - 4/28/98
ELSE
NEGTOT := '' //** P3N - 6/3/98
ENDIF
IF EMPTY(NEGTOT) //** P3N - 4/28/98
IF GL_ARR[X,2] <= 999999.99 //** P3N - 4/28/98
WKGLAMT := STR(GL_ARR[X,2],10,2) //** P3N - 4/28/98
ELSE //** P3N - 4/28/98
WKGLAMT := STR(GL_ARR[X,2],16,2) //** P3N - 4/28/98
ENDIF //** P3N - 4/28/98
ELSE //** P3N - 4/28/98
WKGLAMT := NEGTOT //** P3N - 4/28/98
ENDIF //** P3N - 4/28/98
IF EMPTY(SUBST(WORKARR[I], 1, 40) ) //** P3N - 11/25/98
WORKARR[I] := PADR(GL_ARR[X,1],10) + WKGLAMT ;
+ SUBS(WORKARR[I],21) //** P3N - 12/10/98
//** + SUBS(WORKARR[I],19) //** P3N - 12/10/98
ELSE //** P3N - 11/25/98
WKI := LEN(WORKARR)
WORKARR[WKI] := 'GL ALLOCATIONS WILL NOT FIT ON ORDER'
WORKARR[WKI-1] := 'GL ALLOCATIONS WILL NOT FIT ON ORDER'
WORKARR[WKI-2] := 'GL ALLOCATIONS WILL NOT FIT ON ORDER'
WORKARR[WKI-3] := 'GL ALLOCATIONS WILL NOT FIT ON ORDER'
//** P3N - 11/25/98
//** P3N - 11/25/98
TAILERR := 2 //** P3N - 11/25/98
EXIT //** P3N - 11/25/98
ENDIF
ELSE
EXIT
ENDIF
X --
NEXT
ENDIF
FOR I := 1 TO LEN(WORKARR)
//** P3N - 4/20/98 NONTAX ITEM
IF AT(' ~ ',WORKARR[I]) > 0
//** P3N - 6/8/98 ADJ NONTAX ITEM FORMATING
WKTAIL := STRTRAN(WORKARR[I], '~', ' ' )
? MLMAR + WKTAIL
ELSE
? MLMAR + SPACE(5) + WORKARR[I]
ENDIF
NEXT
ENDIF
IF WHCHORDER = 'INV' .AND. EMPTY(SUBTYPE) //** P3N - 12/15/98
FOR I := 1 TO INVNOTEPOS //** P3N - 12/16/98
? MLMAR + SPACE(5) //** P3N - 12/16/98
NEXT //** P3N - 12/16/98
//** PRINT THE TAIL(ORD_MAST->INVNOTES) INVOICE/SOLICITATION INFO FOR ORDERS
IF EMPTY( (CUR_MAST)->INVNOTES ) //** P3N - 12/15/98
WINV_NOTE := DEFAULT_NOTE[1] //** P3N - 12/16/98
ELSE
WINV_NOTE := (CUR_MAST)->INVNOTES //** P3N - 12/15/98
ENDIF
RETVARARR := PRT_MEMO({}, {}, WINV_NOTE, PRNT_LEN) // PRINT THE LINE ITEM NOTES
IF EMPTY(RETVARARR) //** P3N - 12/15/98
ELSE //** P3N - 12/15/98
FOR I := 1 TO LEN(RETVARARR[1]) //** P3N - 12/15/98
IF EMPTY(RETVARARR[1,I]) //** P3N - 12/15/98
LOOP //** P3N - 12/15/98
ENDIF //** P3N - 12/15/98
MSGCNT := MSGCNT + 1 //** P3N - 12/15/98
IF MSGCNT <= 3 //** P3N - 12/15/98
? MLMAR + RETVARARR[1,I] //** P3N - 12/15/98
PTAIL_ARR := RETVARARR[1,I] //** P3N - 12/15/98
ELSE //** P3N - 12/15/98
TAILERR := 3 //** P3N - 12/15/98
EXIT //** P3N - 12/15/98
ENDIF //** P3N - 12/15/98
NEXT //** P3N - 12/15/98
ENDIF //** P3N - 12/15/98
ENDIF //** P3N - 12/15/98
RETURN TAILERR
***********************************************************
* BUILD THE HEADING OF THE ORDER
***********************************************************
PROCEDURE BLD_HEAD(MORDER_NUM, ORD_TYPE, OLOC_CODE, WHCHORDER, SUBTYPE)
LOCAL PHEAD_ARR := {}, PV := ' ', I := 0 ,HD1ARR := {}, III
LOCAL HD2ARR := {}, WORKVAR, MPO_NUM, HD3ARR := {}
LOCAL DUPL_MSG := {' ', ' ' , ' ' } , HD_LINES := 0
LOCAL MTIME, MDATE, MAXLEN := 0
ALTSHIPADR->(DBSEEK( (CUR_MAST)->ORDER_NUM) ) //** P3N - 1/6/99
HD1ARR := HD1_PART(ORD_TYPE, OLOC_CODE, WHCHORDER, SUBTYPE)
HD2ARR := HD2_PART(ORD_TYPE, OLOC_CODE)
IF ORD_TYPE == 'BACKORD' //** P3N - 9/14/98
HD2ARR := HD2_PART(ORD_TYPE, OLOC_CODE, SUBTYPE) //** P3N - 9/14/98
ENDIF //** P3N - 9/14/98
HD3ARR := HD3_PART(ORD_TYPE, SUBTYPE)
DO CASE //** P3N - 4/30/98 CHGD TO CASE STMT!
CASE WHCHORDER = 'INV'
IF !EMPTY((CUR_MAST)->IDATE_LAST)
IF SUBTYPE <> 'PREBILL'
DUPL_MSG := DUPL_MSG(ORD_TYPE, (CUR_MAST)->IDATE_LAST, (CUR_MAST)->ITIME_LAST )
ENDIF
ENDIF
CASE WHCHORDER = 'PROD'
IF !EMPTY((CUR_MAST)->PDATE_LAST)
DUPL_MSG := DUPL_MSG(ORD_TYPE, (CUR_MAST)->PDATE_LAST, (CUR_MAST)->PTIME_LAST )
ENDIF
CASE WHCHORDER = 'OD'
IF SUBTYPE = 'DELIVERY' .AND. !EMPTY( (CUR_MAST)->DDATE_LAST )
DUPL_MSG := DUPL_MSG(SUBTYPE, (CUR_MAST)->DDATE_LAST, (CUR_MAST)->DTIME_LAST )
ELSEIF SUBTYPE = 'ORDERDESK' .AND. !EMPTY((CUR_MAST)->ODATE_LAST)
DUPL_MSG := DUPL_MSG(ORD_TYPE, (CUR_MAST)->ODATE_LAST, (CUR_MAST)->OTIME_LAST )
ENDIF
CASE WHCHORDER = 'BACKORD' //* P3N - 4/30/98
IF !EMPTY((CUR_MAST)->BODATE_LST)
DUPL_MSG := DUPL_MSG(ORD_TYPE, (CUR_MAST)->BODATE_LST, (CUR_MAST)->BOTIME_LST )
ENDIF
ENDCASE
DO CASE
CASE FORMTYPE = 'PREPRINT' //PRE-PRINTED ORDER FORM
**** LINDSBORG TOP HEADING
//**IF MHOME_LOC_CODE = 'LINDS' //** P3N - 2/04/99
IF MHOME_LOC_CODE = 'LINDS' .OR. MHOME_LOC_CODE = 'PAWNEE'
//** PHEAD_ARR := LINDS_HEADING(MORDER_NUM, DUPL_MSG, WHCHORDER, SUBTYPE )
PHEAD_ARR := LP_HEADING(MORDER_NUM, DUPL_MSG, WHCHORDER, SUBTYPE )
ELSE
FOR III := 1 TO LEN(DUPL_MSG)
AADD(PHEAD_ARR, SPACE(25) + DUPL_MSG[III])
NEXT
PV := SUBS( (CUR_MAST)->CUST_ID,1,2) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,3,4) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,7,2)
IF WHCHORDER = 'BACKORD' //* P3N - 8/12/98
AADD(PHEAD_ARR, ' ' )
AADD(PHEAD_ARR, ' ' )
IF MHOME_LOC_CODE <> 'IOLA'
AADD(PHEAD_ARR, ' ')
AADD(PHEAD_ARR, ' ')
ENDIF
ELSE
IF MHOME_LOC_CODE = 'KC'
AADD(PHEAD_ARR, PADL( PV, 81, ' ' ) )
ELSE
AADD(PHEAD_ARR, PADL( PV, 78, ' ' ) )
ENDIF
IF MHOME_LOC_CODE <> 'IOLA'
AADD(PHEAD_ARR, TRIM(MORDER_NUM) )
ENDIF
IF MHOME_LOC_CODE <> 'IOLA'
AADD(PHEAD_ARR, ' ')
ENDIF
AADD(PHEAD_ARR, (CUR_MAST)->USER_ID )
ENDIF
IF MHOME_LOC_CODE = 'KC'
AADD(PHEAD_ARR, ' ')
AADD(PHEAD_ARR, ' ')
ENDIF
ENDIF
IF MHOME_LOC_CODE = 'IOLA'
AADD(PHEAD_ARR, ' ')
ENDIF
FOR I := 1 TO LEN(HD2ARR)
AADD(PHEAD_ARR, HD2ARR[I])
NEXT
** MAXLEN := 4 // 1-31-97 - EXTRA LINE FOR IOLA ABOVE HEAD2
IF MHOME_LOC_CODE = 'KC'
MAXLEN := 5
ELSE
MAXLEN := 4
ENDIF
FOR I := LEN(HD2ARR)+1 TO MAXLEN
AADD(PHEAD_ARR, ' ')
NEXT
FOR I := 1 TO LEN(HD3ARR)
AADD(PHEAD_ARR, HD3ARR[I])
NEXT
IF LEN(PHEAD_ARR) < MHEAD_LEN
HD_LINES := MHEAD_LEN - LEN(PHEAD_ARR)
FOR I := 1 TO HD_LINES
AADD(PHEAD_ARR, ' ' )
NEXT
ENDIF
OTHERWISE // BLANK PAPER DOCUMENT
FOR I := 1 TO LEN(HD1ARR)
AADD(PHEAD_ARR, HD1ARR[I])
NEXT
FOR III := 1 TO LEN(DUPL_MSG)
AADD(PHEAD_ARR, DUPL_MSG[III])
NEXT
IF ORD_TYPE = 'PO'
//** MPO_NUM := GET_PO_NUM( MORDER_NUM, OLOC_CODE , .T. )
//** AADD(PHEAD_ARR, PADL('PO #: ' + ALLTRIM(MPO_NUM), 78, ' ') )
AADD(PHEAD_ARR, ' ' ) //** P3N - 04/06/10 - PER ELLEN - REMOVE PO #: PRINT
AADD(PHEAD_ARR, ' ' )
AADD(PHEAD_ARR, PADL('Order #: ' + ALLTRIM(MORDER_NUM), 78, ' ') )
AADD(PHEAD_ARR, ' ' )
PV := 'Customer : '
PV := PV + ALLTRIM((CUR_MAST)->BILL_NAME)
AADD(PHEAD_ARR, PADL( PV, 78, ' ' ) )
ELSE
AADD(PHEAD_ARR, PADL('Order #: ' + ALLTRIM(MORDER_NUM), 78, ' ') )
AADD(PHEAD_ARR, ' ' )
IF WHCHORDER = 'BACKORD' //* P3N - 6/5/98
ELSE
PV := 'Customer #: '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,1,2) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,3,4) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,7,2)
AADD(PHEAD_ARR, PADL( PV, 78, ' ' ) )
ENDIF
ENDIF
IF WHCHORDER = 'BACKORD' //* P3N - 6/5/98
ELSE
AADD(PHEAD_ARR, (CUR_MAST)->USER_ID )
ENDIF
FOR I := 1 TO LEN(HD2ARR)
AADD(PHEAD_ARR, HD2ARR[I])
NEXT
FOR I := 1 TO LEN(HD3ARR)
AADD(PHEAD_ARR, HD3ARR[I])
NEXT
IF LEN(PHEAD_ARR) < MHEAD_LEN .AND. FORMTYPE = 'PREPRINT'
HD_LINES := MHEAD_LEN - LEN(PHEAD_ARR)
FOR I := 1 TO HD_LINES
AADD(PHEAD_ARR, ' ' )
NEXT
ENDIF
ENDCASE
RETURN PHEAD_ARR
*************************************************************
//** LP_HEADING IS USED FOR BOTH LINDSBOURG AND PAWNEE *
//** LOCATIONS *
*************************************************************
FUNCTION LP_HEADING( MORDER_NUM, DUPL_MSG, WHCHORDER, SUBTYPE )
LOCAL PHEAD_ARR := {}, PV, I , III
//** DUPL_MSG := {' ',' ',' '} //** P3N - 6/17/99
** 6-16-97 - USE OLD FORMS UNTIL FURTHER NOTICE - PER LINDA!!!!!
** FOR I := 1 TO 3
** 1-23-98 - USE NEW FORMS PER LINDA!!!!!
IF WHCHORDER == 'INV' // NEW INVOICE ORDER FORM
FOR I := 1 TO 1 // FORM HEADING IS 2 LINES LESS THAN OLD
AADD(PHEAD_ARR, ' ')
NEXT
IF MHOME_LOC_CODE = 'PAWNEE' //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
ENDIF //** P3N - 2/04/99
//**ELSEIF SUBTYPE = 'DELIVERY' .AND. ; // DELIVERY ORDER FORM
ELSEIF (SUBTYPE = 'DELIVERY' .OR. WHCHORDER = 'BACKORD') .AND. ; // DELIVERY/BACKORDER ORDER FORM
MHOME_LOC_CODE = 'PAWNEE' //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
AADD(PHEAD_ARR, ' ') //** P3N - 2/04/99
ELSE
FOR I := 1 TO 3 // ALL OTHER LINDS FORMS
AADD(PHEAD_ARR, ' ')
NEXT
ENDIF
FOR III := 1 TO LEN(DUPL_MSG)
IF III = 1 .OR. III = 3
AADD(PHEAD_ARR, SPACE(25) + DUPL_MSG[III])
ELSE
AADD(PHEAD_ARR, MORDER_NUM + SPACE(19) + DUPL_MSG[III])
ENDIF
NEXT
PV := SUBS( (CUR_MAST)->CUST_ID,1,2) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,3,4) + ' '
PV := PV + SUBS( (CUR_MAST)->CUST_ID,7,2)
AADD(PHEAD_ARR, (CUR_MAST)->USER_ID + SPACE(60) + PV )
AADD(PHEAD_ARR, ' ')
RETURN PHEAD_ARR
***********************************************************
***********************************************************
***********************************************************
FUNCTION HD1_PART( ORD_TYPE, OLOC_CODE, WHCHORDER, SUBTYPE )
LOCAL PHEAD_ARR := {' ', ' ', ' '}
LOCAL FROM_LOC, PADLEN, Q_PHONE, QUOTE_LOC, QUOTE_LOC1, QUOTE_LOC2, QUOTE_LOC3
MFG_LOC->(DBSEEK(MHOME_LOC_CODE))
FROM_LOC := 'From: ' + ALLTRIM(UPPER(MFG_LOC->LOC_DESC)) + ' ' ;
+ ALLTRIM(UPPER(MFG_LOC->LOC_CITY)) + ' ' + MFG_LOC->LOC_STATE ;
+ ' ' + ALLTRIM(MFG_LOC->LOC_ZIP)
QUOTE_LOC := 'From: ' + ALLTRIM(UPPER(MFG_LOC->LOC_DESC))
QUOTE_LOC1 := ' ' + ALLTRIM(UPPER(MFG_LOC->LOC_ADDR1))
QUOTE_LOC2 := ' ' + ALLTRIM(UPPER(MFG_LOC->LOC_ADDR2))
QUOTE_LOC3 := ' ' + ALLTRIM(UPPER(MFG_LOC->LOC_CITY)) + ' ' + MFG_LOC->LOC_STATE ;
+ ' ' + ALLTRIM(MFG_LOC->LOC_ZIP)
DO CASE
CASE FORMTYPE = 'PREPRINT' // PRE-PRINTED ORDER FORM
PHEAD_ARR := {}
IF MHOME_LOC_CODE <> 'KC'
AADD(PHEAD_ARR, ' ')
ENDIF
IF MHOME_LOC_CODE = 'IOLA'
AADD(PHEAD_ARR, ' ')
ENDIF
CASE ORD_TYPE = 'BACKORD' //** 4-30-98
IF SUBTYPE == 'SCREENS'
AADD(PHEAD_ARR, PADC('B A C K O R D E R S C R E E N S', 80 ) )
AADD(PHEAD_ARR, PADC('----------------------------------', 80 ) )
ELSEIF SUBTYPE == 'STORMS'
AADD(PHEAD_ARR, PADC('B A C K O R D E R S T O R M S', 80 ) )
AADD(PHEAD_ARR, PADC('--------------------------------', 80 ) )
ELSE
AADD(PHEAD_ARR, PADC('B A C K O R D E R', 80 ) )
AADD(PHEAD_ARR, PADC('------------------', 80 ) )
ENDIF
CASE ORD_TYPE = 'PO'
AADD(PHEAD_ARR, PADC('I N T E R C O M P A N Y P U R C H A S E O R D E R', 80 ) )
AADD(PHEAD_ARR, PADC('-----------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'CTRL' // PRINT PRODUCTION ORDER
IF WHCHORDER == 'OD'
IF SUBTYPE == 'DELIVERY'
AADD(PHEAD_ARR, PADC('D E L I V E R Y C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-------------------------', 80) )
ELSE
AADD(PHEAD_ARR, PADC('O R D E R D E S K - C O N T R O L C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('---------------------------------------------', 80) )
ENDIF
ELSE
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - C O N T R O L C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('---------------------------------------------------------', 80) )
ENDIF
CASE ORD_TYPE == 'INV' // PRINT CUSTOMER ORDER
IF CUR_MAST = 'QUOTE'
AADD(PHEAD_ARR, PADC( 'C U S T O M E R Q U O T E' , 80) )
AADD(PHEAD_ARR, PADC(QUOTE_LOC , 80 ) )
AADD(PHEAD_ARR, PADC(QUOTE_LOC1, 80 ) )
IF EMPTY(QUOTE_LOC2)
ELSE
AADD(PHEAD_ARR, PADC(QUOTE_LOC2, 80 ) )
ENDIF
AADD(PHEAD_ARR, PADC(QUOTE_LOC3, 80 ) )
Q_PHONE := 'Phone: ' + MFG_LOC->PHONE_NUM
Q_PHONE := Q_PHONE + ' Fax: '+ MFG_LOC->FAX_NUMBER
AADD(PHEAD_ARR, ' ' + PADC( Q_PHONE, 80 ) )
PADLEN := MAX( LEN(FROM_LOC), LEN(Q_PHONE) )
AADD(PHEAD_ARR, ' ' + PADC( REPLICATE('-', PADLEN) , 80 ) )
//** P3N - 01/16/02 PER LINDA @ LINDS - ADDED THE CONT_FNAME TO PRINT ON THE QUOTE
IF EMPTY( (CUR_MAST)->CONT_FNAME ) //** P3N - 01/16/02
ELSE //** P3N - 01/16/02
AADD(PHEAD_ARR,' '+PADL('Ordered By: '+(CUR_MAST)->CONT_FNAME,77,' ')) //** P3N - 01/16/02
ENDIF //** P3N - 01/16/02
ELSEIF SUBTYPE = 'PREBILL'
AADD(PHEAD_ARR, PADC( 'C U S T O M E R P R E B I L L', 80 ) )
AADD(PHEAD_ARR, PADC( FROM_LOC , 80 ) )
PADLEN := MAX( LEN(FROM_LOC), 31 )
AADD(PHEAD_ARR, PADC( REPLICATE('-', PADLEN) , 80 ) )
ELSEIF SUBTYPE = 'PRECOST'
AADD(PHEAD_ARR, PADC( 'P R E - C O S T C O P Y ', 80 ) )
AADD(PHEAD_ARR, PADC( FROM_LOC , 80 ) )
PADLEN := MAX( LEN(FROM_LOC), 31 )
AADD(PHEAD_ARR, PADC( REPLICATE('-', PADLEN) , 80 ) )
ELSE
AADD(PHEAD_ARR, SPACE(25) + 'C U S T O M E R I N V O I C E' )
AADD(PHEAD_ARR, SPACE(25) + '-------------------------------' )
ENDIF
CASE ORD_TYPE == 'FRAME' // PRINT FRAME ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - F R A M E C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-----------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'STDFRAME' // PRINT STD FRAME ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - S T D F R A M E C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-------------------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'SASH' // PRINT SASH ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - S A S H C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('---------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'GLASS' // PRINT GLASS ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - G L A S S C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-----------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'SCREEN' // PRINT SCREEN ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - S C R E E N C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-------------------------------------------------------', 80 ))
CASE ORD_TYPE == 'STORM' // PRINT STORM ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - S T O R M C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-----------------------------------------------------', 80 ) )
CASE ORD_TYPE == 'EXPANDER' // PRINT EXPANDER ORDER
AADD(PHEAD_ARR, OLOC_CODE )
AADD(PHEAD_ARR, PADC('P R O D U C T I O N O R D E R - E X P A N D E R C O P Y', 80 ) )
AADD(PHEAD_ARR, PADC('-----------------------------------------------------------', 80 ) )
OTHERWISE
AADD(PHEAD_ARR, 'UNDEFINED Order' )
AADD(PHEAD_ARR, ' ')
ENDCASE
RETURN PHEAD_ARR
***********************************************************
* BUILD THE BILL TO/SHIP TO PART OF THE ORDER
***********************************************************
FUNCTION HD2_PART(ORD_TYPE, OLOC_CODE, SUBTYPE )
LOCAL PHEAD_ARR := {},FROM_LOC, PDESC, PPHONE, PFAXC, PMODM, OLOC
LOCAL BIL_ARR := {}, SHP_ARR := {}, I, II , PADLEN, AS_ARR := {}
IF ORD_TYPE == 'PO'
PADLEN := 40
ELSE
PADLEN := 48
ENDIF
MFG_LOC->(DBSEEK(MHOME_LOC_CODE))
FROM_LOC := MFG_LOC->LOC_DESC
PDESC := MFG_LOC->LOC_DESC
PPHONE := MFG_LOC->PHONE_NUM
PFAX := MFG_LOC->FAX_NUMBER
PMODM := MFG_LOC->MODEM_NUM
MFG_LOC->(DBSEEK(OLOC_CODE))
OLOC := ALLTRIM(MFG_LOC->LOC_DESC)
DO CASE
CASE ORD_TYPE == 'PO'
PADLEN := 40
AADD(BIL_ARR, 'Taken: ' + DTOC( (CUR_MAST)->CALL_DATE ) )
AADD(BIL_ARR, 'From: ' + PDESC )
AADD(SHP_ARR, ' To: ' + MFG_LOC->LOC_DESC)
AADD(SHP_ARR, ' ' + TRIM(MFG_LOC->LOC_ADDR1) )
IF !EMPTY(MFG_LOC->LOC_ADDR2)
AADD(SHP_ARR, ' ' + TRIM(MFG_LOC->LOC_ADDR2) )
ENDIF
AADD(SHP_ARR, ' ' + TRIM(MFG_LOC->LOC_CITY) + SPACE(2) + ;
TRIM(MFG_LOC->LOC_STATE) + ' ' + MFG_LOC->LOC_ZIP )
OTHERWISE
IF EMPTY( (CUR_MAST)->CALL_DATE) .OR. ORD_TYPE == 'BACKORD'
AADD(BIL_ARR, SPACE(12) + (CUR_MAST)->BILL_NAME + SPACE(6))
ELSE
AADD(BIL_ARR, DTOC( (CUR_MAST)->CALL_DATE ) + SPACE(4) + (CUR_MAST)->BILL_NAME )
ENDIF
IF ORD_TYPE == 'BACKORD' .AND. ; //** P3N - 6/5/98
MHOME_LOC_CODE = 'KC' //** P3N - 03/09/99
SHP_ARR := ALTSHP(SHP_ARR, SUBTYPE) //** P3N - 03/09/99
IF EMPTY(SHP_ARR)
AADD(SHP_ARR, (CUR_MAST)->BILL_ADD1 ) //** P3N - 11/11/98
AADD(SHP_ARR, (CUR_MAST)->BILL_ADD2 ) //** P3N - 11/11/98
AADD(SHP_ARR, (CUR_MAST)->BILL_CSZ ) //** P3N - 11/11/98
AADD(SHP_ARR, (CUR_MAST)->PHONE ) //** P3N - 11/11/98
ENDIF
//** END BACKORDER
ELSE
AADD(BIL_ARR, SPACE(12) + (CUR_MAST)->BILL_ADD1 + SPACE(6) )
IF !EMPTY( (CUR_MAST)->BILL_ADD2 )
AADD(BIL_ARR, SPACE(12) + (CUR_MAST)->BILL_ADD2 + SPACE(6) )
ENDIF
AADD(BIL_ARR, SPACE(12) + (CUR_MAST)->BILL_CSZ + SPACE(6) )
IF (CUR_MAST)->BILL_NAME == (CUR_MAST)->SHIP_NAME
ELSEIF !EMPTY( (CUR_MAST)->SHIP_NAME )
AADD(SHP_ARR, (CUR_MAST)->SHIP_NAME )
ENDIF
IF (CUR_MAST)->BILL_ADD1 == (CUR_MAST)->SHIP_ADD1
ELSEIF !EMPTY( (CUR_MAST)->SHIP_ADD1 )
AADD(SHP_ARR, (CUR_MAST)->SHIP_ADD1 )
ENDIF
IF !EMPTY( (CUR_MAST)->SHIP_ADD2 )
IF (CUR_MAST)->BILL_ADD2 == (CUR_MAST)->SHIP_ADD2
ELSEIF !EMPTY( (CUR_MAST)->SHIP_ADD2 )
AADD(SHP_ARR, (CUR_MAST)->SHIP_ADD2 )
ENDIF
ENDIF
IF (CUR_MAST)->BILL_CSZ == (CUR_MAST)->SHIP_CSZ
ELSEIF !EMPTY( (CUR_MAST)->SHIP_CSZ )
AADD(SHP_ARR, (CUR_MAST)->SHIP_CSZ )
ENDIF
IF (CUR_MAST)->PHONE == (CUR_MAST)->SHIPPHN
AADD(SHP_ARR, (CUR_MAST)->PHONE )
ELSE
AADD(SHP_ARR, (CUR_MAST)->PHONE + ' / ' + (CUR_MAST)->SHIPPHN )
ENDIF
ENDIF
//** P3N - 03/09/99
IF ORD_TYPE == 'BACKORD' //** P3N - 03/09/99
IF MHOME_LOC_CODE = 'KC' //** P3N - 03/09/99
//** ALREADY FORMATED FOR THE BACK ORDER FORMS IN KC
ELSE //** P3N - 03/09/99
AS_ARR := ALTSHP(AS_ARR, SUBTYPE) //** P3N - 03/09/99
IF EMPTY(AS_ARR) //** P3N - 03/09/99
ELSE //** P3N - 03/09/99
SHP_ARR := AS_ARR //** P3N - 03/09/99
ENDIF //** P3N - 03/09/99
ENDIF //** P3N - 03/09/99
ENDIF //** P3N - 03/09/99
ENDCASE
FOR I := 1 TO MIN( LEN(BIL_ARR), LEN(SHP_ARR) )
BIL_ARR[I] := PADR( BIL_ARR[I], PADLEN )
AADD(PHEAD_ARR, BIL_ARR[I] + SHP_ARR[I] )
NEXT
IF LEN(BIL_ARR) <> LEN(SHP_ARR)
IF I > LEN(BIL_ARR)
FOR I := I TO LEN(SHP_ARR)
AADD(PHEAD_ARR, SPACE(PADLEN) + SHP_ARR[I] )
NEXT
ELSE
FOR I := I TO LEN(BIL_ARR)
BIL_ARR[I] := PADR( BIL_ARR[I], PADLEN )
AADD(PHEAD_ARR, BIL_ARR[I] )
NEXT
ENDIF
ENDIF
//** PER LINDA @ LINDS PRINT THE DELIVERY ROUTE INFORMATION - LINDS ONLY
//**IF MHOME_LOC_CODE = 'LINDS' //** P3N - 08/26/99
//** AADD(PHEAD_ARR, SPACE(35)+ 'Del Route: ' + (CUR_MAST)->DEL_ROUTE)
//**ENDIF //** P3N - 08/26/99
RETURN PHEAD_ARR
********************************************************************
//** P3N-03/09/99 MADE A FUNCTION FOR MULTI USE
//** USE ORDER ALTERNATE SHIPPING
//** INFO FOR BACKORDERS IF PRESENT!
********************************************************************
FUNCTION ALTSHP(SHP_ARR, SUBTYPE)
LOCAL WKALTSHPZIP
IF EMPTY(SUBTYPE) .OR. SUBTYPE == 'BACKORD'
IF !EMPTY( ALTSHIPADR->ALTSHPNAME )
AADD(SHP_ARR, ALTSHIPADR->ALTSHPNAME )
ENDIF
IF !EMPTY( ALTSHIPADR->ALTSHPADDR )
AADD(SHP_ARR, ALTSHIPADR->ALTSHPADDR )
ENDIF
IF !EMPTY( ALTSHIPADR->ALTSHPADD2 )
AADD(SHP_ARR, ALTSHIPADR->ALTSHPADD2 )
ENDIF
IF !EMPTY( ALTSHIPADR->ALTSHPADD3 )
AADD(SHP_ARR, ALTSHIPADR->ALTSHPADD3 )
ENDIF
WKALTSHPZIP := ALTSHIPADR->ALTSHPZIP
IF EMPTY(SUBST(WKALTSHPZIP, 7, 4))
WKALTSHPZIP := SUBST(WKALTSHPZIP, 1,5)
ENDIF
IF !EMPTY( ALTSHIPADR->ALTSHPCITY ) .AND. ;
!EMPTY( ALTSHIPADR->ALTSHPSTAT ) .AND. ;
!EMPTY( ALTSHIPADR->ALTSHPZIP )
IF LEN(ALLTRIM(ALTSHIPADR->ALTSHPCITY)) > 20
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ALTSHPCITY) )
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ALTSHPSTAT) + ' ' + ;
WKALTSHPZIP )
ELSE
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ALTSHPCITY) + ' ' + ;
ALLTRIM( ALTSHIPADR->ALTSHPSTAT) + ' ' + ;
WKALTSHPZIP )
ENDIF
ELSEIF !EMPTY( ALTSHIPADR->ALTSHPCITY )
AADD(SHP_ARR, ALTSHIPADR->ALTSHPCITY )
ENDIF
ELSEIF SUBTYPE == 'SCREENS' //** P3N - 9/23/98
//** USE ORDER ALTERNATE SHIPPING
//** INFO FOR SCREEN BACKORDERS IF PRESENT!
IF !EMPTY( ALTSHIPADR->ASNAMESCRN )
AADD(SHP_ARR, ALTSHIPADR->ASNAMESCRN )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADDRSCRN )
AADD(SHP_ARR, ALTSHIPADR->ASADDRSCRN )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADD2SCRN )
AADD(SHP_ARR, ALTSHIPADR->ASADD2SCRN )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADD3SCRN )
AADD(SHP_ARR, ALTSHIPADR->ASADD3SCRN )
ENDIF
WKALTSHPZIP := ALTSHIPADR->ASZIPSCRN
IF EMPTY(SUBST(WKALTSHPZIP, 7, 4))
WKALTSHPZIP := SUBST(WKALTSHPZIP, 1,5)
ENDIF
IF !EMPTY( ALTSHIPADR->ASCITYSCRN ) .AND. ;
!EMPTY( ALTSHIPADR->ASSTATSCRN ) .AND. ;
!EMPTY( ALTSHIPADR->ASZIPSCRN )
IF LEN(ALLTRIM(ALTSHIPADR->ASCITYSCRN)) > 20
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSCRN) )
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSCRN) + ' ' + ;
WKALTSHPZIP )
ELSE
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSCRN) + ' ' + ;
ALLTRIM( ALTSHIPADR->ASSTATSCRN) + ' ' + ;
WKALTSHPZIP )
ENDIF
ELSEIF !EMPTY( ALTSHIPADR->ASCITYSCRN )
AADD(SHP_ARR, ALTSHIPADR->ASCITYSCRN )
ENDIF
ELSEIF SUBTYPE == 'STORMS' //** P3N - 9/23/98
//** USE ORDER ALTERNATE SHIPPING
//** INFO FOR STORM BACKORDERS IF PRESENT!
IF !EMPTY( ALTSHIPADR->ASNAMESTRM )
AADD(SHP_ARR, ALTSHIPADR->ASNAMESTRM )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADDRSTRM )
AADD(SHP_ARR, ALTSHIPADR->ASADDRSTRM )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADD2STRM )
AADD(SHP_ARR, ALTSHIPADR->ASADD2STRM )
ENDIF
IF !EMPTY( ALTSHIPADR->ASADD3STRM )
AADD(SHP_ARR, ALTSHIPADR->ASADD3STRM )
ENDIF
WKALTSHPZIP := ALTSHIPADR->ASZIPSTRM
IF EMPTY(SUBST(WKALTSHPZIP, 7, 4))
WKALTSHPZIP := SUBST(WKALTSHPZIP, 1,5)
ENDIF
IF !EMPTY( ALTSHIPADR->ASCITYSTRM ) .AND. ;
!EMPTY( ALTSHIPADR->ASSTATSTRM ) .AND. ;
!EMPTY( ALTSHIPADR->ASZIPSTRM )
IF LEN(ALLTRIM(ALTSHIPADR->ASCITYSTRM)) > 20
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSTRM) )
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSTRM) + ' ' + ;
WKALTSHPZIP )
ELSE
AADD(SHP_ARR, ALLTRIM( ALTSHIPADR->ASCITYSTRM) + ' ' + ;
ALLTRIM( ALTSHIPADR->ASSTATSTRM) + ' ' + ;
WKALTSHPZIP )
ENDIF
ELSEIF !EMPTY( ALTSHIPADR->ASCITYSTRM )
AADD(SHP_ARR, ALTSHIPADR->ASCITYSTRM )
ENDIF
ENDIF
//** USE ORDER SHIPPING INFO FOR BACK ORDERS IF NO ALT SHIPINFO!
IF EMPTY(SHP_ARR)
IF !EMPTY( (CUR_MAST)->SHIP_NAME )
AADD(SHP_ARR, (CUR_MAST)->SHIP_NAME )
ENDIF
IF !EMPTY( (CUR_MAST)->SHIP_ADD1 )
AADD(SHP_ARR, (CUR_MAST)->SHIP_ADD1 )
ENDIF
IF !EMPTY( (CUR_MAST)->SHIP_ADD2 )
AADD(SHP_ARR, (CUR_MAST)->SHIP_ADD2 )
ENDIF
IF !EMPTY( (CUR_MAST)->SHIP_CSZ )
AADD(SHP_ARR, (CUR_MAST)->SHIP_CSZ )
ENDIF
ENDIF
//** USE ORDER BILLING INFO FOR BACK ORDERS IF NO ALT SHIPINFO AND SHIPPING
IF EMPTY(SHP_ARR) //** P3N - 10/01/99
IF (CUR_MAST)->BILL_NAME = (CUR_MAST)->SHIP_NAME; //** P3N - 10/01/99
.OR. EMPTY((CUR_MAST)->SHIP_NAME) //** P3N - 10/01/99
ELSE //** P3N - 10/01/99
AADD(SHP_ARR, (CUR_MAST)->BILL_NAME ) //** P3N - 10/01/99
ENDIF //** P3N - 10/01/99
AADD(SHP_ARR, (CUR_MAST)->BILL_ADD1 ) //** P3N - 10/01/99
IF EMPTY((CUR_MAST)->BILL_ADD2 ) //** P3N - 10/01/99
ELSE //** P3N - 10/01/99
AADD(SHP_ARR, (CUR_MAST)->BILL_ADD2 ) //** P3N - 10/01/99
ENDIF //** P3N - 10/01/99
AADD(SHP_ARR, (CUR_MAST)->BILL_CSZ ) //** P3N - 10/01/99
ENDIF //** P3N - 10/01/99
IF EMPTY ( (CUR_MAST)->SHIPPHN)
AADD(SHP_ARR, (CUR_MAST)->PHONE ) //** P3N - 9/29/99
ELSEIF (CUR_MAST)->SHIPPHN = ' - - '
AADD(SHP_ARR, (CUR_MAST)->PHONE ) //** P3N - 9/29/99
ELSE
AADD(SHP_ARR, (CUR_MAST)->SHIPPHN )
ENDIF
RETURN SHP_ARR
***********************************************************
* BUILD THE TERMS PART OF THE ORDER
**********************************************************
FUNCTION HD3_PART(ORD_TYPE, SUBTYPE)
LOCAL PHEAD_ARR := {}, I, COL_HD_ARR := {}, SM_FRST, SM_LAST, WORKDATE
LOCAL TERMS_DESC := GP_TERMS( (CUR_MAST)->TERMS ), SM_ALL, SPACEPOS := 0
LOCAL SHIP_DESC := GP_SHIP( (CUR_MAST)->SHP_METHOD)
LOCAL BOSHIP_DESC := '' //** P3N - 8/12/98 - HAPPY 40TH JEFF
LOCAL BOSHIP_SCRNS := '', BOSHIP_STORM := '' //** P3N - 8/17/98
IF ORD_TYPE == 'BACKORD' //** P3N - 8/17/98
BOSHIP_DESC := GP_SHIP( ALTSHIPADR->BOSHP_METH) //** P3N -11/13/98
IF EMPTY(BOSHIP_DESC) //** P3N - 1/6/99
BOSHIP_DESC := SHIP_DESC //** P3N - 1/6/99
ENDIF
BOSHIP_SCRNS := GP_SHIP( ALTSHIPADR->BOSHP_SCRN) //** P3N -11/13/98
IF EMPTY(BOSHIP_SCRNS) //** P3N - 1/6/99
BOSHIP_DESC := SHIP_DESC //** P3N - 1/6/99
ENDIF //** P3N - 1/6/99
BOSHIP_STORM := GP_SHIP( ALTSHIPADR->BOSHP_STRM) //** P3N -11/13/98
IF EMPTY(BOSHIP_STORM) //** P3N - 1/6/99
BOSHIP_DESC := SHIP_DESC //** P3N - 1/6/99
ENDIF //** P3N - 1/6/99
IF SUBTYPE == 'SCREENS' //** P3N - 8/17/98
BOSHIP_DESC := BOSHIP_SCRNS //** P3N - 8/17/98
ELSEIF SUBTYPE == 'STORMS' //** P3N - 8/17/98
BOSHIP_DESC := BOSHIP_STORM //** P3N - 8/17/98
ENDIF
ENDIF
SALESMEN->(DBSEEK( (CUR_MAST)->SLSMAN ) )
IF SALESMEN->(FOUND())
SM_FRST := SALESMEN->FST_NME
SM_LAST := SALESMEN->LST_NME
ELSE
SM_FRST := ' '
SM_LAST := (CUR_MAST)->SLSMAN
ENDIF
SM_ALL := ALLTRIM(TRIM(SM_FRST) + ' ' + TRIM(SM_LAST))
SPACEPOS := AT(' ', SM_ALL)
SM_FRST := SUBS(SM_ALL, 1, SPACEPOS - 1 )
SM_LAST := SUBS(SM_ALL, SPACEPOS + 1 )
IF ORD_TYPE == 'INV'
WORKDATE := MAX( (CUR_MAST)->IDATE_FST, CURDATE )
ELSEIF ORD_TYPE == 'BACKORD' //** P3N - 05/18/06 - IF BACKORDER USE CURRENT DATE
WORKDATE := CURDATE //** P3N - 05/18/06 - PER DARLENE-IOLA
ELSE
WORKDATE := (CUR_MAST)->IDATE_FST
ENDIF
IF FORMTYPE = 'PREPRINT'
AADD(PHEAD_ARR, SPACE(70) + TRIM(SM_FRST) )
IF ORD_TYPE == 'BACKORD' //** P3N - 8/12/98
AADD(PHEAD_ARR, SPACE(6)+ DTOC(WORKDATE) + SPACE(22)+;
BOSHIP_DESC + SPACE(19) + TRIM(SM_LAST) )
AADD(PHEAD_ARR, ' ')
AADD(PHEAD_ARR, SPACE(68) + (CUR_MAST)->CUST_PO )
ELSE
AADD(PHEAD_ARR, SPACE(12) + DTOC(WORKDATE) + SPACE(16) + SHIP_DESC + SPACE(19) + TRIM(SM_LAST) )
AADD(PHEAD_ARR, ' ')
AADD(PHEAD_ARR, DTOC((CUR_MAST)->ORDER_DATE) ;
+ SPACE(9) + DTOC( (CUR_MAST)->SHIP_DATE ) + SPACE(10) ;
+ TERMS_DESC + SPACE(07) ;
+ (CUR_MAST)->CUST_PO )
ENDIF
AADD(PHEAD_ARR, ' ')
AADD(PHEAD_ARR, ' ')
ELSE //FORMTYPE == 'BLANK'
IF EMPTY(SUBTYPE) // Condensed PRODUCTION headings
//** P3N - 8/4/98 (HAPPY BIRTHDAY TO ME!!!)
//** ADDED TERMS TO QUOTE HEADING - PER ELLEN
IF CUR_MAST = 'ORD_MAST'
AADD(PHEAD_ARR, 'Entered: ' + DTOC((CUR_MAST)->ORDER_DATE) + ;
' Shipped Via: ' + SHIP_DESC + ;
' Cust PO#: ' + (CUR_MAST)->CUST_PO )
ELSE
AADD(PHEAD_ARR, 'Entered: ' + DTOC((CUR_MAST)->ORDER_DATE) + ;
' ' + SPACE(LEN(SHIP_DESC))+ ;
' Cust PO#: ' + (CUR_MAST)->CUST_PO )
AADD(PHEAD_ARR, 'Terms: ' + TERMS_DESC + ;
+ SPACE(LEN(SHIP_DESC))+ ;
' Shipped Via: ' + SHIP_DESC )
ENDIF
AADD(PHEAD_ARR, REPLICATE('-', 80 ) )
ELSE
AADD(PHEAD_ARR, ' ')
IF SUBTYPE = 'PREBILL'
AADD(PHEAD_ARR, 'Prebill Date: ' + DTOC(WORKDATE) + ' Shipped Via: ' + SHIP_DESC + ' Sold By: '+ ALLTRIM(SM_FRST) + ' ' + ALLTRIM(SM_LAST) )
ELSE
IF SUBTYPE = 'PREBILL'
AADD(PHEAD_ARR, ' Print Date: ' + DTOC(WORKDATE) + ' Shipped Via: ' + SHIP_DESC + ' Sold By: '+ ALLTRIM(SM_FRST) + ' ' + ALLTRIM(SM_LAST) )
ELSEIF SUBTYPE == 'BACKORD'
IF EMPTY((CUR_MAST)->BOSHP_METH)
REC_LOCK(3, CUR_MAST)
(CUR_MAST)->BOSHP_METH := CUST_MAST->BOSHP_METH
(CUR_MAST)->(DBUNLOCK())
ENDIF
SHIP_DESC := GP_SHIP( (CUR_MAST)->BOSHP_METH)
AADD(PHEAD_ARR, SPACE(22) + ' Shipped Via: ' + SHIP_DESC)
ELSE
AADD(PHEAD_ARR, 'Invoice Date: ' + DTOC(WORKDATE) + ' Shipped Via: ' + SHIP_DESC + ' Sold By: '+ ALLTRIM(SM_FRST) + ' ' + ALLTRIM(SM_LAST) )
ENDIF
ENDIF
AADD(PHEAD_ARR, ' ')
IF SUBTYPE == 'BACKORD'
AADD(PHEAD_ARR, SPACE(34) + SPACE(LEN(SHIP_DESC)) + ;
' Cust PO#: ' + (CUR_MAST)->CUST_PO )
ELSE
AADD(PHEAD_ARR, 'Entered: ' + DTOC((CUR_MAST)->ORDER_DATE) + ' Shipped: ' + DTOC((CUR_MAST)->SHIP_DATE) + ;
' Terms: ' + SUBS(TERMS_DESC,1,15) + ' Cust PO#: ' + (CUR_MAST)->CUST_PO )
ENDIF
AADD(PHEAD_ARR, REPLICATE('-', 80 ) )
DO CASE
CASE ORD_TYPE == 'BACKORD' //** P3N - 5/1/98
COL_HD_ARR := BO_HEAD() //** P3N - 5/1/98
CASE ORD_TYPE == 'INV'
COL_HD_ARR := FULL_HEAD()
CASE ORD_TYPE == 'CTRL'
IF SUBTYPE = NIL
COL_HD_ARR := PART_HDQTY()
ELSEIF SUBTYPE = 'DELIVERY'
COL_HD_ARR := FULL_HEAD()
ELSEIF SUBTYPE = 'ORDERDESK'
COL_HD_ARR := PART_HEAD()
ENDIF
OTHERWISE
COL_HD_ARR := PART_HEAD()
ENDCASE
FOR I := 1 TO LEN(COL_HD_ARR)
AADD(PHEAD_ARR, COL_HD_ARR[I])
NEXT
IF EMPTY(COL_HD_ARR)
ELSE
AADD(PHEAD_ARR, REPLICATE('-', 80 ) )
ENDIF
ENDIF
ENDIF
RETURN PHEAD_ARR
***********************************************************
* BUILD THE PARTIAL HEADING LINE FOR FREE FORM PRINT
* (IE: FRAME/GLASS/SASH/EXPANDER, ... COPIES)
***********************************************************
FUNCTION PART_HEAD()
LOCAL COL_HEAD := SPACE(1) + 'Ord' + SPACE(25) + ' ' + SPACE(23) + ' ' + SPACE(5) + ' '
LOCAL PHEAD_ARR := {}
AADD(PHEAD_ARR, COL_HEAD)
COL_HEAD := SPACE(1) + 'Qty' + SPACE(25) + 'Description' + SPACE(23) + ' ' + SPACE(5) + ' '
AADD(PHEAD_ARR, COL_HEAD)
RETURN PHEAD_ARR
***********************************************************
* BUILD THE FULL HEADING LINE FOR FREE FORM PRINT
* (IE: PRODUCTION CTRL / DELIVERY COPIES)
***********************************************************
FUNCTION PART_HDQTY()
LOCAL COL_HEAD := SPACE(1) + 'Ord' + ' Back' + ' Ship' + SPACE(13) + ' ' + SPACE(23) + ' ' + SPACE(5) + ' '
LOCAL PHEAD_ARR := {}
AADD(PHEAD_ARR, COL_HEAD)
COL_HEAD := SPACE(1) + 'Qty' + ' Ord.' + ' Qty ' + SPACE(13) + 'Description' + SPACE(23) + ' ' + SPACE(5) + ' '
AADD(PHEAD_ARR, COL_HEAD)
RETURN PHEAD_ARR
***********************************************************
* BUILD THE FULL HEADING LINE FOR FREE FORM PRINT
* (IE: ORDER DESK COPY)
***********************************************************
FUNCTION FULL_HEAD()
LOCAL COL_HEAD := SPACE(1) + 'Ord' + ' Back' + ' Ship' + SPACE(13) + ' ' + SPACE(23) + ' ' + SPACE(5) + ' '
LOCAL PHEAD_ARR := {}
AADD(PHEAD_ARR, COL_HEAD)
COL_HEAD := SPACE(1) + 'Qty' + ' Ord.' + ' Qty ' + SPACE(13) + 'Description' + SPACE(23) + ' Unit ' + SPACE(5) + 'Amount'
AADD(PHEAD_ARR, COL_HEAD)
RETURN PHEAD_ARR
***********************************************************
* BUILD THE BACKORDER HEADING LINE FOR FREE FORM PRINT
* (IE: ORDER DESK COPY)
***********************************************************
FUNCTION BO_HEAD()
LOCAL COL_HEAD := SPACE(10) + 'Ord.'
LOCAL PHEAD_ARR := {}
AADD(PHEAD_ARR, COL_HEAD)
COL_HEAD := SPACE(10) + 'Qty ' + SPACE(13) + 'Description'
AADD(PHEAD_ARR, COL_HEAD)
RETURN PHEAD_ARR
***********************************************************
* BUILD THE DUPLICATE ORDER MSG. LINE
***********************************************************
FUNCTION DUPL_MSG( ORD_TYPE, MDATE, MTIME )
LOCAL PV1, PV2, RET_VAL, DUP_MSG_TYPE := SUBS(ORD_TYPE,1,3)
PV1 := &WIDEON ;
+ 'DUPLICATE ' + DUP_MSG_TYPE ;
+ &WIDEOFF
PV2 := + '(Last Printed ' ;
+ DTOC(MDATE) + ' ' ;
+ SUBS(MTIME,1,5) + ')'
RET_VAL := { PV1, PV2, ' ' }
RETURN RET_VAL
***********************************************************
// PRINTS THE SIZE AS 23 15/16 X 23 1/4
***********************************************************
FUNCTION PRNT_SIZE(PRNTWIDTH, PRNTHEIGHT, DELIMCHAR, MAX_DENOMINATOR, VALUESONLY)
LOCAL MDEC, ELM, W_FRACT, H_FRACT, ADDVAL, ITEM_LINE := '', WIDVAL, HTVAL
IF VALUESONLY = NIL
VALUESONLY := .F.
ENDIF
IF MAX_DENOMINATOR = NIL
MAX_DENOMINATOR := 16
ENDIF
IF DELIMCHAR = NIL
DELIMCHAR := ' x '
ELSE
DELIMCHAR := ' ' + DELIMCHAR + ' '
ENDIF
MDEC := PRNTWIDTH - INT(PRNTWIDTH)
IF MDEC = 0
ELM = 0
ELSE
ELM := ASCAN( FRACTION_ARR , {|X| X[2] == MDEC } )
ENDIF
IF ELM == 0 // DECIMAL - FRACTION NOT FOUND IN ARRAY
W_FRACT := ''
ELSE
W_FRACT := FRACTION_ARR[ELM, 1] // WIDTH FRACTION VALUE TO PRT
IF RIGHT(ALLTRIM(W_FRACT),2) = '32'
IF ELM = 1
W_FRACT := ' '
ELSE
W_FRACT := FRACTION_ARR[ELM-1,1]
ENDIF
ENDIF
ENDIF
ADDVAL := LTRIM(STR(INT(PRNTWIDTH),3))
ITEM_LINE := ITEM_LINE + ADDVAL
WIDVAL := ADDVAL
IF LEN(W_FRACT) > 0
ADDVAL := ALLTRIM(W_FRACT)
ITEM_LINE := ITEM_LINE + ' ' + ADDVAL
WIDVAL := WIDVAL + ' ' + ADDVAL
ENDIF
IF PRNTHEIGHT <> NIL .AND. PRNTHEIGHT <> 0
MDEC := PRNTHEIGHT - INT(PRNTHEIGHT)
IF MDEC = 0
ELM = 0
ELSE
ELM := ASCAN( FRACTION_ARR , {|X| X[2] == MDEC } )
ENDIF
IF ELM == 0 // DECIMAL - FRACTION NOT FOUND IN ARRAY
H_FRACT := ''
ELSE
H_FRACT := FRACTION_ARR[ELM, 1] + ' ' // HEIGHT FRACTION VALUE TO PRT
ENDIF
ADDVAL := LTRIM(STR(INT(PRNTHEIGHT),3))
ITEM_LINE := ITEM_LINE + DELIMCHAR + ADDVAL
HTVAL := ADDVAL
IF LEN(H_FRACT) > 0
ADDVAL := ALLTRIM(H_FRACT)
ITEM_LINE := TRIM(ITEM_LINE + ' ' + ADDVAL )
HTVAL := HTVAL + ' ' + ADDVAL
ENDIF
ENDIF
IF VALUESONLY
RETURN { WIDVAL, HTVAL }
ELSE
RETURN STRTRAN(ITEM_LINE, ' ', '~')
ENDIF
*******************************************************************
* THIS FUNCTION WILL CALCULATE THE UNIT PRICE FOR PRINTING PURPOSES
*******************************************************************
FUNCTION CALC_UNIT(PRICE, QTY)
RETURN TRANSFORM(PRICE / QTY,'99999.99')
*******************************************************************
* THIS FUNCTION PRINT THE MISC. ITEMS ON THE INVOICE COPY OF THE ORDER
*******************************************************************
FUNCTION PRT_MISC(P_DESC, P_AMT)
LOCAL RET_VAL := PADL(ALLTRIM(P_DESC), LEN(P_DESC)+8 ) + ': ' + STR(P_AMT,10,2)
RETURN
**********************************************************
* BUILD BOTTOM OF ORDER (IE: CUSTOMER ORDER MISC ITEMS/TAX/TOTALS)
**********************************************************
FUNCTION BLD_TAIL(MORDER_NUM, ORD_TYPE, LINE_TOTAL, WHICHCOPY, SUBTYPE,;
LI_DISC_PRNT, PARTIAL_INVOICE, MISC_ARR, PRT_BO, REPRINT_INVOICE )
LOCAL MISCPRNT, I, ELEM, PRT_AMT, NEGTOT, TAXPRNTARR := {}
LOCAL NUMGL_LINES := LEN(GL_ARR), NUMPRNT := 0, DIFF, QUOT_FACTOR
LOCAL PV1, PV2, PVCNT := 0, TOTAL_GL := 0, WK_TOTAL, PTAIL_ARR := {}
LOCAL DP_DESC := 'Downpmt - ' + DTOC( (CUR_MAST)->DP_DATE) + ':'
LOCAL TAX_ARR := STAX_RATE( (CUR_MAST)->TAXSCH ) // WHOLE TAX ARRAY
LOCAL TAX_DESC := TAX_ARR[3] // DESCRIPTION
LOCAL TAX_DET := TAX_ARR[4] // ALL COMPONENTS {RATE, DESC, GL_NUM}
LOCAL NOTEVAL := '', RETVALARR := {}, RETVARARR := {},DID_NOTES := .F.
LOCAL NOTEARR := {}, ARR2 := {}, WORKSPACE := 56, NOTELEN := 32
LOCAL TEMPSPACE := 23, GL_TOTAL := 0, SV_TOTAL := 0, ELM, WKPCT := 0
LOCAL WORKARR, BILL_STATE, SHIP_STATE, WK_STATE, SVARR_LEN := 0, SUBTOTL := 0
LOCAL WKNOTES := '',NONTX_ARR := {} //** P3N-11/2/98 -HAPPY B-DAY MATT
LOCAL ORDTOT := (CUR_MAST)->TOTAL_AMT //** P3N - 11/19/98
STATIC SV_GLARR := {}
//**ORDTOT := ORDTOT - (CUR_MAST)->ORD_BO_TTL //** P3N - 11/19/98
FOR I := 1 TO LEN(GL_ARR)
GL_TOTAL := GL_TOTAL + GL_ARR[I,2]
NEXT
FOR I := 1 TO LEN(SV_GLARR)
IF VALTYPE(SV_GLARR[I]) == 'C'
ELSE
SV_TOTAL := SV_TOTAL + SV_GLARR[I,2]
SVARR_LEN := SVARR_LEN + 1
ENDIF
NEXT
IF EMPTY(SV_GLARR)
SV_GLARR:= ACLONE(GL_ARR)
AADD(SV_GLARR, MORDER_NUM)
ELSE
// IS IT THE SAME ORDER NUMBER USE THE SAVE GL_ARR
ELM := ASCAN(SV_GLARR, {|X| VALTYPE(X) == 'C'})
IF EMPTY(ELM)
SV_GLARR:= ACLONE(GL_ARR)
AADD(SV_GLARR,MORDER_NUM)
ELSEIF MORDER_NUM == SV_GLARR[ELM]
// THE SAME ORDER NUMBER HAS THE GL_ARR CHANGED
IF LEN(GL_ARR) <> SVARR_LEN .OR. SV_TOTAL <> GL_TOTAL
SV_GLARR:= ACLONE(GL_ARR)
AADD(SV_GLARR,MORDER_NUM)
ENDIF
ELSE
SV_GLARR:= ACLONE(GL_ARR)
AADD(SV_GLARR,MORDER_NUM)
ENDIF
ENDIF
IF GLALLOC_OVR
GL_ARR := ASORT(GL_OVR,,, {|X,Y| X[1] < Y[1] })
ELSE
GL_ARR := {}
FOR I := 1 TO LEN(SV_GLARR)
IF VALTYPE(SV_GLARR[I]) == 'C'
//THIS IS THE ORDER NUMBER-USED TO DETERMINE WHEN TO RESET THE ARRAY
ELSE
AADD(GL_ARR, SV_GLARR[I])
ENDIF
NEXT
GL_ARR := ASORT(GL_ARR,,, {|X,Y| X[1] < Y[1] })
ENDIF
WORKSPACE := 46
TEMPSPACE := 21
IF MHOME_LOC_CODE = 'KC'
WORKSPACE := 49
ELSEIF MHOME_LOC_CODE = 'LINDS'
WORKSPACE := 48
//** ADDRESS LINDS DELIVERY TICKET PRINT ANOMALIES //** P3N -07/17/00
IF SUBTYPE = 'DELIVERY'
WORKSPACE := 47
ENDIF
ENDIF
FOR I := 1 TO LEN(GL_ARR)
IF LEN(GL_ARR[I]) > 2 // TAX SCHEDULE NAME
AADD(TAXPRNTARR, GL_ARR[I]) // GL NUM, TAX AMT, DESC
ENDIF
NEXT
// MEMO NOTE FIELD FROM ORDER SCREEN
IF !EMPTY( (CUR_MAST)->NOTES )
RETVARARR := PRT_MEMO( {} , {} , ALLTRIM((CUR_MAST)->NOTES), NOTELEN) // PRINT THE ORDER MASTER NOTES
WORKARR := ACLONE( RETVARARR[1] )
FOR I := 1 TO LEN( WORKARR )
AADD(NOTEARR, WORKARR[I] )
NEXT
AADD(NOTEARR, ' ' )
ENDIF
// TAX NOTES ON INVOICE
IF ORD_TYPE = 'INV' .AND. TAX_SCHED->(DBSEEK ( (CUR_MAST)->TAXSCH ) ) ;
.AND. !EMPTY( TAX_SCHED->NOTES )
RETVARARR := PRT_MEMO( {}, {}, TAX_SCHED->NOTES, NOTELEN) // PRINT THE TAX SCHEDULE NOTES
WORKARR := ACLONE( RETVARARR[1] )
FOR I := 1 TO LEN( WORKARR )
AADD(NOTEARR, WORKARR[I] )
NEXT
ENDIF
// 9-6-95 - just say "Sales Tax"
IF EMPTY(TAX_DESC) .OR. MHOME_LOC_CODE <> 'KC'
TAX_DESC := PADL( TRIM("Sales Tax") + ': ', TEMPSPACE-3, ' ' )
ELSE
TAX_DESC := PADL( TRIM(TAX_DESC) + ': ', TEMPSPACE-3, ' ' )
ENDIF
PRT_AMT := DO_WE_PRT_AMT( ORD_TYPE, SUBTYPE )
IF PRT_AMT .OR. ITEMIZE = 2
DID_NOTES := .T.
IF (CUR_MAST)->ORDER_NUM == MORDER_NUM
ELSE
(CUR_MAST)->(DBSEEK(MORDER_NUM))
ENDIF
// PRINT SUBTOTAL SO FAR
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
PV2 := SPACE(18) + '----------'
AADD(PTAIL_ARR, PV1 + PV2)
IF (CUR_MAST)->ORD_D_TTL <> 0 .AND. LI_DISC_PRNT
LINE_TOTAL := LINE_TOTAL - (CUR_MAST)->ORD_D_TTL
ENDIF
IF LINE_TOTAL < 0
NEGTOT := TRANSFORM(LINE_TOTAL, '(9999999999999999.99)') //**P3N 4/28/98
****NEGTOT := TRANSFORM(LINE_TOTAL, '(9999999999.99)')
NEGTOT := STRTRAN(NEGTOT, ' ', '')
NEGTOT := STRTRAN(NEGTOT, '-', '')
NEGTOT := PADL(NEGTOT,17, ' ') //** P3N - 4/28/98
****NEGTOT := PADL(NEGTOT,11, ' ')
ELSE
NEGTOT := 0
ENDIF
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
IF (CUR_MAST)->QUOTE_PRIC = 0
IF EMPTY(NEGTOT)
PV2 = ' ' + STR(LINE_TOTAL,16,2) //** P3N - 4/28/98
ELSE
PV2 = ' ' + NEGTOT // NEGATIVE TOTAL //** P3N - 4/28/98
ENDIF
ELSE
PV2 = ' Quoted Amount: ' + STR( (CUR_MAST)->QUOTE_PRIC,10,2)
ENDIF
AADD(PTAIL_ARR, PV1 + PV2)
MISCPRNT := .F.
IF (CUR_MAST)->ORD_D_TTL <> 0
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE-8), NOTEARR )
IF LI_DISC_PRNT
IF EMPTY(PV1)
ELSE
AADD(PTAIL_ARR, PV1 )
ENDIF
ELSEIF EMPTY((CUR_MAST)->ORD_D_TTL)
ELSE
IF EMPTY((CUR_MAST)->DISCOUNT)
PV2 := ' Less ORDER Discount:'
ELSE
PV2 := 'Less ORDER Discount '
PV2 := PV2+ STR((CUR_MAST)->DISCOUNT,3,0) + '%:'
ENDIF
PV2 := PV2+ STR((CUR_MAST)->ORD_D_TTL*-1,11,2) //** P3N - 12/10/98
PV2 := STRTRAN( PV2, '-','(' ) + ')' //** P3N - 12/10/98
//** PV2 := STRTRAN(((CUR_MAST)->ORD_D_TTL*-1,11,2) //** P3N - 12/10/98
AADD(PTAIL_ARR, PV1 + PV2)
LINE_TOTAL := LINE_TOTAL - (CUR_MAST)->ORD_D_TTL
ENDIF
ENDIF
IF (CUR_MAST)->( FIELDPOS('FREIGHT') ) > 0
IF (CUR_MAST)->FREIGHT <> 0
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
AADD(PTAIL_ARR, PV1 + ' Freight Charges: ' + STR((CUR_MAST)->FREIGHT,10,2) )
MISCPRNT := .T.
ENDIF
ENDIF
NEGTOT := 0 //** P3N - 12/4/98
//** P3N - 09/21/06 - ADDED THE FUEL SURCHARGE TO ORDER ENTRY
IF (CUR_MAST)->FUEL_CHRG <> 0
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE-30), NOTEARR )
SUBTOTL := (CUR_MAST)->ORD_L_TTL - (CUR_MAST)->ORD_D_TTL + (CUR_MAST)->ORD_M_TTL //**P3N - 11/13/06
//**SUBTOTL := (CUR_MAST)->ORD_L_TTL - (CUR_MAST)->ORD_D_TTL //** P3N - 11/13/06
SUBTOTL += (CUR_MAST)->MISC_QTY1 * (CUR_MAST)->MISC_AMT1
SUBTOTL += (CUR_MAST)->MISC_QTY2 * (CUR_MAST)->MISC_AMT2
SUBTOTL += (CUR_MAST)->MISC_QTY3 * (CUR_MAST)->MISC_AMT3
//**WKPCT := VAL(STR(((CUR_MAST)->FUEL_CHRG / SUBTOTL) * 100,15,2) ) //** P3N - 04/22/09 - per Darlene - remove %
AADD(PTAIL_ARR, PV1 +SPACE(31)+ ; //** P3N - 04/22/09 - per Darlene - remove %
'Delivery Charge:'+ STR((CUR_MAST)->FUEL_CHRG,11,2)) //** P3N - 04/22/09
//**AADD(PTAIL_ARR, PV1 +SPACE(8)+ STR( WKPCT,3,0) + ; //** P3N - 04/13/09
//** '% Delivery Charge:'+ STR((CUR_MAST)->FUEL_CHRG,28,2)) //** P3N - 04/13/09
//** P3N - 04/13/09 - PER DARLENE - REMOVE "Fuel Sur" from description
//** '% Delivery Fuel SurCharge:'+ STR((CUR_MAST)->FUEL_CHRG,28,2))
MISCPRNT := .T.
ENDIF
IF (CUR_MAST)->SALES_TAX <> 0
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE ), NOTEARR )
IF (CUR_MAST)->SALES_TAX < 0 //** P3N - 10/14/98
NEGTOT := TRANSFORM((CUR_MAST)->SALES_TAX, '(9999999999.99)')
NEGTOT := STRTRAN(NEGTOT, ' ', '') //** P3N - 10/14/98
NEGTOT := STRTRAN(NEGTOT, '-', '') //** P3N - 10/14/98
NEGTOT := PADL(NEGTOT,11, ' ') //** P3N - 10/14/98
ENDIF //** P3N - 10/14/98
IF EMPTY(NEGTOT) //** P3N - 10/14/98
AADD(PTAIL_ARR, PV1 + TAX_DESC + STR((CUR_MAST)->SALES_TAX,10,2) )
ELSE //** P3N - 10/14/98
AADD(PTAIL_ARR, PV1 + TAX_DESC + NEGTOT ) //** P3N - 10/14/98
ENDIF
MISCPRNT := .T.
ENDIF
//** P3N - 12/3/98 DO NOT PRINT NONTAX ITEMS FOR INTER COMPANY PO'S
IF WHICHCOPY == 'PO' .AND. SUBTYPE == 'PO'
//** P3N - 12/2/98 PREPARE NONTAX ITEMS FOR PRINTING
ELSE
NONTX_ARR := PRT_NONTX(MISC_ARR, PARTIAL_INVOICE, .T., PRT_BO, REPRINT_INVOICE)
FOR I := 1 TO LEN(NONTX_ARR)
PV1 := NONTX_ARR[I]
PVCNT ++
AADD(PTAIL_ARR, PV1)
MISCPRNT := .T.
NEXT
ENDIF
NEGTOT := 0 //** P3N - 12/4/98
IF MISCPRNT .OR. PRT_AMT //** P3N - 4/8/98
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
PV2 := SPACE(18) + '----------'
AADD(PTAIL_ARR, PV1 + PV2)
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
IF ORDTOT < 0
//** NEGTOT := TRANSFORM((CUR_MAST)->TOTAL_AMT, '(9999999999.99)')
NEGTOT := TRANSFORM(ORDTOT, '(9999999999.99)')
NEGTOT := STRTRAN(NEGTOT, ' ', '')
NEGTOT := STRTRAN(NEGTOT, '-', '')
NEGTOT := PADL(NEGTOT,11, ' ')
//** P3N - 11/19/98
//**ELSEIF (CUR_MAST)->TOTAL_AMT = 0.00 // ** P3N - 4/8/98
ELSEIF ORDTOT = 0.00
GL_ARR := {} // ** NO GL ALLOCATIONS
NEGTOT := 0 // ** FOR A ORDER TOTAL OF 0!
ELSE
NEGTOT := 0
ENDIF
IF EMPTY(NEGTOT)
//** P3N - 11/19/98
//** AADD(PTAIL_ARR, PV1 + ' Order Total: ' + STR((CUR_MAST)->TOTAL_AMT,10,2) )
AADD(PTAIL_ARR, PV1 + ' Order Total: ' + STR(ORDTOT,10,2) )
ELSE
AADD(PTAIL_ARR, PV1 + ' Order Total: ' + NEGTOT )
ENDIF
ENDIF
NEGTOT := 0 //** P3N - 12/4/98
IF (CUR_MAST)->DOWN_PMT <> 0
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE-2), NOTEARR )
NEGTOT := TRANSFORM((CUR_MAST)->DOWN_PMT*-1 , '(9999999999.99)')
NEGTOT := STRTRAN(NEGTOT, ' ', '')
NEGTOT := STRTRAN(NEGTOT, '-', '')
NEGTOT := PADL(NEGTOT,12, ' ')
AADD(PTAIL_ARR, PV1 + DP_DESC + NEGTOT )
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
AADD(PTAIL_ARR, PV1 + SPACE(18) + '----------' )
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
NEGTOT := 0 //** P3N - 12/4/98
//** P3N - 11/19/98
//**IF (CUR_MAST)->TOTAL_AMT < 0
IF ORDTOT < 0
//** IF (CUR_MAST)->TOTAL_AMT + (CUR_MAST)->DOWN_PMT < 0
IF ORDTOT + (CUR_MAST)->DOWN_PMT < 0
//** NEGTOT := TRANSFORM((CUR_MAST)->TOTAL_AMT-(CUR_MAST)->DOWN_PMT , '(9999999999.99)')
NEGTOT := TRANSFORM(ORDTOT-(CUR_MAST)->DOWN_PMT , '(9999999999.99)')
NEGTOT := STRTRAN(NEGTOT, ' ', '')
NEGTOT := STRTRAN(NEGTOT, '-', '')
NEGTOT := PADL(NEGTOT,11, ' ')
ELSE
NEGTOT := 0
ENDIF
ELSE
NEGTOT := 0
ENDIF
IF EMPTY(NEGTOT)
//** P3N - 11/19/98
//** AADD(PTAIL_ARR, PV1 + 'Total Amount Due: ' + STR((CUR_MAST)->TOTAL_AMT - (CUR_MAST)->DOWN_PMT,10,2) )
AADD(PTAIL_ARR, PV1 + 'Total Amount Due: ' + STR(ORDTOT - (CUR_MAST)->DOWN_PMT,10,2) )
ELSE
AADD(PTAIL_ARR, PV1 + 'Total Amount Due: ' + NEGTOT )
ENDIF
ENDIF
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
IF MHOME_LOC_CODE <> 'IOLA' // DARLENE 8-22-96
AADD(PTAIL_ARR, PV1 + SPACE(18) + '----------' )
ENDIF
FOR I := PVCNT TO MAX(LEN(GL_ARR), LEN(NOTEARR) )
PVCNT ++
PV1 := GETPV1(GL_ARR, PVCNT, SPACE(WORKSPACE), NOTEARR )
AADD(PTAIL_ARR, PV1 )
NEXT
ELSE
//** P3N - 12/3/98 DO NOT PRINT NONTAX ITEMS FOR INTER COMPANY PO'S
IF WHICHCOPY == 'PO' .AND. SUBTYPE == 'PO'
//** P3N - 12/2/98 PREPARE NONTAX ITEMS FOR PRINTING
ELSE
NONTX_ARR := PRT_NONTX(MISC_ARR, PARTIAL_INVOICE, .F., PRT_BO, REPRINT_INVOICE)
FOR I := 1 TO LEN(NONTX_ARR)
PV1 := NONTX_ARR[I]
PVCNT ++
AADD(PTAIL_ARR, PV1)
MISCPRNT := .T.
NEXT
ENDIF
ENDIF
IF !DID_NOTES .AND. LEN(NOTEARR) > 0
//** P3N 9/2/98
//** ONLY INCLUDE THE SPECIAL BACKORDER NOTES ON THE INVOICE COPIES
IF AT(' ARE ON BACK ORDER AND INCLUDED IN THE ', (CUR_MAST)->NOTES) > 0
IF ORD_TYPE == 'INV'
FOR I := 1 TO LEN(NOTEARR)
AADD(PTAIL_ARR, SPACE(15) + NOTEARR[I])
NEXT
ENDIF
ELSE
FOR I := 1 TO LEN(NOTEARR)
AADD(PTAIL_ARR, SPACE(15) + NOTEARR[I])
NEXT
ENDIF
ENDIF
//** P3N 9/2/98
//** BO MEMO NOTE FIELD FROM ORDER MASTER(CGW0OM)
//** ORDER CONTROL SCREEN (3220B/F1)
IF ORD_TYPE == 'BACKORD'
PTAIL_ARR := {}
IF SUBTYPE == 'BACKORD' //** P3N - 11/2/98 HAPPY B-DAY MATT
WKNOTES := (CUR_MAST)->BO_NOTES //** P3N - 11/2/98 HAPPY B-DAY MATT
ELSEIF SUBTYPE == 'SCREENS' //** P3N - 11/2/98 HAPPY B-DAY MATT
IF (CUR_MAST)->(FIELDPOS('BONOTESCRN')) > 0
WKNOTES := (CUR_MAST)->BONOTESCRN //** P3N - 11/2/98 HAPPY B-DAY MATT
ENDIF //** P3N - 11/2/98 HAPPY B-DAY MATT
ENDIF //** P3N - 11/2/98 HAPPY B-DAY MATT
IF !EMPTY( WKNOTES )
RETVARARR := PRT_MEMO( {} , {} , ALLTRIM(WKNOTES), NOTELEN) // PRINT THE ORDER MASTER BO_NOTES
WORKARR := ACLONE( RETVARARR[1] )
FOR I := 1 TO LEN( WORKARR )
AADD(PTAIL_ARR, SPACE(12) + WORKARR[I] )
NEXT
AADD(PTAIL_ARR, ' ' )
ENDIF
ENDIF
RETURN PTAIL_ARR
***************************************************************
* P3N - 12/02/98 *
* PREPARE NONTAX ITEMS FOR PRINTING *
***************************************************************
FUNCTION PRT_NONTX(MISC_ARR, PARTIAL_INVOICE, PRT_AMT, PRT_BO, REPRINT_INVOICE)
LOCAL TX1SHP := 0, TX2SHP := 0, TX3SHP := 0, TX1INV := 0, TX2INV := 0, TX3INV := 0
LOCAL TX1BO := 0, TX2BO := 0, TX3BO := 0, TX1A := 0, TX2A := 0, TX3A := 0
LOCAL TX1Q := 0 , TX2Q := 0, TX3Q := 0, I := 0, WK_TOTAL := 0, PV1
LOCAL PTAXAMT := PRT_AMT, PTAIL_ARR := { }
IF ITEMIZE = 2
PTAXAMT := .F.
ENDIF
TX1A := (CUR_MAST)->NOTX_AMT1
TX1Q := (CUR_MAST)->NOTX_QTY1
TX2A := (CUR_MAST)->NOTX_AMT2
TX2Q := (CUR_MAST)->NOTX_QTY2
TX3A := (CUR_MAST)->NOTX_AMT3
TX3Q := (CUR_MAST)->NOTX_QTY3
IF PRT_BO
FOR I := 1 TO LEN(MISC_ARR[1])
IF MISC_ARR[1,I,5] == 'ORDNOTX1'
TX1SHP := MISC_ARR[1,I,3] //** SHIP QTY
TX1INV := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDNOTX2'
TX2SHP := MISC_ARR[1,I,3] //** SHIP QTY
TX2INV := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDNOTX3'
TX3SHP := MISC_ARR[1,I,3] //** SHIP QTY
TX3INV := MISC_ARR[1,I,6] //** INV QTY
ENDIF
NEXT
TX1BO := TX1Q - TX1SHP
TX2BO := TX2Q - TX2SHP
TX3BO := TX3Q - TX3SHP
ENDIF
IF (CUR_MAST)->NOTX_QTY1 <> 0
IF PARTIAL_INVOICE
WK_TOTAL := TX1A * TX1SHP
ELSEIF REPRINT_INVOICE
WK_TOTAL := TX1A * TX1INV
ELSE
WK_TOTAL := TX1A * TX1Q
ENDIF
IF EMPTY(TX1BO)
TX1BO := SPACE(4)
ELSE
TX1BO := STR(TX1BO,4,0)
ENDIF
IF EMPTY(TX1SHP)
TX1SHP := SPACE(5)
ELSEIF TX1Q = TX1SHP //** P3N - 12/28/98
TX1SHP := SPACE(5) //** DO NOT PRINT SHIP QTY IF SAME AS
ELSE //** ORDER QTY
TX1SHP := STR(TX1SHP,5,0)
ENDIF
PV1 := STR(TX1Q,4,0) + TX1BO + TX1SHP + SPACE(2)
IF MHOME_LOC_CODE = 'KC'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM1 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX1A,7,2) + ' '
ENDIF
ELSEIF MHOME_LOC_CODE = 'LINDS'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM1 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX1A,7,2) + ' '
ENDIF
ELSE // IOLA AND PAWNEE
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM1 + ' ~ ' + SPACE(11)
IF PTAXAMT
PV1 := PV1 + STR(TX1A,7,2) + ' '
ENDIF
ENDIF
IF PTAXAMT
PV1 := PV1 + STR(WK_TOTAL,10,2)
ELSE
AADD(PTAIL_ARR, ' ')
ENDIF
AADD(PTAIL_ARR, PV1)
ENDIF
IF (CUR_MAST)->NOTX_QTY2 <> 0
IF PARTIAL_INVOICE
WK_TOTAL := TX2A * TX2SHP
ELSEIF REPRINT_INVOICE
WK_TOTAL := TX2A * TX2INV
ELSE
WK_TOTAL := TX2A * TX2Q
ENDIF
IF EMPTY(TX2BO)
TX2BO := SPACE(4)
ELSE
TX2BO := STR(TX2BO,4,0)
ENDIF
IF EMPTY(TX2SHP)
TX2SHP := SPACE(5)
ELSEIF TX2Q = TX2SHP //** P3N - 12/28/98
TX2SHP := SPACE(5) //** DO NOT PRINT SHIP QTY IF SAME AS
ELSE //** ORDER QTY
TX2SHP := STR(TX2SHP,5,0)
ENDIF
PV1 := STR(TX2Q,4,0) + TX2BO + TX2SHP + SPACE(2)
IF MHOME_LOC_CODE = 'KC'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM2 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX2A,7,2) + ' '
ENDIF
ELSEIF MHOME_LOC_CODE = 'LINDS'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM2 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX2A,7,2) + ' '
ENDIF
ELSE // IOLA AND PAWNEE
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM2 + ' ~ ' + SPACE(11)
IF PTAXAMT
PV1 := PV1 + STR(TX2A,7,2) + ' '
ENDIF
ENDIF
IF PTAXAMT
PV1 := PV1 + STR(WK_TOTAL,10,2)
ELSE
AADD(PTAIL_ARR, ' ')
ENDIF
AADD(PTAIL_ARR, PV1)
ENDIF
IF (CUR_MAST)->NOTX_QTY3 <> 0
IF PARTIAL_INVOICE
WK_TOTAL := TX3A * TX3SHP
ELSEIF REPRINT_INVOICE
WK_TOTAL := TX3A * TX3INV
ELSE
WK_TOTAL := TX3A * TX3Q
ENDIF
IF EMPTY(TX3BO)
TX3BO := SPACE(4)
ELSE
TX3BO := STR(TX3BO,4,0)
ENDIF
IF EMPTY(TX3SHP)
TX3SHP := SPACE(5)
ELSEIF TX3Q = TX3SHP //** P3N - 12/28/98
TX3SHP := SPACE(5) //** DO NOT PRINT SHIP QTY IF SAME AS
ELSE //** ORDER QTY
TX3SHP := STR(TX3SHP,5,0)
ENDIF
PV1 := STR(TX3Q,4,0) + TX3BO + TX3SHP + SPACE(2)
IF MHOME_LOC_CODE = 'KC'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM3 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX3A,7,2) + ' '
ENDIF
ELSEIF MHOME_LOC_CODE = 'LINDS'
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM3 + ' ~ ' + SPACE(13)
IF PTAXAMT
PV1 := PV1 + STR(TX3A,7,2) + ' '
ENDIF
ELSE // IOLA AND PAWNEE
PV1 := PV1 + (CUR_MAST)->NOTX_ITEM3 + ' ~ ' + SPACE(11)
IF PTAXAMT
PV1 := PV1 + STR(TX3A,7,2) + ' '
ENDIF
ENDIF
IF PTAXAMT
PV1 := PV1 + STR(WK_TOTAL,10,2)
ELSE
AADD(PTAIL_ARR, ' ')
ENDIF
AADD(PTAIL_ARR, PV1)
ENDIF
RETURN PTAIL_ARR
***************************************************************
***************************************************************
***************************************************************
// PRINT THE ACCOUNTING TOTALS / GL ALLOCATIONS?
FUNCTION PRNT_ACCT_INFO( ORD_TYPE, WHICHCOPY, SUBTYPE )
LOCAL RETVAL
//**IF (CUR_MAST)->TERMS = '90' .OR. ; //** NO CHARGE //**P3N - 6/4/98
//** (CUR_MAST)->TERMS = '96' //** CANCELLATION //**P3N - 6/4/98
IF ZERO_ORDER() //** NO CHARGE //**P3N - 3/5/99
//** FOR A NO CHARGE OR CANCELLATION FORCE TO NOT PRINT GL AMTS
RETVAL := .F.
ELSEIF ORD_TYPE == 'INV' // PRINT CUSTOMER INVOICE
RETVAL := .T.
ELSEIF (ORD_TYPE == 'OD' .AND. WHICHCOPY == 'CTRL' )
RETVAL := .T.
IF MHOME_LOC_CODE = 'LINDS' .AND. SUBTYPE == 'ORDERDESK'
//PER LINDA @ LINDSBOURG 11-10-97
//PRINT GL ALLOCATIONS / ORDER AMOUNTS ON ORDERDESK - GOLDEN ROD
ELSEIF SUBTYPE = 'DELIVERY' .AND. IS_COD( (CUR_MAST)->TERMS )
RETVAL := .T.
ELSE
RETVAL := .F.
ENDIF
ELSE
RETVAL := .F.
ENDIF
RETURN RETVAL
************************************************************
************************************************************
************************************************************
FUNCTION GETPV1(GL_ARR, ELEM, ALTVALU, NOTEARR)
LOCAL RETVAL := SPACE(10) // FILL OUT 1ST "COLUMN"
IF LEN(NOTEARR) >= ELEM
RETVAL := RETVAL + ' ' + NOTEARR[ELEM]
ENDIF
IF LEN(RETVAL) < LEN(ALTVALU)
RETVAL := PADR(RETVAL, LEN(ALTVALU) )
ELSE
IF LEN(RETVAL) > LEN(ALTVALU)
RETVAL := SUBS(RETVAL, 1, LEN(ALTVALU) )
ENDIF
ENDIF
RETURN RETVAL
***************************************************************
//* CALCULATE THE NUMBER OF LINES THAT WILL FIT ON EACH PAGE OF THE ORDER
//* AND THE NUMBER OF PAGES ON THE ORDER
***************************************************************
FUNCTION CALC_PAGES(PBODY_ARR, PTAIL_ARR)
LOCAL STRT := 1, PG_NUM := 0, I
LOCAL NEW_PROD, PG_LINES := 0
LOCAL LINES_LEFT := MBODY_LEN
LOCAL PG_ARR := {}, THIS_PG, WKPG
LOCAL NEWSTRT := 1, WK_LI_DESC
IF LEN(PBODY_ARR) = 1
AADD (PG_ARR, {1, 1})
RETURN PG_ARR
ENDIF
DO WHILE STRT < LEN(PBODY_ARR)
PG_LINES := 0
// START ON FIRST PRODUCT
// WON'T FIND ANY IF ONLY MISC LINE ITEMS
FOR I := STRT TO LEN(PBODY_ARR)
IF SUBS(PBODY_ARR[I], 1,1)$'^'
STRT = I
EXIT
ENDIF
NEXT
THIS_PG := CNT_PAGE_LINES(STRT, PBODY_ARR, PTAIL_ARR) //** P3N - 05/15/01
//** THIS_PG := CNT_PAGE_LINES(STRT, PBODY_ARR) //** P3N - 05/15/01
STRT := STRT + THIS_PG
//** IF THIS_PG > MBODY_LEN //** P3N - 9/8/99
//** DO WHILE THIS_PG > MBODY_LEN //** P3N - 9/8/99
IF THIS_PG >= MBODY_LEN //** P3N - 9/8/99
DO WHILE THIS_PG >= MBODY_LEN //** P3N - 9/8/99
PG_NUM ++
IF PG_NUM == 1
SV_LI_DESC := SV_DESC_LINE_ITEM(PBODY_ARR, 1) //FIND LINE ITEM HEADING
ELSE
WK_LI_DESC := SV_DESC_LINE_ITEM(PBODY_ARR, (PG_NUM*MBODY_LEN)) //FIND LINE ITEM HEADING
IF EMPTY(WK_LI_DESC)
ELSE
SV_LI_DESC := WK_LI_DESC
ENDIF
ENDIF
IF LEN(PBODY_ARR) > (PG_NUM*MBODY_LEN)
IF SUBS(PBODY_ARR[PG_NUM*MBODY_LEN], 1,1)$'^'
AADD (PG_ARR, {PG_NUM, MBODY_LEN-1 })
THIS_PG := THIS_PG - MBODY_LEN+1
ELSEIF THIS_PG = MBODY_LEN //** P3N 12/07/99 PAGE BRK
ELSE
//7-24-97 FIX PAGE BREAK LOGIC!
AADD (PG_ARR, {PG_NUM, PAGEBRK(PBODY_ARR, PG_ARR, PG_NUM) })
THIS_PG := THIS_PG - PAGEBRK(PBODY_ARR, PG_ARR, PG_NUM)
ENDIF
ELSE
WKPG := MIN( LEN(PBODY_ARR)-(PG_NUM-1*MBODY_LEN),MBODY_LEN)
AADD (PG_ARR, {PG_NUM, WKPG })
THIS_PG := THIS_PG - WKPG
ENDIF
ENDDO
ENDIF
PG_NUM ++
IF PG_NUM == 1 //** P3N - 9/9/99 NO THE EARTH DID NOT COME TO AN END TODAY
SV_LI_DESC := SV_DESC_LINE_ITEM(PBODY_ARR, 1) //FIND LINE ITEM HEADING
ENDIF //** P3N - 9/9/99 NO THE EARCH DID NOT COME TO AN END TODAY
IF EMPTY(THIS_PG) //** P3N - 12/7/99 PAGE BRK
ELSE //** P3N - 12/7/99 PAGE BRK
AADD (PG_ARR, {PG_NUM, THIS_PG })
ENDIF //** P3N - 12/7/99 PAGE BRK
ENDDO
// PRINT NOTES AT BOTTOM OF EVERY PAGE. ALTER LINE COUNT ACCORDINGLY
IF !EMPTY((CUR_MAST)->NOTE_FIELD) .AND. (CUR_MAST)->PRNT_NOTES$'Y'
FOR I := 1 TO LEN(PG_ARR)
IF MBODY_LEN < PG_ARR[I,2]
PG_ARR[I,2] --
ENDIF
NEXT
ENDIF
RETURN PG_ARR
***************************************************************
* FIND THE SPOT TO BREAK A PAGE CLEANLY!!!
***************************************************************
FUNCTION PAGEBRK(PBODY_ARR, PG_ARR, PG_NUM)
LOCAL LOOPSTRT := 0
LOCAL PG_BRK, I
IF EMPTY(PG_ARR) //** P3N - 8/20/99
LOOPSTRT := LEN(PBODY_ARR) //** P3N - 8/20/99
ELSE //** P3N - 8/20/99
FOR I := 1 TO LEN(PG_ARR) //** P3N - 8/20/99
LOOPSTRT := LOOPSTRT + PG_ARR[I,2] //** P3N - 8/20/99
NEXT //** P3N - 8/20/99
LOOPSTRT := LEN(PBODY_ARR) - LOOPSTRT //** P3N - 8/20/99
ENDIF //** P3N - 8/20/99
DO WHILE .T.
FOR I := LOOPSTRT TO 1 STEP -1
//** IF SUBS(PBODY_ARR[I], 1,1)$'^' //** P3N - 3/20/98
IF SUBS(PBODY_ARR[I], 1,1)$'^' .OR. ;
SUBS(PBODY_ARR[I], 1,1)$' '
PG_BRK := I - 1
EXIT
ENDIF
NEXT
IF PG_BRK > MBODY_LEN
LOOPSTRT := PG_BRK
LOOP
ELSE //** P3N - 8/20/99
PG_BRK := ( MBODY_LEN - LEN(SV_LI_DESC) ) //** NO CLEAN BREAK FOUND - BREAK BASED
EXIT //** ON MBODY_LEN FROM CONTROL FILE
ENDIF
ENDDO
RETURN PG_BRK
***************************************************************
* BLD A PAGE OF ORDER LINES FOR A GIVEN PRODUCT
***************************************************************
//**FUNCTION CNT_PAGE_LINES( STRT, PBODY_ARR ) //** P3N - 05/15/01
FUNCTION CNT_PAGE_LINES( STRT, PBODY_ARR, PTAIL_ARR) //** P3N - 05/15/01
LOCAL I, ENDLINE := 0, NEW_PROD, RET_ARR := {}
LOCAL INLOOP := .F., WORKVAR
LOCAL NOTE_LEN := 0 //** P3N - 05/15/01
IF EMPTY( (CUR_MAST)->NOTE_FIELD ) //** P3N - 05/15/01
ELSEIF (CUR_MAST)->PRNT_NOTES$'Y' //** P3N - 05/15/01
//** TAKE INTO ACCOUNT THE ORDER MASTER->NOTE_FIELD (UP TO 5 LINES OF 50 CHARS)
NOTE_LEN := INT (LEN(ALLTRIM( (CUR_MAST)->NOTE_FIELD) ) / 50 )
NOTE_LEN := NOTE_LEN + 1 + LEN(PTAIL_ARR) //** P3N - 05/15/01
ENDIF //** P3N - 05/15/01
LINE_CNTR := 0
DO WHILE .T.
THIS_PROD := CNT_PROD_LINES(STRT, PBODY_ARR )
// STORM COPY - ONLY ONE PRODUCT PER PAGE
IF SUBS( PBODY_ARR[STRT],2,1 ) = CHR(1)
WORKVAR := ENDLINE + THIS_PROD
IF WORKVAR < LEN(PBODY_ARR) .AND. SUBS( PBODY_ARR[WORKVAR + 1],2,1) = CHR(1)
ENDLINE := ENDLINE + THIS_PROD
RETURN ENDLINE
ELSEIF WORKVAR = LEN(PBODY_ARR) //** P3N - 4/8/98
IF EMPTY(ENDLINE) //** P3N - 4/9/98
RETURN THIS_PROD //** ONLY ONE STORM COPY - ONE PAGE!
ELSE
RETURN ENDLINE //** LAST ITEM ON STORM S/B ON OWN PAGE!
ENDIF
ENDIF
ENDIF
//** IF ENDLINE + THIS_PROD <= MBODY_LEN //**P3N - 05/15/01
IF ENDLINE + THIS_PROD <= ( MBODY_LEN - NOTE_LEN ) //**P3N - 05/15/01
ENDLINE := ENDLINE + THIS_PROD
STRT := STRT + THIS_PROD
ELSE
IF ENDLINE > 0
RETURN ENDLINE
ELSE // IF ENDLINE IS ZERO THIS MEANS THE PRODUCT
// WON'T FIT ON THE PAGE ( > 36 LINES [BODYLINES] )
RETURN THIS_PROD
ENDIF
ENDIF
IF STRT > LEN(PBODY_ARR)
RETURN ENDLINE
ENDIF
ENDDO
*********************************************************************
* COUNT THE NUMBER OF LINES ON THE
*********************************************************************
FUNCTION CNT_PROD_LINES(STRT, PBODY_ARR)
LOCAL LAST_ROW := 1
STRT ++
DO WHILE STRT <= LEN(PBODY_ARR)
IF SUBS(PBODY_ARR[STRT], 1, 1 )$'^' //COUNT PRODUCT LINES
EXIT
ENDIF
IF SUBS(PBODY_ARR[STRT], 1, 2 )$'^'+CHR(1) //STORMPAGE EACH ITEM ON OWN PAGE
EXIT
ENDIF
LAST_ROW ++
STRT ++
ENDDO
RETURN LAST_ROW
*******************************************************************
* THIS FUNCTION WILL DETERMINE THE FORM TYPE USED FOR PRINTING
*******************************************************************
FUNCTION GET_FORMTYPE(WHCHORDER, WHICH_TYPE, SUBTYPE)
LOCAL RET_VAL := ' ', ORD_TYPE := WHCHORDER, PP_LOC := {'IOLA', 'LINDS', 'KC', 'PAWNEE' }
DO CASE
CASE SUBTYPE = 'PREBILL' .OR. SUBTYPE = 'PRECOST'
MLMAR := '' // DO NOT ADJUST THE LMAR/TMAR FOR FREE FORM PRT
MTMAR := 0 // FORCE TO '' / 0 RESPECTIVELY
RET_VAL := 'BLANK'
CASE SUBTYPE = 'DELIVERY' .AND. ;
ASCAN( PP_LOC, {|X| X = ALLTRIM(MHOME_LOC_CODE) } ) > 0
RET_VAL := 'PREPRINT-TRACTOR'
CASE ORD_TYPE = 'INV' .AND. CUR_MAST = 'ORD_MAST' ;
.AND. ASCAN( PP_LOC, {|X| X = ALLTRIM(MHOME_LOC_CODE) } ) > 0
RET_VAL := 'PREPRINT-TRACTOR' // NO EJECT MESSAGE
CASE ORD_TYPE == 'INV' .AND. CUR_MAST = 'ORD_MAST'
RET_VAL := 'PREPRINT'
CASE ORD_TYPE == 'BACKORD' .AND. CUR_MAST = 'ORD_MAST' ; //** P3N - 9/11/98
.AND. ASCAN( PP_LOC, {|X| X = ALLTRIM(MHOME_LOC_CODE) } ) > 0
RET_VAL := 'PREPRINT-TRACTOR'
OTHERWISE
MLMAR := '' // DO NOT ADJUST THE LMAR/TMAR FOR FREE FORM PRT
MTMAR := 0 // FORCE TO '' / 0 RESPECTIVELY
RET_VAL := 'BLANK'
ENDCASE
RETURN RET_VAL
*******************************************************************
* THIS FUNCTION WILL FORMAT THE MISC SIZE FOR PRINTING
*******************************************************************
FUNCTION FORMAT_MISCSIZE(P_SIZE)
LOCAL RETVAL, I
FOR I := 1 TO LEN(P_SIZE)
IF SUBST(P_SIZE,I,1)$'0123456789'
IF EMPTY(RETVAL)
RETVAL := SUBST(P_SIZE,I,1)
ELSE
RETVAL := RETVAL + SUBST(P_SIZE,I,1)
ENDIF
ENDIF
NEXT
IF EMPTY(RETVAL) .OR. LEN(RETVAL) > 4
RETVAL := 'INV MISC SIZE'
ELSE
//** RETVAL := PADL(RETVAL, 4, ' ')
RETVAL := VAL(RETVAL)
ENDIF
RETURN RETVAL
*******************************************************************
//** P3N - 12/15/98
//** THIS FUNCTION WILL GET THE DEFUALT SOLICITATION NOTE
//** FROM THE CONTROL FILE (CGW0KA)
*******************************************************************
FUNCTION DEFAULTNOTE()
LOCAL SVSEL := SELECT(), RETNOTE := ' ', RETPOS := 0
DBOPEN('CONTROL')
IF FIELDPOS('INVNOTES') > 0
RETNOTE := CONTROL->INVNOTES
ENDIF
IF FIELDPOS('INVNOTEPOS') > 0
RETPOS := CONTROL->INVNOTEPOS
ENDIF
CLOSE CONTROL
SELECT(SVSEL)
RETURN {RETNOTE, RETPOS}
*******************************************************************
//** P3N - 1/15/99
//** THIS IS A POSTPROC FOR SCREEN 21350 - SELECTIVE SHIPPING
*******************************************************************
FUNCTION EDT_TMP_OST()
LOCAL SVREC := USERFILE2->(RECNO())
LOCAL RETVAL := .T.
USERFILE2->(DBGOTOP())
DO WHILE USERFILE2->(!EOF())
IF USERFILE2->(FIELDPOS('SHIP_DATE') ) > 0 //** P3N - 01/15/02
IF DUPOSTDATE(USERFILE2->SHIP_DATE, 'SHIP')
ERR_BOX('** Can NOT have the Same SHIP date on TWO shipment transactions! **')
RETVAL := .F.
EXIT
ENDIF
ELSEIF USERFILE2->(FIELDPOS('COMPL_DATE') ) > 0 //** P3N - 01/15/02
IF DUPOSTDATE(USERFILE2->COMPL_DATE, 'COMPL')
ERR_BOX('** Can NOT have the Same COMPLETION date on TWO production Transactions! **')
RETVAL := .F.
EXIT
ENDIF
ENDIF //** P3N - 01/15/02
USERFILE2->(DBSKIP(+1))
ENDDO
USERFILE2->(DBGOTO(SVREC))
RETURN RETVAL
*******************************************************************
//** P3N - 1/15/99
//** THIS FUNCTION WILL ENSURE THERE ARE NO DUPLICATE ORD_SHIP TRANS.
*******************************************************************
FUNCTION DUPOSTDATE(CHKDATE, WHATDATE)
LOCAL SVREC := USERFILE2->(RECNO())
LOCAL RETVAL := .F. , CNTR := 0
USERFILE2->(DBGOTOP())
DO WHILE USERFILE2->(!EOF())
IF WHATDATE == 'SHIP' //** P3N - 01/15/02
IF USERFILE2->SHIP_DATE == CHKDATE
CNTR := CNTR + 1
ENDIF
ELSEIF WHATDATE == 'COMPL' //** P3N - 01/15/02
IF USERFILE2->COMPL_DATE == CHKDATE
CNTR := CNTR + 1
ENDIF
ENDIF
USERFILE2->(DBSKIP(+1))
ENDDO
USERFILE2->(DBGOTO(SVREC))
IF CNTR > 1
RETVAL := .T.
ENDIF
RETURN RETVAL
*****************************************************************
* THIS FUNCTION IS INITIATED FROM THE IMPORT CUST VALID_FUNC FOR*
* THE FIELD PRNT_ID IN THE CGW0CS DATABASE. *
*****************************************************************
FUNCTION VALID_CS_PRNT_ID() //** P3N - 4/07/99
LOCAL WKFLD := PRNT_ID, RETVAL := .F.
IF WKFLD$' YNS'
RETVAL := .T.
ELSEIF AT('?',WKFLD) > 0
ERR_BOX(' Valid Print ID(PID) values:', ;
' " " - Do NOT Print Extra(line) Description on Production', ;
' "N" - Do NOT Print Extra(line) Description on Production', ;
' "Y" - Print Extra(line) Description on Production Glass/Screen', ;
' "S" - Print Column Format on Production Storm (ie: C200007)')
ELSE
ERR_BOX('** Invalid Print ID (PID) - "'+ WKFLD + '" **', ;
' ','Valid Values Are: " ", "Y", "N" or "S" ', ;
' ','Key a "?" for more information. ')
ENDIF
RETURN RETVAL