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

5578 lines
226 KiB
Plaintext

#INCLUDE 'CGWINCLD.PRG'
//#INCLUDE 'FIVEWIN.CH'
//#INCLUDE 'REPORT.CH'
//#INCLUDE 'FIVEWIN.CH'
// #include "report.ch"
#DEFINE SW_SHOW 5
* MIKE LEWIS - PRINT ORDERS - CGWPRINT 02/01/94
*******************************************************************
PROCEDURE ALL_ORDPR(OPTION, TITLE, ACTION)
DBOPEN("CONTROL")
PRIVATE MD_ALLPRNT := D_ALLPRNT
PRIVATE MP_ALLPRNT := P_ALLPRNT
PRIVATE MI_ALLPRNT := I_ALLPRNT
PRIVATE MO_ALLPRNT := O_ALLPRNT
PRIVATE MPO_ALLPRNT := PO_ALLPRNT
PRIVATE MPB_ALLPRNT := PB_ALLPRNT
PRIVATE MPC_ALLPRNT := PC_ALLPRNT
PRIVATE MGR_ALLPRNT := GR_ALLPRNT
PRIVATE MBO_ALLPRNT := BO_ALLPRNT //** P3N - 4/30/98
PRIVATE _WHEREORD := '1'
PRIVATE MPRTBYINIT := ' ' //** P3N - 01/07/02
IF CONTROL->(FIELDPOS( 'ALLPRTINIT' ) ) > 0 //** P3N - 01/07/02
MPRTBYINIT := CONTROL->ALLPRTINIT //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
USE
ORD_PRINT(OPTION, TITLE, ACTION)
RETURN
*******************************************************************
PROCEDURE ORD_PRINT(OPTION, TITLE, ACTION, WHEREORD)
LOCAL SAVESEL := SELECT() //** P3N - 7/12/00
LOCAL SAVESCR, MTITLE, SVORD := 1, M1, M2, M3, OPT, MARR := {}
PRIVATE ORD_PARMS, GL_ARR, GL_OVR, GLALLOC_OVR := .F.
PRIVATE PRNTSOURCE := ACTION, MCUST_ID, MUSER_ID, OUT_ARR
//** ADDRESS LINDS DELIVERY TICKET PRINT ANOMALY //** P3N - 7/12/00
IF SELECT(CONTROL) = 0 //** P3N - 7/12/00
DBOPEN('CONTROL') //** P3N - 7/12/00
ENDIF //** P3N - 7/12/00
MLMAR := SPACE(LMAR) //** P3N - 7/12/00
MTMAR := TMAR //** P3N - 7/12/00
MBODY_LEN := BODY_LEN //** P3N - 7/12/00
MHEAD_LEN := HEAD_LEN //** P3N - 7/12/00
MSING_SHEET := UPPER(SING_SHEET) //** P3N - 7/12/00
CLOSE CONTROL //** P3N - 7/12/00
SELECT(SAVESEL) //** P3N - 7/12/00
IF !EMPTY(WHEREORD) //SELECTIVE PRINT FROM THE MENU SYSTEM(FUNC-OPEN2100)
_WHEREORD := WHEREORD
ENDIF
IF _WHEREORD = '2' // SECOND TIME THRU - END RECURSIVE CALLS
_WHEREORD := '1' // RESET TO be first time thru
RETURN .T.
ENDIF
IF LASTKEY() == 27 // ABORT ORDER ENTRY - PRINT MENU
RETURN
ENDIF
***************************************************************
* THIS IS THE MENU AT THE END OF ORDER ENTRY PROCESS
* DETERMINE WHAT COPY OF THE ORDER TO PRINT
***************************************************************
IF TITLE = NIL
IF CUR_MAST = 'QUOTE'
TITLE = 'PRINT Quotes'
ELSE
TITLE = 'PRINT Orders'
ENDIF
ENDIF
CLS
IF ACTION == 'OE' // ACTION OE = FROM ORDER ENTRY
TITLE := TITLE + ' ' + ALLTRIM( (CUR_MAST)->ORDER_NUM)
SAYTITLE(TITLE, 'PR020')
MORDER_NUM := (CUR_MAST)->ORDER_NUM
ORD_PROCESS(MORDER_NUM)
ELSE // MAIN MENU
DBOPEN(CUR_OL)
DBOPEN(CUR_MISC)
DBOPEN('MISC_ITEMS',,,{1})
ORD_PARMS := DBOPEN(CUR_MAST)
SAYTITLE(TITLE, 'PR020')
@ 2,0 CLEAR
SAVESCR := SAVESCREEN()
// INDIVIDUALLY SELECTED FROM GET_KEY
IF ACTION = 'MM'
DO WHILE .T.
RESTSCREEN(,,,,SAVESCR)
MORDER_NUM := GET_KEY(ORD_PARMS)
IF EMPTY(MORDER_NUM)
SELECT(CUR_OL)
USE
RETURN
ENDIF
MTITLE := TITLE + ' ' + ALLTRIM( (CUR_MAST)->ORDER_NUM)
SAYTITLE(MTITLE, 'PR020')
IF !NEED_CALC$'N'
ERR_BOX(' *** THIS ORDER MUST BE RECALCULATED ***', ;
' Because SOMETHING HAS CHANGED.',;
' Go to the ORDER ENTRY SCREEN and ',;
' SAVE THE ORDER AGAIN (F10 key)')
LOOP
ENDIF
MCUST_ID = CUST_ID
MUSER_ID = USER_ID
ORD_PROCESS(MORDER_NUM)
ENDDO
ELSE
// PRINT ALL ORDERS UNPRINTED
MTITLE := TITLE + ' - ALL UNPRINTED'
SAYTITLE(MTITLE, 'PR020')
??CHR(7)
IF MPRTBYINIT == 'Y' //** P3N - 01/07/02
OPT := PICKLIST({'ALL Unprinted', 'All Unprinted by User('+TRIM(M->USER)+')'}, 13, 25, ' Print Unprinted Orders' )
IF LASTKEY() = 27 //** P3N - 01/07/02
ELSE //** P3N - 01/07/02
IF OPT = 1 //** P3N - 01/07/02
MPRTBYINIT := '' //** P3N - 01/07/02
M1 := 'About to Print ALL Unprinted Orders' //** P3N - 01/07/02
M2 := 'Do You Want to Continue?' //** P3N - 01/07/02
M3 := '' //** P3N - 01/07/02
ELSEIF OPT = 2 //** P3N - 01/07/02
M1 := 'About to Print ALL Unprinted Orders' //** P3N - 01/07/02
M2 := 'For User - '+ M->USER //** P3N - 01/07/02
M3 := 'Do You Want to Continue?' //** P3N - 01/07/02
MTITLE := MTITLE + ' for - '+M->USER //** P3N - 01/07/02
SAYTITLE(MTITLE, 'PR020') //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
IF PROMPT_BOX(M1, M2, M3) //** P3N - 01/07/02
MORDER_NUM := NIL //** P3N - 01/07/02
MCUST_ID = NIL //** P3N - 01/07/02
MUSER_ID = M->USER //** P3N - 01/07/02
ORD_PROCESS(MORDER_NUM) //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
ELSE //** P3N - 01/07/02
IF PROMPT_BOX('About to Print ALL Unprinted Orders' , ;
'Do You Want to Continue?', ' ' )
MORDER_NUM := NIL
MCUST_ID = NIL
MUSER_ID = NIL
ORD_PROCESS(MORDER_NUM)
ENDIF
ENDIF //** P3N - 01/07/02
ENDIF
ENDIF
RETURN //** P3N - 3/7/00
***************************************************************
** PRINT menu
***************************************************************
FUNCTION ORD_PROCESS(MORDER_NUM)
LOCAL SAVESCR := SAVESCREEN(),CALL_MENU, SVCOLOR, WHATHOTKEY := {' ', ' '}
//** P3N - 3/8/00
IF SELECT( CUR_MAST ) > 0 //** AT PRINT ORDER TIME
SVORD := (CUR_MAST)->(DONSETORD(1)) //** ENSURE YOU ARE ON THE
ENDIF //** ORDER_NUM ( INDEX ORDER1 )
//** P3N - 3/8/00
DBOPEN('ALTSHIPADR') //** P3N - 11/13/98
IF CUR_MAST = 'QUOTE'
CALL_MENU := 'ORDERS022'
WHATHOTKEY:= {'F7 - Quote Entry', 'F12- Invoice Msg'}
ELSE
//** IF EMPTY( (CUR_MAST)->ORDER_ORG ) //** P3N - 10/21/99
IF EMPTY( (CUR_MAST)->ORDER_ORG ) .OR. EMPTY(MORDER_NUM) //** P3N - 10/21/99
CALL_MENU := 'ORDERS020'
ELSE
CALL_MENU := 'ORDERS024'
ENDIF
WHATHOTKEY:= {'F7 - Order Entry', 'F12- Invoice Msg'}
ENDIF
@ 2,0 CLEAR
IF MORDER_NUM <> NIL
OUT_ARR := BLD_ORDER(MORDER_NUM)
ENDIF
IF EMPTY(OUT_ARR) .AND. MORDER_NUM <> NIL
@ 2,0 CLEAR
ERR_BOX('NO Line Items for Order - ' + ALLTRIM(MORDER_NUM))
ELSE
SVCOLOR := SETCOLOR(HREV)
@ 0,0 SAY WHATHOTKEY[1] // Order or Quote entry?????
@ 1,0 SAY WHATHOTKEY[2] // Invoice Solicitation msg. entry?????
SETCOLOR(SVCOLOR)
SETKEY( -6, {||CHG_REV_HOTKEY( )} ) //ORDER CHG/REV
SETKEY( -41,{||EDIT_INVNOTES( )} ) //EDIT INVOICE/SOLICITATION MSG
DO WHILE .T.
@ 2,0 CLEAR
CLEAR TYPEAHEAD
CALLMENU(CALL_MENU) //DISPLAY ORDER/QUOTE PRINT MENU-MENU SYSTEM
IF LASTKEY() = 27
EXIT
ENDIF
ENDDO
SETKEY( -6 , NIL)
SETKEY( -41, NIL)
ENDIF
CLOSE ALTSHIPADR //** P3N - 11/13/98
RETURN
********************************************************************
********************************************************************
********************************************************************
FUNCTION PRNT_ORDER(OPTION, TITLE, WHCHORDER)
LOCAL XLAST, LASTDATEX, LASTDATE, SEEKKEY, LASTONEPRNT, PARR,CHOICE
LOCAL OUTMODE := 'BROWSE', CHG_WHAT, CMD, WORKTXT, GL_INBAL
LOCAL ACTION_CODE := GETAVAR('ACTION_CODE')
LOCAL SV_SCREEN, ITEMIZE, OPT, SCRNUM, P1, P2, P3, SVSCRN
LOCAL COD_CNTR := 0, PRINT_ORDER := .T., PRTORDER := .T.
LOCAL PRTCNTR := 0 //** P3N - 01/07/02
LOCAL PRT_COD_ONLY := .F., DEL_COD := 0, ESCKEY := .F. //** P3N - 7/20/98
LOCAL MPORT
DBOPEN('ORD_SHIP') //** P3N - 5/13/98
PRIVATE BKOSCRNS := 0 //** P3N - 8/12/98 (HAPPY B-DAY JEFF)
IF MORDER_NUM = NIL // PRINT ALL UNPRINTED ORDERS
SELECT (CUR_MAST)
DO CASE
CASE WHCHORDER = 'PROD'
SEEKKEY := MP_ALLPRNT
XLAST := 'PDATE_LAST'
CASE WHCHORDER = 'DEL'
DEL_COD := PICKLIST({'ALL Tickets', 'COD Tickets'}, 13, 55, ' Print Delivery' )
IF DEL_COD == 1 //** P3N - 7/20/98
PRT_COD_ONLY := .F. //** P3N - 7/20/98
ELSEIF DEL_COD == 2 //** P3N - 7/20/98
PRT_COD_ONLY := .T. //** P3N - 7/20/98
ELSE
ESCKEY := .T.
ENDIF //** P3N - 7/20/98
SEEKKEY := MD_ALLPRNT
XLAST := 'DDATE_LAST'
IF ESCKEY
ELSE
P1 := '*** Are you sure you want to Print Delivery tickets? *** '
P2 := ' '
P3 := ' '
IF PROMPT_BOX(P1,P2,P3,1) //Default to YES - print
ELSE
ESCKEY := .T.
ENDIF
ENDIF
CASE WHCHORDER = 'INV'
SEEKKEY := MI_ALLPRNT
XLAST := 'IDATE_LAST'
CASE WHCHORDER = 'OD'
SEEKKEY := MO_ALLPRNT
XLAST := 'ODATE_LAST'
CASE WHCHORDER = 'PO'
SEEKKEY := MPO_ALLPRNT
XLAST := 'XDATE_LAST'
CASE WHCHORDER = 'PREBILL'
SEEKKEY := MPB_ALLPRNT
XLAST := 'BDATE_LAST'
CASE WHCHORDER = 'PRECOST'
SEEKKEY := MPC_ALLPRNT
XLAST := 'CDATE_LAST'
CASE WHCHORDER = 'GOLDEN'
SEEKKEY := MGR_ALLPRNT
XLAST := 'GDATE_LAST'
CASE WHCHORDER = 'BACKORD' //** P3N - 4/30/98
SEEKKEY := MBO_ALLPRNT
XLAST := 'BODATE_LST'
ENDCASE
SET SOFTSEEK ON
SEEK SEEKKEY
SET SOFTSEEK OFF
IF (CUR_MAST)->ORDER_NUM = SEEKKEY // THE "LAST" ORDER PRINTED
SKIP 1 // SO GO TO THE NEXT ONE
ENDIF
IF EOF()
IF ESCKEY
ELSE
ERR_BOX('** NO DOCUMENTS TO PRINT ** ')
ENDIF
ELSEIF ESCKEY //** P3N - 7/20/98 ESCAPE ON DELIVERY PRINT
ELSE
LASTDATEX := MAKE_BLOCK( XLAST )
PRTCNTR := 0 //** P3N - 01/07/02
DO WHILE !EOF()
PRTORDER := .T. //** P3N - 01/07/02
IF MPRTBYINIT == 'Y' //** P3N - 01/07/02
IF ALLTRIM((CUR_MAST)->USER_ID) == ALLTRIM(M->USER) //** P3N - 01/07/02
ELSE //** P3N - 01/07/02
PRTORDER := .F. //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
LASTDATE := EVAL(LASTDATEX)
//** IF EMPTY(LASTDATE)
IF EMPTY(LASTDATE) .AND. PRTORDER //** P3N - 01/07/02
PRTCNTR := PRTCNTR + 1 //** P3N - 01/07/02
MCUST_ID := CUST_ID
MUSER_ID := USER_ID
MORDER_NUM := ORDER_NUM
PRINT_ORDER := .T. //** P3N - 4/14/98
IF (CUR_MAST)->TERMS = '98' // CREDIT MEMO //** P3N - 4/14/98
//** P3N 4/14/98 DO NOT PRINT CREDIT MEMOS FOR PROD OR IC!
PRINT_ORDER := PRT_ORDER(WHCHORDER) //** P3N - 4/14/98
ENDIF
IF PRINT_ORDER //** P3N - 4/14/98
IF WHCHORDER = 'PREBILL'
CUST_MAST->(DBSEEK(MCUST_ID))
IF CUST_MAST->PRE_BILL$'Y'
OUT_ARR := BLD_ORDER(MORDER_NUM)
MPORT := PRNT_THIS_ORDER( OPTION, TITLE, WHCHORDER, 1)
ENDIF
ELSEIF PRT_COD_ONLY //** P3N - 7/20/98
IF (CUR_MAST)->TERMS = '30' // C.O.D. //** P3N - 7/20/98
OUT_ARR := BLD_ORDER(MORDER_NUM) //** P3N - 7/20/98
MPORT := PRNT_THIS_ORDER( OPTION, TITLE, WHCHORDER, 1)
COD_CNTR := COD_CNTR + 1
ENDIF
ELSEIF WHCHORDER == 'DEL' //** P3N - 7/20/98
IF EMPTY((CUR_MAST)->DDATE_LAST)
OUT_ARR := BLD_ORDER(MORDER_NUM)
MPORT := PRNT_THIS_ORDER( OPTION, TITLE, WHCHORDER, 1)
ENDIF
ELSE
OUT_ARR := BLD_ORDER(MORDER_NUM)
MPORT := PRNT_THIS_ORDER( OPTION, TITLE, WHCHORDER, 1)
ENDIF
ENDIF
ENDIF
SELECT (CUR_MAST)
SKIP 1
ENDDO
GOTO BOTTOM
IF MPRTBYINIT == 'Y' //** P3N - 01/07/02
IF EMPTY(PRTCNTR) //** P3N - 01/07/02
ERR_BOX('** NO DOCUMENTS TO PRINT ** ') //** P3N - 01/07/02
ENDIF //** P3N - 01/07/02
//** DO NOT UPDATE THE LAST ORDER PRINTED WHEN PRINTING BY INITIALS
ELSE //** P3N - 01/07/02
DBOPEN('CONTROL')
REC_LOCK(1)
DO CASE
CASE WHCHORDER = 'PROD'
REPLACE P_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MP_ALLPRNT := P_ALLPRNT
CASE WHCHORDER = 'DEL'
IF PRT_COD_ONLY //** P3N - 7/20/98
IF EMPTY(COD_CNTR) //** P3N - 7/20/98
ERR_BOX('** NO DOCUMENTS TO PRINT ** ') //** P3N - 7/20/98
ENDIF //** P3N - 7/20/98
ELSE //** P3N - 7/20/98
REPLACE D_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MD_ALLPRNT := D_ALLPRNT
ENDIF
CASE WHCHORDER = 'INV'
REPLACE I_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MI_ALLPRNT := I_ALLPRNT
CASE WHCHORDER = 'OD'
REPLACE O_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MO_ALLPRNT := O_ALLPRNT
CASE WHCHORDER = 'PO'
REPLACE PO_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MPO_ALLPRNT := PO_ALLPRNT
CASE WHCHORDER = 'PREBILL'
REPLACE PB_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MPB_ALLPRNT := PB_ALLPRNT
CASE WHCHORDER = 'PRECOST'
REPLACE PC_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MPC_ALLPRNT := PC_ALLPRNT
CASE WHCHORDER = 'GOLDEN'
REPLACE GR_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MGR_ALLPRNT := GR_ALLPRNT
CASE WHCHORDER = 'BACKORD' //** P3N - 4/30/98
REPLACE BO_ALLPRNT WITH (CUR_MAST)->ORDER_NUM
MBO_ALLPRNT := BO_ALLPRNT
ENDCASE
ENDIF //** P3N - 01/07/02
ENDIF
MCUST_ID = NIL
MUSER_ID = NIL
MORDER_NUM := NIL
ELSE // PRINT SELECTED ORDERS
GLALLOC_OVR := .F. //USE THE GL ARRAY ALLOCATIONS - NOT THE OVERRIDES!
// INVOICE PRINTING????
IF WHCHORDER == 'INV' .OR. WHCHORDER = 'PREBILL' .OR. WHCHORDER = 'PRECOST'
ITEMIZE := PICKLIST({'Itemize Amounts', 'NO Amount Itemization'}, 16, 55, '' )
IF LASTKEY() = 27
RETURN
ENDIF
IF EMPTY(GL_OVR)
//** NO GL OVERRIDES EXIST FOR THIS ORDER - USE GL_ARR FOR ALLOC.
ELSE
P1 := '*** GL Allocation Overrides exist for this order! *** '
P2 := ' YES - Use GL Allocation Overrides! '
P3 := ' NO - RE-ALLOCATE GL and DELETE GL Overrides!'
IF PROMPT_BOX(P1,P2,P3, 1) //Default to YES - Use GL OVERRIDES!
GLALLOC_OVR := .T. //USE THE GL OVERRIDES FOR THIS ORDER
ELSE
IF LASTKEY() = 27
// ABORT THE USE OF THE EITHER ALLOCATION
RETURN
ELSE
SVSCRN := SAVESCREEN()
OUT_ARR := BLD_ORDER(MORDER_NUM) // EXEC. TO REALLOC GL ARR
RESTSCREEN(,,,,SVSCRN)
GLALLOC_OVR := .F. //USE THE GL ARRAY ALLOCATIONS
DEL_GLALLOC(MORDER_NUM)
ENDIF
ENDIF
ENDIF
ELSE
ITEMIZE := 1
ENDIF
SV_SCREEN := SAVESCREEN()
DO WHILE .T.
// ONLY THIS GUY GETS THE PREVIEW / CHANGE OPTION
IF CUR_MAST == 'ORD_MAST'
IF _OC_CAPABLE
WORKTXT := 'CHANGE Order'
ELSE
WORKTXT := 'REVIEW Order Screens'
ENDIF
PARR = {'BROWSE Order Form', WORKTXT , 'PRINT Order'}
CHG_WHAT := 'ORDER'
SCRNUM := '2120' // ORDER PROCESSING SCREEN
ELSE
IF _OC_CAPABLE
WORKTXT := 'CHANGE Quote'
ELSE
WORKTXT := 'REVIEW Quote Screens'
ENDIF
PARR = {'BROWSE Quote Form', WORKTXT , 'PRINT Quote'}
CHG_WHAT := 'QUOTE'
SCRNUM := '2220' // QUOTE PROCESSING SCREEN
ENDIF
IF WHCHORDER == 'INV' .OR. WHCHORDER = 'PREBILL' .OR. WHCHORDER = 'PRECOST'
AADD(PARR, 'OVERRIDE GL Alloc.')
ENDIF
CHOICE := PICKLIST(PARR,18,55) //Select what ACTION to take?????
IF LASTKEY() == 27 .OR. CHOICE == 0
EXIT
ELSEIF CHOICE == 1 //BROWSE THE ORDER
OUTMODE := 'BROWSE'
ELSEIF CHOICE == 2 //CHANGE THE ORDER
IF _OC_CAPABLE .AND. ACTION_CODE = 'ADD'
//** OPT := 2 //** P3N - 02/02/07
//** OPT := 1 //** P3N - 02/02/07
//** Changed back - per Darlene
OPT := 1 //** P3N - 02/20/07
CMD := 'ADD'
ELSE
OPT := 3
CMD := 'REV'
ENDIF
IF CUR_MAST = 'QUOTE_MAST'
ACD_ORDERS (OPT,'CHANGE Quote',{ CUR_MAST, CUR_OL, .T., 2, CMD ,,,,,, .F.,,SCRNUM,.F.,, }, '2')
ELSE
ACD_ORDERS (OPT,'CHANGE Sales Order',{ CUR_MAST, CUR_OL, .T., 2, CMD ,,,,,, .F.,,SCRNUM,.F.,, }, '2')
ENDIF
SVSCRN := SAVESCREEN()
OUT_ARR := BLD_ORDER(MORDER_NUM) // EXEC. TO REBUILD OUT_ARR
//AFTER UPDATES!!
RESTSCREEN(,,,,SVSCRN)
LOOP
ELSEIF CHOICE == 3 //PRINT THE ORDER
IF WHCHORDER = 'INV' .OR. WHCHORDER = 'PRE'
// ONLY CHECK FOR GL OVERRIDES FOR INVOICE OR PREBILL/PRECOST
IF AT('_ARCH', WHCHORDER) > 0 // ARCHIVE COPIES - DO NOT UPDATE
// BYPASS GL OVERRIDE EDIT FOR ARCHIVED INVOICE OR PREBILL/PRECOST
ELSE
IF GLALLOC_OVR //USE THE GL OVERRIDES FOR THIS ORDER
GL_INBAL := BAL_GLALLOC(MORDER_NUM, GL_OVR)
ELSE
GL_INBAL := BAL_GLALLOC(MORDER_NUM, GL_ARR)
DEL_GLALLOC(MORDER_NUM)
ENDIF
IF GL_INBAL
//THE ORDER AND GL ARE IN BALANCE ALLOW INVOICE PRINT TO OCCUR!!!
ELSE
RETURN // RETURN DO NOT ALLOW PRINT WHEN OUT OF BALANCE!!!
ENDIF
ENDIF
ENDIF
IF WHCHORDER == 'INV' //** CHECK SHIPPING AT INVOICE PRINT TIME!
//** P3N - 11/24/98
IF CUR_MAST = 'ORD_MAST' //** ONLY CHECK SHIPPING FOR ORDERS
IF EMPTY((CUR_MAST)->SHIP_DATE)
CLEAR TYPEAHEAD //** P3N - 12/22/98
ERR_BOX('**** This Order has NOT been Shipped! ****', ;
'CONTACT SUPERVISOR TO PRINT THIS INVOICE!!')
IF LASTKEY() <> 126 //SHIFT + "~" //** P3N - 12/22/98
LOOP //** P3N - 12/22/98
ENDIF //** P3N - 12/22/98
ENDIF
IF ORD_SHIP->(DBSEEK(MORDER_NUM))
// ORDER ALREADY SHIPPED DO NOT SHIP @ INV TIME **P3N 5/14/98
ELSE
SHIP_TOTQTY(,,CUR_MAST ,.F.)
SVSCRN := SAVESCREEN()
OUT_ARR := BLD_ORDER(MORDER_NUM) // EXEC. TO APPLY UPDATES FROM ORDER CONTROL
RESTSCREEN(,,,,SVSCRN)
ENDIF
ENDIF
ENDIF
OUTMODE := 'PRINT'
ELSEIF CHOICE == 4 //UPDATE \ OVERRIDE GL ALLOCATIONS
GL_OVR := UPD_GLALLOC(MORDER_NUM, GL_ARR)
IF LASTKEY() = 27
IF EMPTY(GL_OVR)
GLALLOC_OVR := .F. //USE THE GL_ARR VALUES AT PRINT TIME!!!
ELSE
GLALLOC_OVR := .T. //USE THE OVERRIDE VALUES AT PRINT TIME!!!
ENDIF
ELSE
GLALLOC_OVR := .T. //USE THE OVERRIDE VALUES AT PRINT TIME!!!
ENDIF
LOOP
ENDIF
MPORT := PRNT_THIS_ORDER( OPTION, TITLE, WHCHORDER, ITEMIZE , OUTMODE)
****IF WHCHORDER == 'INV' //** P3N - 6/9/98 IF BO NOT PRINTED
**** //** FORCE BACKORDER AFTER INVOICE
**** IF OUTMODE == 'PRINT' //** WHEN PRINTING
**** IF (CUR_MAST)->(FIELDPOS('BODATE_FST')) > 0
**** IF EMPTY((CUR_MAST)->BODATE_FST) .AND. ;
**** EMPTY((CUR_MAST)->BODATE_LST)
**** //** TURNED OFF UNTIL PRINTER AVAILABLE - PER ELLEN 6/11/98 P3N
**********PRNT_THIS_ORDER( OPTION, TITLE, 'BACKORD', ITEMIZE , OUTMODE)
**** ENDIF
**** ENDIF
**** ENDIF
****ENDIF
RESTSCREEN(,,,,SV_SCREEN)
ENDDO
ENDIF
RETURN MPORT
**************************************************************
* P3N - 4/14/98
* IF THE ORDER IS A PRODUCTION OR INTERCOMPANY ORDER
* DO NOT PRINT
**************************************************************
FUNCTION PRT_ORDER(WHCHORDER)
LOCAL RETVAL := .T.
IF WHCHORDER = 'PROD' .OR. WHCHORDER = 'PO' .OR. ;
WHCHORDER = 'GOLDEN'
RETVAL := .F.
ENDIF
RETURN RETVAL
**************************************************************
**************************************************************
**************************************************************
FUNCTION PRNT_THIS_ORDER(OPTION, TITLE, WHCHORDER, ITEMPARM, OUTMODE)
LOCAL MPORT
LOCAL OL_ARR := {}, I, SAVESEL := SELECT()
LOCAL SS2, CORR, CUSTNAME:='', OUTFILE
LOCAL MORDER_NUM := (CUR_MAST)->ORDER_NUM
LOCAL M1, M2, M3, MSG, PARR, CHOICE, PROG, QUOTE_PROCESS := .F.
LOCAL PIM1 := 'Order '+ (CUR_MAST)->ORDER_NUM +' is NOT entirely SHIPPED! Do you want to: '
LOCAL PIM2 := ' NO - Invoice Entire Order? - (ALL Items will be Billed.)'
LOCAL PIM3 := ' YES - PARTIAL Invoice? - (ONLY Shipped items will be Billed.)'
LOCAL MINVOICENUM, MPO_ARR := {}
LOCAL MSHIP_DATE, MIDATE_FST, PROD_CODE, ELM, PRTBOCOPY := '1'
LOCAL BKOARR, ABKOSCR //** P3N - 6/30/98
LOCAL IPOARR //** P3N - 7/8/98
LOCAL TOLKEY := '', SCRNINFO := {}, SVDESC //** P3N - 9/16/98
LOCAL WKORDQTY := 0, WKSHPDQTY := 0 //** P3N -11/4/98
LOCAL ENTIRE_ORDSHIPPED := .F. //** P3N - 11/13/98
LOCAL PARTIAL_INVOICE := .F. //** P3N - 11/13/98
LOCAL REPRINT_INVOICE := .F. //** P3N - 12/3/98
LOCAL INV_ARR := {} //** P3N - 12/7/98
STATIC BKOASCR := {} //** P3N - 8/25/98
PRIVATE ITEMIZE := ITEMPARM, SAVE_DESC, SAVE_TYPE, SAVE_DESC1, SAVE_BKOPROD
OUTFILE := M->_THISUSER_TEMP
IF OUTMODE = NIL
OUTMODE = 'PRINT' // VS. 'REVU'
ENDIF
IF CUR_MAST == 'ORD_MAST'
MSG := 'Order # ' + ALLTRIM(MORDER_NUM)
ELSEIF CUR_MAST == 'QUOTE_MAST'
MSG := 'Quote # ' + ALLTRIM(MORDER_NUM)
QUOTE_PROCESS := .T. //** P3N - 4/13/98
ENDIF
IF WHCHORDER == 'INV' // INVOICE COPIES
M1 := ' INVOICE FOR ' + MSG + ' Was Printed on ' + DTOC((CUR_MAST)->IDATE_LAST) + ' ' + (CUR_MAST)->ITIME_LAST
M2 := ' It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->IDATE_FST) + ' ' + (CUR_MAST)->ITIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'PREBILL' // PRODUCTION COPIES
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->BDATE_FST) + ' ' + (CUR_MAST)->BTIME_LAST
M2 := ' '
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'PRECOST' // PRODUCTION COPIES
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->CDATE_FST) + ' ' + (CUR_MAST)->CTIME_LAST
M2 := ' '
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'GOLDEN' // PRODUCTION COPIES
M1 := 'Golden Rod for ' + MORDER_NUM + ' Was Printed on ' + DTOC((CUR_MAST)->GDATE_FST) + ' ' + (CUR_MAST)->GTIME_LAST
M2 := ' '
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'PROD' // PRODUCTION COPIES
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->PDATE_LAST) + ' ' + (CUR_MAST)->PTIME_LAST
M2 := 'It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->PDATE_FST) + ' ' + (CUR_MAST)->PTIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'DEL' // PRODUCTION COPIES
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->DDATE_LAST) + ' ' + (CUR_MAST)->DTIME_LAST
M2 := 'It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->DDATE_FST) + ' ' + (CUR_MAST)->DTIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'OD' // ORDER DESK COPIES
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->ODATE_LAST) + ' ' + (CUR_MAST)->OTIME_LAST
M2 := 'It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->ODATE_FST) + ' ' + (CUR_MAST)->OTIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'PO' // PURCHASE ORDERS
M1 := MSG + ' Was Printed on ' + DTOC((CUR_MAST)->XDATE_LAST) + ' ' + (CUR_MAST)->XTIME_LAST
M2 := 'It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->XDATE_FST) + ' ' + (CUR_MAST)->XTIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ELSEIF WHCHORDER == 'BACKORD' // BACK ORDERS - **P3N - 4/30/98
M1 := 'BACK' + MSG + ' Was Printed on ' + DTOC((CUR_MAST)->BODATE_LST) + ' ' + (CUR_MAST)->BOTIME_LST
M2 := 'It was ORIGINALLY PRINTED on ' + DTOC((CUR_MAST)->BODATE_FST) + ' ' + (CUR_MAST)->BOTIME_FST
M3 := ' CONTACT SUPERVISOR TO REPRINT THIS ITEM '
ENDIF
CLS
SAYTITLE(TITLE, 'PR010')
IF OUTMODE = 'PRINT'
IF WHCHORDER == 'PROD'
IF !EMPTY((CUR_MAST)->PDATE_LAST) // PRODUCTION
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'INV' .OR. WHCHORDER = 'PREBILL' .OR. WHCHORDER = 'PRECOST'
IF !EMPTY((CUR_MAST)->IDATE_LAST) .AND. WHCHORDER = 'INV' // INVOICE
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
IF !EMPTY((CUR_MAST)->BDATE_FST) .AND. WHCHORDER = 'PREBILL' // INVOICE
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
IF !EMPTY((CUR_MAST)->CDATE_FST) .AND. WHCHORDER = 'PRECOST'
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'OD'
IF !EMPTY((CUR_MAST)->ODATE_LAST) // ORDER DESK
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'GOLDEN'
IF !EMPTY((CUR_MAST)->GDATE_LAST) // GOLDEN ROD
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'DEL'
IF !EMPTY((CUR_MAST)->DDATE_LAST) // DELIVERY COPY
CLEAR TYPEAHEAD
M3 := 'Delivery Tickets can NOT be REPRINTED - '
ERR_BOX(M1,M2, ' ',M3,'they MUST be TYPED to be recreated!')
IF MHOME_LOC_CODE = 'KC' //** P3N - 6/17/99
RETURN //** P3N - 6/2/99 DO NOT ALLOW THE DELIVERY
//** TICKET TO BE RE-PRINTED - PER ARNIE
ELSE //** P3N - 6/17/99
IF LASTKEY() <> 126 // "~" //** PER LAURA MAE @ PAWNEE
RETURN //** ALLOW DELIVERY TO BE
ENDIF //** REPRINTED
ENDIF //** P3N - 6/17/99
ENDIF
ELSEIF WHCHORDER == 'GOLDEN'
IF !EMPTY((CUR_MAST)->GDATE_LAST)
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'PO'
IF !EMPTY((CUR_MAST)->XDATE_LAST) // ORDER DESK
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ELSEIF WHCHORDER == 'BACKORD' //** P3N - 4/30/98
IF !EMPTY((CUR_MAST)->BODATE_LST) // BACKORDER
CLEAR TYPEAHEAD
ERR_BOX(M1,M2,M3)
IF LASTKEY() <> 126 // "~"
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
WAIT_BOX('*** Processing ' + MSG , ;
'*** Please Wait ****' )
IF PRNTSOURCE = 'OE' // END OF ORDER ENTRY ALREADY HAVE KEY
ELSE
SELECT(CUR_MAST)
MCUST_ID = CUST_ID
MUSER_ID = USER_ID
ENDIF
//** P3N - 11/13/98 CHECK FOR A PARTIAL INVOICE HERE
IF WHCHORDER = 'INV' .AND. CUR_MAST == 'ORD_MAST' //** P3N - 11/13/98
IF POSTED_ORDER(MORDER_NUM)
//** ORDER HAS BEEN POSTED - REPRINT INVOICE
REPRINT_INVOICE := .T.
ELSEIF ( EMPTY( (CUR_MAST)->IDATE_FST) .AND. EMPTY( (CUR_MAST)->ITIME_FST) ) ;
.OR. (CUR_MAST)->IDATE_FST >= CURDATE
IF (CUR_MAST)->IDATE_FST == CURDATE //** P3N - 12/9/98
REPRINT_INVOICE := .T. //** P3N - 12/9/98
ELSEIF ORDER_SHIPPED(OUT_ARR[2,1], MORDER_NUM, WHCHORDER) //** P3N - 12/7/98
ENTIRE_ORDSHIPPED := .T.
ELSE
PARTIAL_INVOICE := PROMPT_BOX(PIM1, PIM2, PIM3)
IF LASTKEY() == 27
//** USER REQUESTED TO ABORT THE INVOICE PROCESS
RETURN
ENDIF
ENDIF
ELSE
//** ORDER HAS BEEN PRINTED - REPRINT INVOICE
REPRINT_INVOICE := .T.
ENDIF
ENDIF
//** THIS LOGIC WILL ENSURE THAT ALL INVOICES CREATED PRIOR TO
//** THE PARTIAL INVOICE INSTALL WILL BE RECALLED AS IS - WITHOUT
//** ANY PARTIAL INVOICE LOGIC.
IF EMPTY((CUR_MAST)->IDATE_FST) //** P3N - 12/10/98
ELSEIF DTOC((CUR_MAST)->IDATE_FST) < '12/21/98' .AND. MHOME_LOC_CODE = 'KC' //** P3N - 12/10/98
PARTIAL_INVOICE := .F. //** P3N - 12/10/98
REPRINT_INVOICE := .F. //** P3N - 12/10/98
ELSEIF DTOC((CUR_MAST)->IDATE_FST) < '01/20/99' .AND. MHOME_LOC_CODE = 'IOLA' //** P3N - 1/20/99
PARTIAL_INVOICE := .F. //** P3N - 12/10/98
REPRINT_INVOICE := .F. //** P3N - 12/10/98
ELSEIF DTOC((CUR_MAST)->IDATE_FST) < '06/14/99' .AND. MHOME_LOC_CODE = 'LINDS' //** P3N - 1/20/99
PARTIAL_INVOICE := .F. //** P3N - 12/10/98
REPRINT_INVOICE := .F. //** P3N - 12/10/98
ELSEIF DTOC((CUR_MAST)->IDATE_FST) < '02/04/99' .AND. MHOME_LOC_CODE = 'PAWNEE' //** P3N - 1/20/99
PARTIAL_INVOICE := .F. //** P3N - 12/10/98
REPRINT_INVOICE := .F. //** P3N - 12/10/98
ENDIF
IF QUOTE_PROCESS //** P3N -12/7/98
//** P3N - 11/18/02 - USE THE ACTUAL SIZE ON THE QUOTES - PER LINDA LINDS
INV_ARR := ACLONE(OUT_ARR[1,8]) //** P3N - 11/18/02
ELSEIF WHCHORDER = 'INV' .OR. WHCHORDER = 'PREBILL' .OR. ;
WHCHORDER = 'PRECOST' .OR. DO_WE_PRT_AMT(WHCHORDER, ' ' )
//** FOR INVOICE / PREBILL / PRECOST
//** CALC ORDER TOTALS, AND ITEM DISCOUNTS - AND REBUILD OUT_ARR / GL_ARR
MISCP_PAINT(.T., PARTIAL_INVOICE, REPRINT_INVOICE, CUR_OL)
OUT_ARR := BLD_ORDER(MORDER_NUM, ,PARTIAL_INVOICE, REPRINT_INVOICE) //** P3N -12/7/98
INV_ARR := ACLONE(OUT_ARR[2,1]) //** P3N - 12/7/98
ENDIF
PRTBOCOPY := '1' //** P3N - 12/21/98
IF WHCHORDER = 'BACKORD' //** P3N - 12/21/98
OUT_ARR := BLD_ORDER(MORDER_NUM, ,PARTIAL_INVOICE, REPRINT_INVOICE) //** P3N -12/7/98
IF (CUR_MAST)->(FIELDPOS('BODATE_FST')) > 0 //** P3N - 12/21/98
IF EMPTY((CUR_MAST)->BODATE_FST) //** P3N - 12/21/98
//** FIRST TIME BO PRINTED - PRINT ALL BO COPIES
PRTBOCOPY := '1'
ELSE //** P3N - 12/21/98
PRTBOCOPY := PICKLIST({'1. ALL Backorders ', '2. Primary','3. Screen', '4. Storm'}, 4, 30, 'Select Backorder' )
IF LASTKEY() = 27 //** P3N - 12/21/98
PRTBOCOPY := '0' //** P3N - 12/21/98
ELSEIF PRTBOCOPY = 1 //** P3N - 12/21/98
PRTBOCOPY := '1' //** P3N - 12/21/98
ELSEIF PRTBOCOPY = 2 //** P3N - 12/21/98
PRTBOCOPY := '2' //** P3N - 12/21/98
ELSEIF PRTBOCOPY = 3 //** P3N - 12/21/98
PRTBOCOPY := '3' //** P3N - 12/21/98
ELSEIF PRTBOCOPY = 4 //** P3N - 12/21/98
PRTBOCOPY := '4' //** P3N - 12/21/98
ENDIF //** P3N - 12/21/98
ENDIF //** P3N - 12/21/98
ENDIF //** P3N - 12/21/98
ENDIF //** P3N - 12/21/98
//** P3N - 6/4/99 MOVED HERE FROM BELOW
IF OUTMODE == 'PRINT' //** IF PRINT TIME-CHECK FOR PARTIAL INVOICE?
IF WHCHORDER = 'INV' .AND. CUR_MAST == 'ORD_MAST' //** P3N - 6/4/99
IF PARTIAL_INVOICE //** P3N - 6/4/99
IF EMPTY(ORD_MAST->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
PARTIALINVOICE() //** CREATE A NEW INVOICE ONE TIME!
SHIP_REST(ORD_MAST->ORDER_NUM, 'SCREENS' ) //** SHIP ALL REMAINING ITEMS ON ORDER
ENDIF
ENDIF
ENDIF
ENDIF
// SETUP THE PRINTER INFO
SET_P_ON()
IF OUTMODE = 'PRINT' // Print the ORDER
PORTFLAG := .T.
ELSE // Browse the ORDER in a userfile
IF FILE(OUTFILE)
//PROG := 'DEL ' + OUTFILE
//CALL_OLAY(,,PROG, 0, '', '')
FERASE( OUTFILE )
ENDIF
SET PRINTER TO (OUTFILE)
PORTFLAG := .F.
ENDIF
IF WHCHORDER = 'INV' .OR. WHCHORDER = 'PREBILL' .OR. WHCHORDER = 'PRECOST'
IF QUOTE_PROCESS //** P3N - 4/13/98
MPORT := SET_PORT('_PORT_QUOTE', PORTFLAG, OUTFILE )
ELSEIF WHCHORDER = 'PREBILL' //** P3N - 4/13/98
MPORT := SET_PORT('_PORT_PREBILL', PORTFLAG, OUTFILE )
ELSE
MPORT := SET_PORT('_PORT_INVOICE', PORTFLAG, OUTFILE )
ENDIF
IF WHCHORDER = 'INV' .AND. CUR_MAST == 'ORD_MAST' //** P3N - 11/24/98
IF PARTIAL_INVOICE //** P3N - 11/24/98
PRNT_THE_ORDER('INV', INV_ARR, 'INV', 'ALL' , , .T., ;
PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE ) //** P3N -12/3/98
ELSE
PRNT_THE_ORDER('INV', INV_ARR, 'INV', 'ALL' , , .T., ;
PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE ) //** P3N -12/3/98
ENDIF
//** FOR LINDS PRINT THE PREBILL INVOICE WITH EXACT SIZE INFORMATION - PER LINDA - P3N 7/19/00
ELSEIF WHCHORDER == 'PREBILL' //** P3N - 7/19/00
IF MHOME_LOC_CODE = 'LINDS' //** P3N - 7/19/00
PRNT_THE_ORDER('INV', OUT_ARR[1,8], 'INV', 'ALL' , WHCHORDER, .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ELSE //** P3N - 7/19/00
PRNT_THE_ORDER('INV', OUT_ARR[2,1], 'INV', 'ALL' , WHCHORDER, .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF //** P3N - 7/19/00
ELSEIF QUOTE_PROCESS ; //** P3N -11/18/02
.AND. MHOME_LOC_CODE = 'LINDS' //** P3N -11/18/02
//** P3N - 11/18/02 - USE INV_ARR FOR QUOTES - SHOULD BE SET TO PROPER VALUE
//** P3N - 11/18/02 THIS WILL PRINT THE ACTUAL SIZE ON THE QUOTES - PER LINDA @ LINDS
PRNT_THE_ORDER('INV', INV_ARR, 'INV', 'ALL' , WHCHORDER, .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ELSE
PRNT_THE_ORDER('INV', OUT_ARR[2,1], 'INV', 'ALL' , WHCHORDER, .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
ELSEIF WHCHORDER = 'PROD' .AND. !EMPTY(OUT_ARR)
// IT IS A PRODUCTION REQUEST
MPORT := SET_PORT('_PORT_PROD', PORTFLAG, OUTFILE)
FOR I = 1 TO LEN(OUT_ARR[1])
DO CASE
CASE I = 2 // PRODUCTION FRAME MADE AT HOME LOCATION
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'FRAME', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE ) // TRUE FOR PRINT THE CUTTING SPECS
ENDIF
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'STDFRAME', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE ) // TRUE FOR PRINT THE CUTTING SPECS
ENDIF
CASE I = 3 // PRODUCTION SASH MADE AT HOME LOCATION
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'SASH', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
CASE I = 4 // PRODUCTION GLASS MADE AT HOME LOCATION
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'GLASS', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
CASE I = 5 // PRODUCTION SCREEN MADE AT HOME LOCATION
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'SCREEN', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
CASE I = 6 // PRODUCTION STORM MADE AT HOME LOCATION
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'STORM', MHOME_LOC_CODE, ,.T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE )
ENDIF
CASE I = 7 // EXPANDERS MADE AT HOME LOCATION (SEVENTH ELEMENT IN PROD ARRARY)
IF LEN(OUT_ARR[1,I]) > 0
PRNT_THE_ORDER('PROD', OUT_ARR[1,I], 'EXPANDER', MHOME_LOC_CODE, , .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
ENDCASE
NEXT
ELSEIF WHCHORDER = 'OD'
// ORDER DESK CONTROL COPY
MPORT := SET_PORT('_PORT_ORDER', PORTFLAG, OUTFILE)
// USE 2,1(INVOICE) FORMAT-NO ADDL PRODUCTS ON ORDER DESK COPY
// 8-21-95 - PRINT THE CONTROL COPY AND CALL IT A SPINDLE COPY FOR ALL
PRNT_THE_ORDER('OD', OUT_ARR[2,1], 'CTRL', MHOME_LOC_CODE, 'ORDERDESK', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE )
ELSEIF WHCHORDER = 'PO'
// PRINT INTERCOMPANY PO'S IF APPLICABLE
MPORT := SET_PORT('_PORT_IC', PORTFLAG, OUTFILE)
SAVESEL := SELECT()
IPOARR := {} //** P3N - 7/8/98
FOR I := 1 TO LEN(OUT_ARR[2,1]) //** P3N - 7/8/98
AADD(IPOARR, OUT_ARR[2,1,I]) //** P3N - 7/8/98
NEXT //** P3N - 7/8/98
FOR I := 1 TO LEN(OUT_ARR[1,10]) //** P3N - 7/8/98
IPO_PROD := OUT_ARR[1,10,I,10] //** P3N - 9/14/98
IPO_LINE := OUT_ARR[1,10,I,9] //** P3N - 9/14/98
IF ASCAN(IPOARR, {|X| X[10] + X[9] == IPO_PROD + IPO_LINE }) > 0
ELSE
AADD(IPOARR, OUT_ARR[1,10,I]) //** P3N - 7/8/98
ENDIF
NEXT //** P3N - 7/8/98
SELECT MFG_LOC
GOTO TOP
DO WHILE !EOF()
IF LOC_CODE == MHOME_LOC_CODE
SKIP 1
LOOP
ENDIF // CONTENTS OF THE "CTRL" COPY
PRNT_THE_ORDER('OD', IPOARR, 'PO', MFG_LOC->LOC_CODE, 'PO', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
SELECT MFG_LOC
SKIP 1
ENDDO
ELSEIF WHCHORDER = 'DEL'
SELECT(SAVESEL)
SAVE_DESC := NIL
MPORT := SET_PORT('_PORT_DELIVERY', PORTFLAG, OUTFILE)
IF MHOME_LOC_CODE = 'LINDS'
PRNT_THE_ORDER('OD', OUT_ARR[1,8], 'CTRL', MHOME_LOC_CODE, 'DELIVERY', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ELSE // INVOICE INFO
PRNT_THE_ORDER('OD', OUT_ARR[2,1], 'CTRL', MHOME_LOC_CODE, 'DELIVERY', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
ELSEIF WHCHORDER = 'GOLDEN'
SELECT(SAVESEL)
SAVE_DESC := NIL
MPORT := SET_PORT('_PORT_GOLDEN', PORTFLAG, OUTFILE)
PRNT_THE_ORDER('PROD', OUT_ARR[1,8], 'CTRL', MHOME_LOC_CODE, WHCHORDER, .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ELSEIF WHCHORDER = 'BACKORD' //** P3N - 4/30/98
SELECT(SAVESEL)
SAVE_DESC := NIL
MPORT := SET_PORT('_PORT_BO', PORTFLAG, OUTFILE)
//** PRINT PRIMARY PRODUCT BACKORDERS - (IE: C500 SINGLE HUNG...)
BKOARR := {}
IF PRTBOCOPY $ '12' //** PRINT PRIMARY BACKORDER COPY
FOR I := 1 TO LEN(OUT_ARR[2,1])
IF GET_CATCODE(OUT_ARR[2,1,I,10]) == 'SCREENS'
//** BYPASS SCREENS ON THIS PASS OF THE BACKORDER PRINTING
ELSEIF GET_CATCODE(OUT_ARR[2,1,I,10]) == 'STORMS '
//** BYPASS STORMS ON THIS PASS OF THE BACKORDER PRINTING
ELSE
WKORDQTY := OUT_ARR[2,1,I,7] //** P3N -11/4/98
WKSHPDQTY := OUT_ARR[2,1,I,11] //** P3N -11/4/98
IF WKORDQTY - WKSHPDQTY <= 0 //** P3N -11/4/98
ELSEIF EMPTY((CUR_MAST)->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
AADD(BKOARR, OUT_ARR[2,1,I])
ENDIF
ENDIF
NEXT
ENDIF
IF PRTBOCOPY $ '13' //** PRINT SCREEN BACKORDER COPY
//** PRINT SCREEN BACKORDERS - COMBINE SCREENS AT ALL LOC'S.
ABKOSCR := {} //* SCREENS NOT AT MFG. LOC.
FOR I := 1 TO LEN(OUT_ARR[1,9]) //* SCREENS NOT AT MFG. LOC.
WKORDQTY := OUT_ARR[1,9,I,7] //** P3N -11/4/98
WKSHPDQTY := OUT_ARR[1,9,I,11] //** P3N -11/4/98
IF WKORDQTY - WKSHPDQTY <= 0 //** P3N -11/4/98
ELSEIF EMPTY((CUR_MAST)->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
AADD(ABKOSCR, OUT_ARR[1,9,I])
ENDIF
NEXT
FOR I := 1 TO LEN(OUT_ARR[1,5]) //*SCREENS AT MFG. LOC.
WKORDQTY := OUT_ARR[1,5,I,7] //** P3N -11/4/98
WKSHPDQTY := OUT_ARR[1,5,I,11] //** P3N -11/4/98
IF WKORDQTY - WKSHPDQTY <= 0 //** P3N -11/4/98
ELSEIF EMPTY((CUR_MAST)->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
AADD(ABKOSCR, OUT_ARR[1,5,I])
ENDIF
IF OUT_ARR[1,5,I,8] == 'OL'
//** LINE_NUM PROD_CODE
TOLKEY := MORDER_NUM + OUT_ARR[1,5,I,9] + OUT_ARR[1,5,I,10] + 'SCREENS'
SCRNINFO := TOL_SCREENS(, TOLKEY)
IF EMPTY(SCRNINFO[2])
ELSEIF EMPTY(ABKOSCR)
ELSE
ABKOSCR[LEN(ABKOSCR),2] := SCRNINFO[2] //**TOL LINE DESC FOR SCREEN
ENDIF
ENDIF
NEXT
SAVE_DESC := NIL
ENDIF
IF PRTBOCOPY $ '14' //** PRINT STORM BACKORDER COPY
//** PRINT STORM BACKORDERS - COMBINE STORMS AT ALL LOC'S.
SAVE_DESC := NIL
//**BKOARR := {}
FOR I := 1 TO LEN(OUT_ARR[1,6]) //** STORMS @ MFG. LOC.
IF OUT_ARR[1,6,I,10] = 'PWS' //** DO NOT PRINT A BACKORDER FOR
ELSE //** PWS STORMS
WKORDQTY := OUT_ARR[1,6,I,7] //** P3N -11/4/98
WKSHPDQTY := OUT_ARR[1,6,I,11] //** P3N -11/4/98
IF WKORDQTY - WKSHPDQTY <= 0 //** P3N -11/4/98
ELSEIF EMPTY((CUR_MAST)->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
AADD(BKOARR, OUT_ARR[1,6,I])
ENDIF
ENDIF
NEXT
FOR I := 1 TO LEN(OUT_ARR[1,10]) //** STORMS NOT @ MFG. LOC.
IF OUT_ARR[1,10,I,10] = 'PWS' //** DO NOT PRINT A BACKORDER FOR
ELSE //** PWS STORMS
WKORDQTY := OUT_ARR[1,10,I,7] //** P3N -11/4/98
WKSHPDQTY := OUT_ARR[1,10,I,11] //** P3N -11/4/98
IF WKORDQTY - WKSHPDQTY <= 0 //** P3N -11/4/98
ELSEIF EMPTY((CUR_MAST)->ORDER_NEW) //** NO PARTIAL INVOICE EXISTS !
AADD(BKOARR, OUT_ARR[1,10,I])
ENDIF
ENDIF
NEXT
ENDIF
IF EMPTY(BKOARR)
//** P3N - 12/3/98 - PRINT BACKORDER IF ONLY MISC/NONTX ITEMS
SAVE_BKOPROD := ' ' //** P3N - 2/2/99
PRNT_THE_ORDER('BACKORD', {} , 'BACKORD', 'ALL','BACKORD', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ELSE
BKOARR := ASORT(BKOARR,,, {|X,Y| X[2] + X[9] < Y[2] + Y[9] })
SAVE_BKOPROD := ' ' //** P3N - 2/2/99
PRNT_THE_ORDER('BACKORD', BKOARR, 'BACKORD', 'ALL','BACKORD', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
ENDIF
IF EMPTY(ABKOSCR)
BKOASCR := {} //** P3N - 5/25/99
BKOSCRNS := 0 //** P3N - 5/25/99
ELSEIF EMPTY(BKOSCRNS) //** ONLY SUMMARIZE SCREENS THE FIRST TIME
BKOASCR := SUM_BKO_SCREENS(ABKOSCR)
BKOASCR := ASORT(BKOASCR,,, {|X,Y| STR(X[7],5)+X[2]+X[9] < STR(Y[7],5)+Y[2]+Y[9] })
//** //** P3N - 9/22/98
//** SORT BACKORDER SCREENS BY THE PRODUCT & DESCR & QTY
BKOASCR := ASORT(BKOASCR,,, {|X,Y| X[10]+X[2]+STR(X[7],5) < Y[10]+Y[2]+STR(Y[7],5) })
ENDIF
SAVE_BKOPROD := ' ' //** P3N - 2/2/99
PRNT_THE_ORDER('BACKORD', BKOASCR, 'BACKORD', 'ALL','SCREENS', .T., PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE )
ENDIF
SET_P_OFF()
IF EMPTY(WIDEON) //PRINTER SELECTION INVALID - GET OUT!!!
RETURN
ENDIF
IF OUTMODE = 'PRINT' //IF the user requests to PRINT
// .OR. OUTMODE = 'BROWSE'
IF OUTMODE = 'PRINT'
LPREVIEW := .F.
ELSE
LPREVIEW := .T.
ENDIF
IF QUOTE_PROCESS
CGW_PRNT_FROM_FILE( 'QUOTE', OUTFILE, LPREVIEW ) // 9-10-20
ELSE
CGW_PRNT_FROM_FILE( WHCHORDER, OUTFILE, LPREVIEW )
ENDIF
(CUR_MAST)->(DBSEEK(MORDER_NUM)) // 6/9/20
IF OUTMODE = 'PRINT'
//* SELECT ORD_MAST //UPDATE dates to indicate a PRINT has occured
IF AT('_ARCH', WHCHORDER) > 0 // ARCHIVE COPIES - DO NOT UPDATE
// CONTINUE FOR PRINTING ARCHIVED ORDERS
ELSE
SELECT(CUR_MAST)
REC_LOCK(1)
IF WHCHORDER == 'INV' // INVOICE COPIES
//** P3N - 11/24/98 - PARTIAL INVOICING
CUTINVOICE(MORDER_NUM, GL_ARR, PARTIAL_INVOICE)
//** P3N - 6/4/99 MOVED ABOVE - TIMING ISSUES REGARDING INVOICE PRINT
//** P3N - THE 'BACKORDER TO' WAS NOT PRINTING ON INVOICE-FIRST PRINT
ELSEIF WHCHORDER == 'PREBILL' // PREBILL
IF EMPTY(BDATE_FST)
REPLACE BDATE_FST WITH CURDATE
REPLACE BTIME_FST WITH TIME()
ENDIF
REPLACE BDATE_LAST WITH CURDATE
REPLACE BTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'PRECOST' // PRECOST
IF EMPTY(CDATE_FST)
REPLACE CDATE_FST WITH CURDATE
REPLACE CTIME_FST WITH TIME()
ENDIF
REPLACE CDATE_LAST WITH CURDATE
REPLACE CTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'GOLDEN' // GOLDEN ROD
IF EMPTY(GDATE_FST)
REPLACE GDATE_FST WITH CURDATE
REPLACE GTIME_FST WITH TIME()
ENDIF
REPLACE GDATE_LAST WITH CURDATE
REPLACE GTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'PROD' // PRODUCTION COPIES
IF EMPTY(PDATE_FST)
REPLACE PDATE_FST WITH CURDATE
REPLACE PTIME_FST WITH TIME()
ENDIF
REPLACE PDATE_LAST WITH CURDATE
REPLACE PTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'DEL' // DELIVERY COPIES
IF EMPTY(DDATE_FST)
REPLACE DDATE_FST WITH CURDATE
REPLACE DTIME_FST WITH TIME()
ENDIF
REPLACE DDATE_LAST WITH CURDATE
REPLACE DTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'OD' // ORDER DESK COPIES
IF EMPTY(ODATE_FST)
REPLACE ODATE_FST WITH CURDATE
REPLACE OTIME_FST WITH TIME()
ENDIF
REPLACE ODATE_LAST WITH CURDATE
REPLACE OTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'PO' // ORDER DESK COPIES
IF EMPTY(XDATE_FST)
REPLACE XDATE_FST WITH CURDATE
REPLACE XTIME_FST WITH TIME()
ENDIF
REPLACE XDATE_LAST WITH CURDATE
REPLACE XTIME_LAST WITH TIME()
ELSEIF WHCHORDER == 'BACKORD' //BACKORDER //** P3N - 4/30/98
IF EMPTY(BODATE_FST)
REPLACE BODATE_FST WITH CURDATE
REPLACE BOTIME_FST WITH TIME()
ENDIF
REPLACE BODATE_LST WITH CURDATE
REPLACE BOTIME_LST WITH TIME()
ELSE
? ABENDPRNT_THIS
ENDIF
ENDIF
ENDIF
ELSE // BROWSE ORDER and do not UPDATE dates
SHELLEXECUTE(,'OPEN', OUTFILE,'',, SW_SHOW)
// WAITRUN( 'NOTEPAD ' + OUTFILE ) // 1/20/20
//PROG := 'BROWSE ' + OUTFILE
//CALL_OLAY(,,PROG, 0, '', '')
ENDIF
UNLOCK
RETURN MPORT
*************************************************************
* P3N - 11/12/98 CUT AN INVOICE AND APPROPRIATE BILLING *
* TRANSACTIONS AS NECESSARY. *
*************************************************************
FUNCTION CUTINVOICE(MORDER_NUM, GL_ARR, PARTIAL_INVOICE)
DBOPEN('SALEHIST') //** P3N - 8/13/98 - ADDRESS POSTING LOCKOUT
SELECT(CUR_MAST)
REC_LOCK(3)
REPLACE IDATE_LAST WITH CURDATE //** P3N - 11/11/98
REPLACE ITIME_LAST WITH TIME() //** P3N - 11/11/98
IF EMPTY(IDATE_FST)
REPLACE IDATE_FST WITH CURDATE
REPLACE ITIME_FST WITH TIME()
CUT_BILLTRAN( (CUR_MAST)->ORDER_NUM , GL_ARR, PARTIAL_INVOICE )
ELSE
IF POSTED_ORDER(MORDER_NUM)
//** ORDER HAS BEEN POSTED TO THE AS/400 - CAN NOT SEND AGAIN!!!
ERR_BOX('** Order - ' + ALLTRIM(MORDER_NUM) + ;
' has already been POSTED to the AS/400! **', ;
' To ENSURE both Systems are in BALANCE ALL CHANGES ' , ;
' MUST be made to BOTH Systems!!!')
ELSE
//** P3N - 11/11/98 PER ELLEN - REPRINT ORDER WITH EARLIER DATE
//** P3N - ALLOW THE INVOICE TO SHOW ON THE SALES REPORT IN THE
//** P3N - PROPER PERIOD.
IF IDATE_FST > CURDATE //** P3N - 11/11/98
REPLACE IDATE_FST WITH CURDATE //** P3N - 11/11/98
REPLACE ITIME_FST WITH TIME() //** P3N - 11/11/98
ENDIF //** P3N - 11/11/98
CUT_BILLTRAN( (CUR_MAST)->ORDER_NUM , GL_ARR, PARTIAL_INVOICE )
ENDIF
ENDIF
(CUR_MAST)->(DBUNLOCK())
CLOSE SALEHIST //** P3N - 8/13/98 - ADDRESS POSTING LOCKOUT
RETURN .T.
********************************************************************
* //** P3N - 8/5/98
* SUMMARIZE THE BACKORDER SCREENS FOR PRINTING PURPOSES
* TO THE ( PRODUCT / ENTRY SIZE ) LEVEL
* (IE: ALL C500 / 3050'S)
********************************************************************
FUNCTION SUM_BKO_SCREENS(PASSARR)
LOCAL RETARR := {}, I, MSIZE, MPROD, MHOWMEAS, DUPLSCRNS := {}, RARR := {}
LOCAL WKARR := {}, SUMQTY := 0, SVARR := {}, SVPRD, SVSIZ, REMOVSCRN := .F.
LOCAL BKOARR := ACLONE(PASSARR), SVLINE := '', SVQTY := 0, ELM := 0, SCRTYP := ''
FOR I := 1 TO LEN(BKOARR) //** P3N - 1/28/99
SVLINE := BKOARR[I,9] //** P3N - 1/28/99
SVQTY := BKOARR[I,7] //** P3N - 1/28/99
IF AT('UNIT', BKOARR[I,10] ) > 0 .OR. ; //** P3N - 1/28/99
AT('UNT' , BKOARR[I,10] ) > 0 //** P3N - 1/28/99
IF BKOARR[I,8] == 'OL' //** P3N - 1/28/99
SVLINE := BKOARR[I,9] //** P3N - 1/28/99
SVQTY := BKOARR[I,7] //** P3N - 1/28/99
AADD(DUPLSCRNS,{ SVLINE, SVQTY } ) //** P3N - 1/28/99
ENDIF //** P3N - 1/28/99
ENDIF //** P3N - 1/28/99
NEXT //** P3N - 1/28/99
FOR I := 1 TO LEN(BKOARR)
//** ORDER QTY SHIPPED QTY
IF EMPTY( BKOARR[I,7] - BKOARR[I,11] )
//** NO BACKORDER STUFF TO SUMMARIZE
ELSE
//** P3N - 1/28/99 - REMOVE DUPLICATE SCREENS FROM BACKORDERS
//** P3N - FOR 'UNIT' MODELS WITH FLANKERS
REMOVSCRN := .F. //** P3N - 1/28/99
IF BKOARR[I,8] == 'XL' //** P3N - 1/28/99
SVLINE := BKOARR[I,9] //** P3N - 1/28/99
SVQTY := BKOARR[I,7] //** P3N - 1/28/99
ELM := ASCAN(DUPLSCRNS, {|X| X[1] == SVLINE .AND. ;
X[2] = SVQTY })
IF EMPTY(ELM) //** P3N - 1/28/99
ELSE //** P3N - 1/28/99
REMOVSCRN := .T. //** P3N - 1/28/99
ENDIF //** P3N - 1/28/99
ENDIF //** P3N - 1/28/99
IF REMOVSCRN //** P3N - 1/28/99
ELSE //** P3N - 1/28/99
MPROD := MPROD_SUMMARY(BKOARR[I,10]) //** PRODUCT CODE
MSIZE := BKOARR[I,5,3] //** ENTRY SIZE
MHOWMEAS := BKOARR[I,5,4] //** HOW MEASURE
IF MHOWMEAS == 'NS' //** P3N - 2/02/99
MSIZE := SUBSTR(MSIZE, 1, 5) //** P3N - 2/02/99
ENDIF //** P3N - 2/02/99
AADD(WKARR, {MPROD,MHOWMEAS+MSIZE, BKOARR[I] } )
ENDIF //** P3N - 1/28/99
ENDIF
NEXT
IF EMPTY(WKARR)
ELSE
WKARR := ASORT(WKARR,,, {|X,Y| X[1] + X[2] < Y[1] + Y[2] })
MPROD := WKARR[1,1]
MSIZE := WKARR[1,2]
SVPRD := MPROD
SVSIZ := MSIZE
SVARR := {MPROD+MSIZE, WKARR[1,3]}
FOR I := 1 TO LEN(WKARR)
SCRTYP := WKARR[I,3,8] //** OL/XL - TYPE OF SCREEN
MPROD := WKARR[I,1]
MSIZE := WKARR[I,2]
//**P3N - SUMMARIZE SCREENS TO MODEL LEVEL
//** (IE: 500 AND 500SCR (XL) ARE SUMMARIZED TOGETHER)
//**IF (SVPRD = MPROD) .AND. (SVSIZ = MSIZE) //** P3N - 1/28/99
IF ((SVPRD = MPROD) .OR. (SCRTYP == 'XL' .AND. AT(SVPRD, MPROD)>0 )) ; //** P3N - 1/28/99
.AND. (SVSIZ = MSIZE) //** P3N - 1/28/99
SUMQTY := SUMQTY + WKARR[I,3,7]
LOOP
ELSE
BKOSCRNS := BKOSCRNS + SUMQTY //** P3N - 8/12/98 (HAPPY BDAY JEFF)
ELM := ASCAN(RETARR,{|X| X[1] = MPROD+MSIZE } )
IF EMPTY(ELM)
SVARR[2,7] := SUMQTY
AADD( RETARR, SVARR)
ELSE
RETARR[ELM, 2,7] := RETARR[ELM, 2,7] + SUMQTY
ENDIF
SUMQTY := WKARR[I,3,7]
SVPRD := MPROD
SVSIZ := MSIZE
SVARR := {MPROD+MSIZE, WKARR[I,3]}
ENDIF
NEXT
BKOSCRNS := BKOSCRNS + SUMQTY //** P3N - 8/12/98 (HAPPY BDAY JEFF)
ELM := ASCAN(RETARR,{|X| X[1] = MPROD+MSIZE } )
IF EMPTY(ELM)
SVARR[2,7] := SUMQTY
AADD( RETARR, SVARR)
ELSE
RETARR[ELM, 2,7] := RETARR[ELM, 2,7] + SUMQTY
ENDIF
ENDIF
FOR I := 1 TO LEN(RETARR)
AADD( RARR, RETARR[I, 2])
NEXT
RETURN RARR
********************************************************************
//** P3N - 1/29/99 - GET THE SUMMARY CODE FOR SCREEN BACKORDERS
//** SUMMARIZE SCREENS TO MODEL LEVEL
//** (IE: 500, 500UNIT AND 500SCR ARE ALL SUMMARIZED TOGETHER)
********************************************************************
FUNCTION MPROD_SUMMARY(PPROD)
LOCAL MPROD := PPROD, ENDPROD, I
LOCAL SUMARR := { 'UNIT', 'UNT', 'SCR', 'SCP','SCF', 'SCA' }
FOR I := 1 TO LEN(SUMARR)
ENDPROD := AT(SUMARR[I], MPROD)
IF EMPTY(ENDPROD)
ELSE
MPROD := SUBSTR(MPROD,1, ENDPROD-1)
EXIT
ENDIF
NEXT
RETURN MPROD
********************************************************************
* HAS THE ORDER BEEN POSTED TO THE AS/400??
* (IE: IS ORDER HISTORY REC POST DATE EMPTY??)
********************************************************************
FUNCTION POSTED_ORDER(MORDER_NUM)
LOCAL RETVAL, CLOSEHST := .T., SVSEL := SELECT()
IF SELECT('SALEHIST') > 0 //** P3N - 12/3/98
CLOSEHST := .F. //** P3N - 12/3/98
ELSE
DBOPEN('SALEHIST') //** P3N - 8/13/98 - ADDRESS POSTING LOCKOUT
CLOSEHST := .T. //** P3N - 12/3/98
ENDIF
IF SALEHIST->(DBSEEK(MORDER_NUM))
IF EMPTY(SALEHIST->POST_DATE) .AND. EMPTY(SALEHIST->POST_TIME)
RETVAL := .F.
ELSE
RETVAL := .T.
ENDIF
ELSE
RETVAL := .F.
ENDIF
IF CLOSEHST //** P3N - 12/3/98
CLOSE SALEHIST //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
SELECT(SVSEL) //** P3N - 12/3/98
RETURN RETVAL
********************************************************************
* GET THE INVOICE SHIP DATE
********************************************************************
FUNCTION GET_INV_SHPDT()
LOCAL SV_SCREEN := SAVESCREEN(), SAVESEL := SELECT()
SELECT (CUR_MAST)
IF EMPTY(INVOICENUM)
REC_LOCK(1)
REPLACE INVOICENUM WITH ORDER_NUM
UNLOCK
ENDIF
MINVOICENUM := (CUR_MAST)->INVOICENUM
MSHIP_DATE := (CUR_MAST)->SHIP_DATE
MIDATE_FST := (CUR_MAST)->IDATE_FST
IF EMPTY(MIDATE_FST)
MIDATE_FST := CURDATE
ENDIF
@ 5,01 CLEAR TO 22,80
// print all unprinted - ignore ship date pauses
// if invoice only
DO WHILE .T.
@ 11,17 SAY ' Customer :'
SETCOLOR(HNOR)
@ 11,32 SAY (CUR_MAST)->CUST_ID ;
+ '-' + (CUR_MAST)->BILL_NAME
SETCOLOR(LNOR)
@ 13,17 SAY 'Invoice Date :'
SETCOLOR(HNOR)
@ 13,32 SAY DTOC(MIDATE_FST)
SETCOLOR(LNOR)
IF MHOME_LOC_CODE = 'IOLA'
@ 15,20 SAY 'Invoice # :' + MINVOICENUM + ':'
ELSE
@ 15,20 SAY 'Invoice # :' + MINVOICENUM + ':'
ENDIF
@ 17,20 SAY 'Ship Date ' GET MSHIP_DATE
READ()
IF LASTKEY() = 27
SELECT (SAVESEL)
RESTSCREEN(,,,,SV_SCREEN)
RETURN .F.
ENDIF
IF EMPTY(MSHIP_DATE)
ERR_BOX('You can NOT ship an Order without a Ship Date !')
LOOP
ENDIF
CORR := CORRCHEK()
IF CORR$'N'
LOOP
ENDIF
IF CORR$'X' .OR. LASTKEY() = 27
SELECT (SAVESEL)
RESTSCREEN(,,,,SV_SCREEN)
RETURN .F.
ENDIF
SELECT (CUR_MAST)
REC_LOCK(3)
REPLACE (CUR_MAST)->SHIP_DATE WITH MSHIP_DATE
UNLOCK
EXIT
ENDDO
SELECT(SAVESEL)
RESTSCREEN(,,,,SV_SCREEN)
RETURN .T.
********************************************************************
* GET ALL DATA FOR THE SELECTED ORDER INTO AN ARRAY AND FORMAT THE
* ARRAY INTO A FORMAT USABLE FOR PRINTING
********************************************************************
FUNCTION BLD_ORDER( MORDER_NUM, POSTGL, PARTIAL_INVOICE, REPRINT_INVOICE )
LOCAL I, II, OL_ARR := {}, XL_ARR, P1, P2, P3
LOCAL OUT_ARR := { {}, {} }, NUM_ELEM := 8 // FOR NOW!
LOCAL M1, M2, M3, NOTAX1, NOTAX2, NOTAX3, SVSEL := SELECT()
LOCAL TAX_ARR := STAX_RATE( (CUR_MAST)->TAXSCH ) // GET THE TAX ARRAY
LOCAL TAX_DESC := TAX_ARR[3] // DESCRIPTION
LOCAL TAX_DET := TAX_ARR[4] // ALL COMPONENTS {RATE, DESC, GL_NUM}
LOCAL TOTTAX := 0, CURTAX := 0, PLUG := 0, SAVESEL := SELECT()
LOCAL GL312AMT, SHIP_STATE, BILL_STATE, WK_STATE, POST_ORDER := .F.
LOCAL SM1 := 0, SM2 := 0, SM3 := 0, IM1 := 0, IM2 := 0, IM3 := 0
LOCAL ST1 := 0, ST2 := 0, ST3 := 0, IT1 := 0, IT2 := 0, IT3 := 0
LOCAL MISC_ARR := {}, MSALE := 0, MISCKEY := '' //** P3N - 12/9/98
LOCAL QTYARR := {}, SHPQTY := 0, INVQTY := 0 //** P3N - 12/9/98
//DEFAULT PARTIAL_INVOICE := .F.
//DEFAULT REPRINT_INVOICE := .F.
If( PARTIAL_INVOICE == nil, PARTIAL_INVOICE := .F., )
If( REPRINT_INVOICE == nil, REPRINT_INVOICE := .F., )
IF PARTIAL_INVOICE = NIL
PARTIAL_INOICE := .F. //** P3N -12/7/98
ENDIF //** P3N -12/7/98
IF REPRINT_INVOICE = NIL
REPRINT_INVOICE := .F. //** P3N -12/7/98
ENDIF //** P3N -12/7/98
DBOPEN('ORD_SHIP') //** P3N - 5/1/98
IF _WHEREORD == '2' //ORDER ENTRY FROM THE HOTKEY - F7
CLS //CLEAR THE MISC. ITEMS SCREEN BEFORE PRINT MSG'S
TITLE := 'Print Order ' + ALLTRIM( (CUR_MAST)->ORDER_NUM)
SAYTITLE(TITLE, 'PR020')
ENDIF
IF EMPTY(POSTGL) //** P3N - 6/5/98
POST_ORDER := .F. //** P3N - 6/5/98
ELSE //** P3N - 6/5/98
POST_ORDER := POSTGL //** P3N - 6/5/98
ENDIF //** P3N - 6/5/98
WAIT_BOX( '*** Processing Order # ' + ALLTRIM(MORDER_NUM), ;
'*** Please Wait ****' )
// EXPECTING A 8 ELEMENT ARRAY BACK
// 1. entire set of data for a particular line
// 1. LOCATION CODE
// 2. DESCRIPTION FOR THAT LINE
// 3. 60 BYTE ITEM PRINT LINE
// 4. SALE PRICE
// 5. DISCOUNT AMOUNT
// 6. MEMO
// 7. QUANTITY
// 8. WHERE_FROM (IE: 'OL' / 'XL')
// 9. LINE_NUM
// 10. PROD_CODE
// 11. SHP_QTY //** ORDER SHIPPING TRANSACTION QTY
//INITIALIZE THE GL ARRAY
GL_ARR := {}
//LOAD THE GL ALLOCATION OVERRIDE ARRAY FROM THE GL_ALLOC DBF
GL_OVR := GET_GLALLOC(MORDER_NUM)
SELECT (CUR_MISC)
SEEK MORDER_NUM
MTOT := 0
// PRODUCT SALES FROM (CUR_MISC)
DO WHILE ORDER_NUM == MORDER_NUM .AND. !EOF()
IF EMPTY( (CUR_MISC)->ALT_SPRICE) //** P3N - 2/20/98
MSALE := (CUR_MISC)->SALE_PRICE
ELSE
M1 := MSALE := (CUR_MISC)->ALT_SPRICE //** P3N-2/20/98
ENDIF
MISCKEY := (CUR_MISC)->ORDER_NUM
MISCKEY := MISCKEY + (CUR_MISC)->LINE_NUM
MISCKEY := MISCKEY + 'MISCITM'
QTYARR := GET_OSTQTY(CUR_OL, MISCKEY, PARTIAL_INVOICE, REPRINT_INVOICE)
IF EMPTY(QTYARR) //** P3N - 12/9/98
SHPQTY := 0 //** P3N - 12/9/98
INVQTY := 0 //** P3N - 12/9/98
ELSE //** P3N - 12/9/98
SHPQTY := QTYARR[1] //** P3N - 12/9/98
INVQTY := QTYARR[2] //** P3N - 12/9/98
ENDIF //** P3N - 12/9/98
IF PARTIAL_INVOICE //** P3N - 12/9/98
M1 := SHPQTY * MSALE //** P3N - 12/9/98
ELSEIF REPRINT_INVOICE //** P3N - 12/9/98
M1 := INVQTY * MSALE //** P3N - 12/9/98
ELSE //** P3N - 12/9/98
M1 := (CUR_MISC)->QUANTITY * MSALE
ENDIF
MISC_ITEMS->(DBSEEK ( (CUR_MISC)->PARTNUM ))
ELEM := ASCAN(GL_ARR, {|X| X[1] = MISC_ITEMS->GL_NUM } )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( M1 )
ELSE
AADD(GL_ARR, { MISC_ITEMS->GL_NUM , M1 } )
ENDIF
MTOT := MTOT + M1
SKIP 1
ENDDO
SELECT (CUR_MAST)
*************************************************************
* Capture the Installation amount paid per order
*************************************************************
GL312AMT := (CUR_MAST)->INST_PAID
IF GL312AMT <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = '312 '} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+ GL312AMT
ELSE // EXCLUDE FROM TAX ALLOC
AADD(GL_ARR, {'312 ', GL312AMT, ,'X' } )
ENDIF
ENDIF
*************************************************************
* Capture the MISC ITEMS FROM SCREEN 2115
*************************************************************
MISC_ARR := GETQTYMISC(MORDER_NUM, PARTIAL_INVOICE, REPRINT_INVOICE)
FOR I := 1 TO LEN(MISC_ARR[1])
IF MISC_ARR[1,I,5] == 'ORDMISC1'
SM1 := MISC_ARR[1,I,3] //** SHIP QTY
IM1 := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDMISC2'
SM2 := MISC_ARR[1,I,3] //** SHIP QTY
IM2 := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDMISC3'
SM3 := MISC_ARR[1,I,3] //** SHIP QTY
IM3 := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDNOTX1'
ST1 := MISC_ARR[1,I,3] //** SHIP QTY
IT1 := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDNOTX2'
ST2 := MISC_ARR[1,I,3] //** SHIP OR INV QTY
IT2 := MISC_ARR[1,I,6] //** INV QTY
ELSEIF MISC_ARR[1,I,5] == 'ORDNOTX3'
ST3 := MISC_ARR[1,I,3] //** SHIP OR INV QTY
IT3 := MISC_ARR[1,I,6] //** INV QTY
ENDIF
NEXT
IF PARTIAL_INVOICE //** SHIPPED QTYS
M1 := SM1 * (CUR_MAST)->MISC_AMT1
M2 := SM2 * (CUR_MAST)->MISC_AMT2
M3 := SM3 * (CUR_MAST)->MISC_AMT3
ELSEIF REPRINT_INVOICE //** INVOICED QTYS
M1 := IM1 * (CUR_MAST)->MISC_AMT1
M2 := IM2 * (CUR_MAST)->MISC_AMT2
M3 := IM3 * (CUR_MAST)->MISC_AMT3
ELSE
M1 := (CUR_MAST)->MISC_QTY1 * (CUR_MAST)->MISC_AMT1
M2 := (CUR_MAST)->MISC_QTY2 * (CUR_MAST)->MISC_AMT2
M3 := (CUR_MAST)->MISC_QTY3 * (CUR_MAST)->MISC_AMT3
ENDIF
MTOT := MTOT + M1 + M2 + M3
IF M1 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = MISC_GL1} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( M1 )
ELSE
AADD(GL_ARR, { MISC_GL1, M1 } )
ENDIF
ENDIF
IF M2 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = MISC_GL2} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( M2 )
ELSE
AADD(GL_ARR, { MISC_GL2, M2 } )
ENDIF
ENDIF
IF M3 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = MISC_GL3} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( M3 )
ELSE
AADD(GL_ARR, { MISC_GL3, M3 } )
ENDIF
ENDIF
*************************************************************
* Capture the NON-TAX ITEMS FROM SCREEN 2115
* Perry Nichols 7/31/97
*************************************************************
IF PARTIAL_INVOICE //** SHIPPED QTYS
NOTAX1 := ST1 * (CUR_MAST)->NOTX_AMT1
NOTAX2 := ST2 * (CUR_MAST)->NOTX_AMT2
NOTAX3 := ST3 * (CUR_MAST)->NOTX_AMT3
ELSEIF REPRINT_INVOICE //** INVOICED QTYS
NOTAX1 := IT1 * (CUR_MAST)->NOTX_AMT1
NOTAX2 := IT2 * (CUR_MAST)->NOTX_AMT2
NOTAX3 := IT3 * (CUR_MAST)->NOTX_AMT3
ELSE
NOTAX1 := (CUR_MAST)->NOTX_QTY1 * (CUR_MAST)->NOTX_AMT1
NOTAX2 := (CUR_MAST)->NOTX_QTY2 * (CUR_MAST)->NOTX_AMT2
NOTAX3 := (CUR_MAST)->NOTX_QTY3 * (CUR_MAST)->NOTX_AMT3
ENDIF
IF NOTAX1 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = NOTX_GL1} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( NOTAX1 )
ELSE // EXCLUDE FROM TAX ALLOC
AADD(GL_ARR, { NOTX_GL1, NOTAX1,,'X' } )
ENDIF
ENDIF
IF NOTAX2 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = NOTX_GL2} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( NOTAX2 )
ELSE // EXCLUDE FROM TAX ALLOC
AADD(GL_ARR, { NOTX_GL2, NOTAX2,,'X' } )
ENDIF
ENDIF
IF NOTAX3 <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = NOTX_GL3} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+( NOTAX3 )
ELSE // EXCLUDE FROM TAX ALLOC
AADD(GL_ARR, { NOTX_GL3, NOTAX3,,'X' } )
ENDIF
ENDIF
SELECT (SAVESEL)
IF TAX_ARR[2] <> 0 // TOTAL RATE
FOR I := 1 TO LEN(TAX_DET)
CURTAX := VAL(STR(TAX_DET[I,1] * ;
( (CUR_MAST)->ORD_L_TTL - ;
(CUR_MAST)->ORD_BO_TTL - ; //** P3N - 11/19/98
(CUR_MAST)->ORD_D_TTL + MTOT), 9, 2))
CURTAX := MIN( (CUR_MAST)->SALES_TAX - TOTTAX, CURTAX)
IF CURTAX <> 0
// GL ACCT# TAXAMT TAX DESC EXCLUDE FROM ALLOC.
AADD(GL_ARR, { TAX_DET[I,3] + ' ', CURTAX, TAX_DET[I,2], 'X' } )
TOTTAX := TOTTAX + CURTAX
ENDIF
NEXT
// IS THE PLUG AMOUNT BASED ON THE total or the quote?
IF TOTTAX <> (CUR_MAST)->SALES_TAX
PLUG := (CUR_MAST)->SALES_TAX - TOTTAX
IF LEN(GL_ARR) > 0 //** P3N - 01/14/09
GL_ARR[LEN(GL_ARR),2] := GL_ARR[LEN(GL_ARR),2] + PLUG
ENDIF
ENDIF
ENDIF
IF (CUR_MAST)->( FIELDPOS('FREIGHT') ) > 0
IF (CUR_MAST)->FREIGHT <> 0 //EXCLUDE FROM TAX - ALLOC.
AADD(GL_ARR, { 'FREIGHT', (CUR_MAST)->FREIGHT, , 'X' } )
ENDIF
ENDIF
IF POST_ORDER
//** BUILD THE GL_ARR FOR POSTING - NO NEED TO GET_ORD_DATA()!
ELSE
OL_ARR := GET_ORD_DATA(MORDER_NUM, CUR_OL, PARTIAL_INVOICE, REPRINT_INVOICE)
SELECT (CUR_XL)
DONSETORD(3) // ORDER + LINE#
XL_ARR := GET_ORD_DATA(MORDER_NUM, CUR_XL, PARTIAL_INVOICE, REPRINT_INVOICE)
SELECT (CUR_XL)
DONSETORD(1)
* DISECT THE OL_ARR AND PUT THE CTRL, FRAME, GLASS, SASH, INV
* STUFF INTO THE OUT_ARR IN THE PROPER HIERARCHY
* NOTICE, EACH ELEMENT OF THE OL_ARR IS SIMPLY AN 80 BYTE TEXT PRINT LINE
FOR I = 1 TO LEN(OL_ARR)
IF I = 7 // customer invoice copy
AADD(OUT_ARR[2], OL_ARR[I]) // 8 ELEMENT ARRAY WITH LOC_CODE, HEADING, ITEM,
ELSE // GROSS SALE PRICE, DISCOUNT AMT
AADD(OUT_ARR[1], OL_ARR[I])
ENDIF
NEXT
FOR I = 1 TO LEN(XL_ARR)
IF I = 7 // customer invoice copy
// NO XL ITEMS ON CUSTOMER COPIES // 8 ELEMENT ARRAY WITH LOC_CODE, HEADING, ITEM,
ELSE // GROSS SALE PRICE, DISCOUNT AMT
FOR II := 1 TO LEN(XL_ARR[I])
IF I < 7
AADD(OUT_ARR[1,I], XL_ARR[I, II])
ELSE
AADD(OUT_ARR[1,I-1], XL_ARR[I, II])
ENDIF
NEXT
ENDIF
NEXT
//* SORT SUB ARRAY'S IN LINE_NUM + OL/XL + PROD_CODE FOR PRINTING
//* (IE: SUB ARRAY'S ARE - CTRL, FRAME, SASH, GLASS, SCREEN, STORM)
// IF A SEQUENCE NUMBER, PUT THAT ONE AT THE BOTTOM OR SOMETHING
///***///***///***\\\***\\\***\\\
FOR I := 1 TO LEN(OUT_ARR[1])
* OUT_ARR[1,I] := ASORT(OUT_ARR[1,I],,, {|X,Y| X[9] + X[8] + X[10] < Y[9] + Y[8] + Y[10] })
IF EMPTY(OUT_ARR[1,I]) //** P3N - 5/17/99
ELSE //** P3N - 5/17/99
OUT_ARR[1,I] := ASORT(OUT_ARR[1,I],,, {|X,Y| X[2] + X[9] < Y[2] + Y[9] })
ENDIF //** P3N - 5/17/99
NEXT
// INVOICE PARTS
OUT_ARR[2,1] := ASORT(OUT_ARR[2,1],,, {|X,Y| X[2] + X[9] < Y[2] + Y[9] })
ENDIF
//**IF (CUR_MAST)->TERMS = '90' .OR. ; //** NO CHARGE //**P3N - 6/16/98
//** (CUR_MAST)->TERMS = '96' //** CANCELLATION //**P3N - 6/16/98
IF ZERO_ORDER() //** NO CHARGE //**P3N - 3/05/99
GL_ARR := {} //** P3N - 6/16/98 FORCE GL ALLOC. TO ZERO
GL_OVR := {} //** P3N - 6/16/98 FORCE GL ALLOC. TO ZERO
ENDIF
IF EMPTY(OUT_ARR[1]) .AND. EMPTY(OUT_ARR[2])
RETURN {}
ELSE
RETURN OUT_ARR
ENDIF
*****************************************************************
* CALC TOTAL MISC ITEMS / NOTX ITEMS
*****************************************************************
FUNCTION CALC_TOTMISC( CUR_MAST , MORDER_NUM, INCLD_NOTX)
LOCAL RETVAL := ( (CUR_MAST)->MISC_QTY1 * (CUR_MAST)->MISC_AMT1 ) ;
+ ( (CUR_MAST)->MISC_QTY2 * (CUR_MAST)->MISC_AMT2 ) ;
+ ( (CUR_MAST)->MISC_QTY3 * (CUR_MAST)->MISC_AMT3 ) ;
+ (CUR_MAST)->ORD_M_TTL
IF EMPTY(INCLD_NOTX) //** P3N - 1/11/99
ELSEIF INCLD_NOTX //** P3N - 1/11/99
RETVAL := RETVAL + ( (CUR_MAST)->NOTX_QTY1 * (CUR_MAST)->NOTX_AMT1 ) ;
+ ( (CUR_MAST)->NOTX_QTY2 * (CUR_MAST)->NOTX_AMT2 ) ;
+ ( (CUR_MAST)->NOTX_QTY3 * (CUR_MAST)->NOTX_AMT3 )
ENDIF //** P3N - 1/11/99
RETURN RETVAL //** P3N - 1/11/99
*****************************************************************
* GET THE GL ALLOCATIONS FOR A GIVEN ORDER! IF NONE EXIST RET EMPTY ARRAY
*****************************************************************
FUNCTION GET_GLALLOC(MORDER_NUM)
//** GL_ARR-1 = GL_NUM
//** GL_ARR-2 = GL_AMT
//** GL_ARR-3 = GL_TAX_DESC
//** GL_ARR-4 = GL_TAX_IND - "X" EXCLUDE FROM TAX ALLOC
//** "I" INCLUDE IN TAX ALLOC
//** "P" PRODUCT ALLOCATION
LOCAL RET_ARR := {}, GL_AMT
LOCAL SV_SEL := SELECT()
DBOPEN('GL_ALLOC')
IF DBSEEK(MORDER_NUM)
DO WHILE .T.
IF GL_ALLOC->(EOF())
EXIT
ENDIF
IF GL_ALLOC->ORDER_NUM == MORDER_NUM
GL_AMT := AMOUNT + ADJ_AMT
AADD(RET_ARR, {GL_NUM, GL_AMT, TAX_DESC, TAX_ALLOC})
ELSE
EXIT
ENDIF
DBSKIP(+1)
ENDDO
ENDIF
USE
SELECT(SV_SEL)
RETURN RET_ARR
*****************************************************************
* PRINT COMPLETE ORDER-(IE: PROD CTRL, OR PROD FRAME, OR PROD SASH...)
*****************************************************************
FUNCTION PRNT_THE_ORDER(WHCHORDER, PRN_ARR, WHICH_TYPE, WHCH_LOCATION, ;
SUBTYPE, DO_CUT_SPECS, PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
LOCAL MORDER_NUM := (CUR_MAST)->ORDER_NUM, I, LI_TOTALS := 0, ELM
LOCAL DO_LINES := .T., PAMTS := {}, III, WORKARR := {}
LOCAL LI_AMTDON, LASTDESC, TOTPRNT := 0, SUBPRNT := 0, NUMPRNT := 0
LOCAL NUMBRK := 0, THESE_ITEMS := 0, LAST_PAMT, THIS_NUM, DIDFST := .F.
LOCAL PHEAD_ARR := {}, PRT_AMT := .F., BKOMODEL, LASTBKOM
LOCAL PBODY_ARR := {}, LASTMODEL, DISC_ARR, PAMTS_ARR := {}, PTAIL_ARR := {}
LOCAL RETARR := {}, NUMX := 0, PRT_GL_INFO
LOCAL L1:=0, L2:=0, L3:=0, M1:=0, M2:=0, M3:=0, MTOT:=0, PRINTFRAME := .F.
LOCAL B1:=0, B2:=0, B3:=0, S1:=0, S2:=0, S3:=0, A1:=0, A2:=0, A3:=0, STOT := 0
LOCAL I1:=0, I2:=0, I3:=0, ITOT := 0, INCL_ALL_LINES, RET_ARR, PRT_DISC_ARR
LOCAL CNT_LI_DISC := 0, LI_DISC_PRNT := .F., WORKPRICE := 0
LOCAL MISCITM_OSTQTY := 0, MISC_ARR := {}, PRT_BO := .F., SUPPRESS_TOT := .F.
LOCAL MPORT
PRIVATE FORMTYPE := GET_FORMTYPE(WHCHORDER, WHICH_TYPE, SUBTYPE)
//DEFAULT PARTIAL_INVOICE := .F.
//DEFAULT REPRINT_INVOICE := .F.
If( PARTIAL_INVOICE == nil, PARTIAL_INVOICE := .F., )
If( REPRINT_INVOICE == nil, REPRINT_INVOICE := .F., )
IF EMPTY(REPRINT_INVOICE) //** P3N - 12/3/98
REPRINT_INVOICE := .F. //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
IF EMPTY(PARTIAL_INVOICE) //** P3N - 11/13/98
PARTIAL_INVOICE := .F. //** P3N - 11/13/98
ENDIF //** P3N - 11/13/98
IF DO_CUT_SPECS = NIL
DO_CUT_SPECS := .F.
ENDIF
/*
************************************************************
1. WHCHORDER - TELLS WHETHER INVOICE/PRODUCTION/ORDER DESK (DEFINES WHAT COPIES TO PRINT)
2. PRN_ARR - TELLS WHAT IS AVAIL TO PRINT IN THE LINE ITEM BODY
3. WHICH_TYPE- TELLS WHAT HEADING TO PRINT ON THE ORDER HEADING
4. WHCH_LOCAT- TELLS WHICH LOCATION WE ARE CONCERNED WITH
1. "ALL" MEANS PRINT EVERYTHING IN THE PRN_ARR
THIS IS SENT FOR "ORDER CONTROL COPY" AND "CUSTOMER INVOICES"
2. IF NOT "ALL", IT WILL REPRESENT A SPECIFIC LOCATION CODE
-IF THE CODE IS THE MHOME_LOC_CODE, THE ORDER WILL FILTER OUT
ONLY ITEMS TO BE PRODUCED ON THE FRAME, SASH, GLASS,STORMS COPY
-IF THE CODE IS !MHOME_LOC_CODE, THE ORDER WILL PRINT AS
A "INTERCOMPANY PURCHASE ORDER" CTRL DATA. DON'T WORRY ABOUT
IT, JUST FYI. WHICH_TYPE WILL BE "PO" OR "MANIFEST", ETC.
THE PRN_ARR WILL ALREADY CONTAIN THE "CTRL" INFO SINCE THAT
DATA CAN ALSO BE USED AS PURCHASE ORDER LINE DATA.
5. SUBTYPE - TELLS IF IT IS AN ORDER DESK DELIVERY COPY
6. DO_CUT_SPECS - TELLS IF WE SHOULD PRINT ITEMS FROM THE CUT_SPEC_ARR
( CURRENTLY ONLY DONE ON FRAME COPY )
************************************************************
*/
(CUR_MAST)->(DBSEEK(MORDER_NUM))
//**IF EMPTY(PRN_ARR) .AND. EMPTY( (CUR_MAST)->NOTES )
IF EMPTY(PRN_ARR)
//** P3N - 12/2/98 CHECK FOR MISC ITEMS BACKORDERED
IF ( WHCHORDER == 'BACKORD' .AND. SUBTYPE == 'BACKORD' )
IF EMPTY((CUR_MAST)->ORDER_NEW) //** P3N - 12/9/98
ELSE
RETURN //** PARTIAL INVOICE - NO BACKORDER
ENDIF
IF EMPTY( CALC_TOTMISC( CUR_MAST, MORDER_NUM,.T.) ) //** P3N - 1/11/99
RETURN //** P3N - 1/11/99
ENDIF //** P3N - 1/11/99
ELSEIF WHCHORDER == 'INV'
IF MISCSHIPPED(MORDER_NUM, PARTIAL_INVOICE, REPRINT_INVOICE)
RETURN
ENDIF
ELSEIF EMPTY( (CUR_MAST)->NOTES )
RETURN
ENDIF
ENDIF
IF EMPTY(WIDEON)
SET_P_OFF()
ERR_BOX('Printer is NOT properly set!',' ', ;
'Please SETUP Printer through Utility MENU - PRINTER Selection!' )
RETURN
ENDIF
IF WHCH_LOCATION = NIL
? ABEND
ENDIF
// SCAN THE BODY OF THE ORDER TO ENSURE THAT A LOCATION ITEM EXISTS HERE
// IF NOT 'ALL' ITEMS
IF WHCHORDER = 'PROD' .OR. WHCHORDER = 'OD'
DO CASE
CASE WHICH_TYPE = 'CTRL'
DO_LINES := .T.
OTHERWISE
DO_LINES := SCAN_PRNARR(PRN_ARR, WHCH_LOCATION)
ENDCASE
IF WHICH_TYPE == 'SCREEN'
DO_LINES := .T. // DO SCREEN regardless of the MFG. location.
ENDIF
ELSE
DO_LINES := .T.
ENDIF
// SO FAR, HAVE DATA FOR THIS LOCATION
// SCAN THE BODY OF THE ORDER TO ENSURE THAT QTY > 0 (NOT CREDIT MEMO)
// IF NOT 'ALL' ITEMS
//**TOTMISC := CALC_TOTMISC( CUR_MAST, MORDER_NUM )
TOTMISC := CALC_TOTMISC( CUR_MAST, MORDER_NUM , .T.) //** P3N - 1/11/99
IF !EMPTY( (CUR_MAST)->NOTES )
DO_LINES := .T.
ENDIF
IF WHCHORDER <> 'INV' .AND. DO_LINES
IF TOTMISC <> 0 .AND. ;
(SUBTYPE = 'DELIVERY' .OR. SUBTYPE = 'ORDERDESK' ) //** P3N - 1/15/99
//** (SUBTYPE = 'DELIVERY' .OR. SUBTYPE = 'ORDERDESK' .OR. SUBTYPE = 'BACKORD')
ELSEIF !EMPTY(TOTMISC) .AND. SUBTYPE = 'BACKORD' //** P3N - 1/15/99
IF MISCSHIPPED(MORDER_NUM, PARTIAL_INVOICE, REPRINT_INVOICE)
//** P3N - 1/15/99 CHECK FOR MISC ORDER LINES ITEMS ON BACKORDER
MISC_ARR := BLD_MISCORD('TORD_LINES', {}, {}, 0, ;
.F., .F., .F., WHCHORDER, , , .T., SUBTYPE )
IF EMPTY(MISC_ARR[4]) //** P3N - 1/15/99
DO_LINES := .F. //** P3N - 12/04/01
FOR I := 1 TO LEN(PRN_ARR) //** P3N - 12/04/01
// DO BKO COPY IF NO MISC BUT BKO QTY > 0
IF PRN_ARR[I,7] > 0 .OR. !EMPTY(PRN_ARR[I,13]) //** ONLY PRINT BKO IF QTY > 0
DO_LINES := .T. //** OR CUT SPECS
EXIT //** P3N - 12/04/01
ENDIF //** P3N - 12/04/01
NEXT //** P3N - 12/04/01
IF DO_LINES //** P3N - 12/04/01
//** NO MISC BKO ITMS BUT WE HAVE OTHER BKO ITEMS TO PROCESS
ELSE //** P3N - 12/04/01
RETURN //** P3N - 12/04/01
ENDIF //** P3N - 12/04/01
ENDIF //** P3N - 1/15/99
ENDIF //** P3N - 1/15/99
ELSE //** P3N - 1/15/99
DO_LINES := .F.
FOR I := 1 TO LEN(PRN_ARR)
// ONLY PRINT PRODUCTION,ETC IF QTY > 0
IF PRN_ARR[I,7] > 0 .OR. !EMPTY(PRN_ARR[I,13]) // ONLY PRINT PRODUCTION,ETC IF QTY > 0
DO_LINES := .T. // NOT A CREDIT MEMO OR CUT SPECS
EXIT
ENDIF
NEXT
ENDIF
ENDIF
IF !DO_LINES
RETURN
ENDIF
// INVOICE SHOULD NOT PRINT ANY ITEMS
// WHICH CAME FROM THE 'ADDL_LINES' FILE.
// ARE THERE ANY PRODUCTION ITEMS TO PRINT AT THIS LOCATION ???
IF WHCHORDER == 'PROD' .AND. WHICH_TYPE <> 'CTRL'
IF EMPTY(ASCAN(PRN_ARR,{|X| X[1] == WHCH_LOCATION }))
RETURN
ENDIF
ENDIF
// ARE THERE ANY IC ORDER ITEMS TO PRINT AT THIS LOCATION ???
IF WHCHORDER == 'OD' .AND. WHICH_TYPE == 'PO'
IF EMPTY(ASCAN(PRN_ARR,{|X| X[1] == WHCH_LOCATION }))
RETURN
ENDIF
ENDIF
// ARE THERE ANY PRODUCTION FRAME ITEMS TO PRINT ???
IF AT('FRAME', WHICH_TYPE) > 0
FOR I := 1 TO LEN(PRN_ARR)
IF PRT_FRAME(WHICH_TYPE, PRN_ARR[I,10])
PRINTFRAME := .T.
ENDIF
NEXT
IF PRINTFRAME
// FRAME COPY FOUND TO PRINT - CONTINUE PROCESSING!
ELSE
RETURN
ENDIF
ENDIF
PHEAD_ARR := BLD_HEAD(MORDER_NUM, WHICH_TYPE, WHCH_LOCATION, ;
WHCHORDER, SUBTYPE )
IF (WHICH_TYPE == 'INV' .AND. CUR_MAST == 'ORD_MAST') .OR. ; //**P3N - 11/24/98
WHICH_TYPE == 'BACKORD' //**P3N - 2/23/99
//** P3N -11/19/98 - INVOICE PROCESSING?
IF EMPTY((CUR_MAST)->ORDER_ORG)
//** P3N -11/19/98 THIS ORDER WAS NOT CREATED FROM A PARTIAL INVOICE?
ELSE
DIDFST := .T.
//** THIS ORDER WAS CREATED FROM A PARTIAL INVOICE?
AADD(PBODY_ARR, '^' + SPACE(14) + 'BACKORDER FROM ORDER# ' + (CUR_MAST)->ORDER_ORG )
AADD(PAMTS_ARR, NIL)
ENDIF
IF EMPTY((CUR_MAST)->ORDER_NEW)
//** P3N -11/19/98 THIS ORDER IS NOT A PARTIAL INVOICE?
ELSE
DIDFST := .T.
//** THIS ORDER IS A PARTIAL INVOICE?
AADD(PBODY_ARR, '^' + SPACE(14) + 'BACKORDERED ITEMS ON ORDER# ' + (CUR_MAST)->ORDER_NEW )
AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
// ONCE FOR EACH LINE ITEM RECORD
LAST_PAMT := 0
FOR I := 1 TO LEN(PRN_ARR)
IF EMPTY(PRN_ARR[I,2])
LOOP
ENDIF
//** IF THIS IS A FRAME COPY ARE THERE ANY STORM DOORS(STD) OR PIN-ONS(PWS)?
IF AT('FRAME', WHICH_TYPE) > 0
IF PRT_FRAME(WHICH_TYPE, PRN_ARR[I,10])
ELSE
LOOP
ENDIF
ENDIF
INCL_ALL_LINES := .T.
IF (WHICH_TYPE == 'INV' .OR. WHICH_TYPE == 'CTRL') .AND. WHCHORDER <> 'PROD'
//** LET INVOICE AND CTRL COPIES PRINT REGARDLESS OF MFG. LOC
ELSEIF WHCHORDER == 'BACKORD'
//** P3N - 5/1/98 - LET BACKORDERS PRINT REGARDLESS OF MFG. LOC
ELSEIF PRN_ARR[I,1] == WHCH_LOCATION
// FOR ALL COPIES EXCEPT "INV" & "CTRL"
// ONLY PRINT ITEMS FOR GIVEN LOCATION
ELSEIF PRN_ARR[I,15] //DO_SCRNS_ONLY regardless of the MFG location
IF MHOME_LOC_CODE = 'KC' //FOR KANSAS CITY(KC) ONLY !!!!!!! 6-18-97
LOOP
ENDIF
ELSEIF WHICH_TYPE == 'CTRL' .AND. WHCHORDER == 'PROD'
INCL_ALL_LINES := .T.
ELSE
LOOP
ENDIF
IF LASTDESC = NIL
LASTDESC := PRN_ARR[I,2]
ENDIF
IF EMPTY(LASTMODEL)
LASTMODEL := PRN_ARR[I,10] //SAVE THE PRODUCT MODEL
LASTBKOM := MPROD_SUMMARY(LASTMODEL) //** P3N - 2/02/99
ENDIF
BKOMODEL := MPROD_SUMMARY(PRN_ARR[I,10]) //** P3N - 2/02/99
//** DISCOUNT MODIFICATIONS - 10-7-97
IF (WHICH_TYPE == 'INV' .OR. WHICH_TYPE == 'CTRL')
IF LASTMODEL == PRN_ARR[I,10]
ELSEIF PRINT_DISC(PRN_ARR, LASTMODEL) //PRINT A DISCOUNT%
DISC_ARR := GETDISCTOT(PRN_ARR, I-1)
PRT_DISC_ARR := PRNT_DISCOUNTS( DISC_ARR, WHCHORDER, SUBTYPE)
FOR ELM := 1 TO LEN(PRT_DISC_ARR)
AADD(PBODY_ARR, PRT_DISC_ARR[ELM] )
AADD(PAMTS_ARR, {})
CNT_LI_DISC := CNT_LI_DISC + 1
NEXT
ENDIF
ENDIF
//** P3N - 2/02/99
IF ( INCL_ALL_LINES .AND. !(LASTBKOM == BKOMODEL) .AND. ; //** P3N - 2/02/99
WHCHORDER == 'BACKORD' .AND. SUBTYPE == 'SCREENS' ) //** P3N - 2/02/99
NUMBRK ++
IF NUMPRNT > 1 .AND. MHOME_LOC_CODE <> 'IOLA' ; // DARLENE 8-21-96
.AND. MHOME_LOC_CODE <> 'LINDS' // LINDA 8-23-96
IF WHCHORDER == 'BACKORD' //** P3N - 9/22/98 HAPPY BDAY CINDY
IF MHOME_LOC_CODE = 'PAWNEE' //** P3N 2-23-99
AADD(PBODY_ARR,SPACE(5)+'-----') //** P3N - 2/23/99
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(5)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
ELSE //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(9)+'-----') //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR,SPACE(9)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
ENDIF //** P3N - 2/23/99
ELSE //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, STR(SUBPRNT,4) )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
ENDIF //** P3N - 9/22/98 HAPPY BDAY CINDY
ENDIF
SUBPRNT := 0
NUMPRNT := 0
//**IF !(LASTDESC == PRN_ARR[I,2]) .AND. INCL_ALL_LINES
ELSEIF ( INCL_ALL_LINES .AND. !(LASTDESC == PRN_ARR[I,2]) .AND. ;
(WHCHORDER == 'BACKORD' .AND. SUBTYPE <> 'SCREENS' .OR. ; //** P3N - 2/02/99
WHCHORDER <> 'BACKORD' ) ) //** P3N - 2/02/99
NUMBRK ++
IF NUMPRNT > 1 .AND. MHOME_LOC_CODE <> 'IOLA' ; // DARLENE 8-21-96
.AND. MHOME_LOC_CODE <> 'LINDS' // LINDA 8-23-96
IF WHCHORDER == 'BACKORD' //** P3N - 9/22/98 HAPPY BDAY CINDY
IF MHOME_LOC_CODE = 'PAWNEE' //** P3N 2-23-99
AADD(PBODY_ARR,SPACE(5)+'-----') //** P3N - 2/23/99
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(5)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
ELSE //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(9)+'-----') //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR,SPACE(9)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
ENDIF //** P3N - 2/23/99
ELSE //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, STR(SUBPRNT,4) )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
ENDIF //** P3N - 9/22/98 HAPPY BDAY CINDY
ENDIF
SUBPRNT := 0
NUMPRNT := 0
ENDIF
RETARR := BLD_BODY(PRN_ARR[I], WHICH_TYPE, WHCH_LOCATION, ;
PBODY_ARR, PAMTS_ARR, WHCHORDER, SUBTYPE, ;
INCL_ALL_LINES, DO_CUT_SPECS, PARTIAL_INVOICE, REPRINT_INVOICE )
LI_AMTDON := RETARR[1]
PBODY_ARR := RETARR[2]
PAMTS_ARR := RETARR[3]
IF INCL_ALL_LINES
LI_TOTALS := LI_TOTALS + LI_AMTDON
NUMX := PRN_ARR[I,12] + 1 // TOTAL WINDOWS PER UNIT (XTRA WIND + 1)
// LINE ITEM QUANTITY
LAST_PAMT ++
THIS_NUM := 0
FOR III := LAST_PAMT TO LEN(PAMTS_ARR)
IF WHCHORDER == 'BACKORD' //** P3N - 9/22/98 HAPPY BDAY CINDY
IF EMPTY(PAMTS_ARR[III]) //** P3N - 9/22/98 HAPPY BDAY CINDY
ELSEIF EMPTY(PAMTS_ARR[III,3])
ELSE
THIS_NUM := THIS_NUM + (PAMTS_ARR[III,3])
ENDIF
ELSE
IF EMPTY(PAMTS_ARR[III])
ELSEIF EMPTY(PAMTS_ARR[III,1])
ELSE
THIS_NUM := THIS_NUM + (PAMTS_ARR[III,1])
ENDIF
ENDIF
NEXT
LAST_PAMT := LEN(PAMTS_ARR)
NUMPRNT := NUMPRNT + THIS_NUM
// ACTUAL WINDOWS QUANTITY ( 1 TWIN = 2 WINDOWS TOTAL )
SUBPRNT := SUBPRNT + (THIS_NUM * NUMX)
TOTPRNT := TOTPRNT + (THIS_NUM * NUMX)
ENDIF
LASTDESC := PRN_ARR[I,2]
LASTMODEL := PRN_ARR[I,10] //SAVE THE PRODUCT MODEL - 10-7-97
LASTBKOM := BKOMODEL //** P3N - 2/02/99
NEXT
//** DISCOUNT MODIFICATIONS - 10-7-97
IF (WHICH_TYPE == 'INV' .OR. WHICH_TYPE == 'CTRL')
IF PRINT_DISC(PRN_ARR, LASTMODEL) //PRINT A DISCOUNT%
DISC_ARR := GETDISCTOT(PRN_ARR, I-1)
PRT_DISC_ARR := PRNT_DISCOUNTS( DISC_ARR, WHCHORDER, SUBTYPE)
FOR ELM := 1 TO LEN(PRT_DISC_ARR)
AADD(PBODY_ARR, PRT_DISC_ARR[ELM] )
AADD(PAMTS_ARR, {})
CNT_LI_DISC := CNT_LI_DISC + 1
NEXT
ENDIF
ENDIF
IF NUMPRNT > 1 .AND. SUBPRNT <> 0 .AND. MHOME_LOC_CODE <> 'IOLA' ; // DARLENE 8-21-96
.AND. MHOME_LOC_CODE <> 'LINDS' // LINDA 8-23-96
IF WHCHORDER == 'BACKORD' //** P3N - 9/22/98 HAPPY BDAY CINDY
IF MHOME_LOC_CODE = 'PAWNEE' //** P3N 2-23-99
AADD(PBODY_ARR,SPACE(5)+'-----') //** P3N - 2/23/99
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(5)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 2/23/99
ELSE //** P3N - 2/23/99
AADD(PBODY_ARR,SPACE(9)+'-----') //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR,SPACE(9)+STR(SUBPRNT,4))
AADD(PAMTS_ARR, {}) //** P3N - 9/22/98 HAPPY BDAY CINDY
ENDIF //** P3N - 2/23/99
ELSE //** P3N - 9/22/98 HAPPY BDAY CINDY
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, STR(SUBPRNT,4) )
AADD(PAMTS_ARR, {})
ENDIF //** P3N - 9/22/98 HAPPY BDAY CINDY
NUMBRK ++
ENDIF
// MISC PRINTING
IF WHCHORDER = 'BACKORD' .AND. SUBTYPE == 'BACKORD' //** P3N - 7/7/98
PRT_BO := .T. //** P3N - 9/24/98
//** ORDER MISC(CGW0OMI) MISC ORDER LINE ITEMS BO PRINT
MISC_ARR := BLD_MISCORD('TORD_LINES', PBODY_ARR, PAMTS_ARR, LI_TOTALS, ;
PRT_AMT, DIDFST, PRT_BO, WHCHORDER, ;
PARTIAL_INVOICE, REPRINT_INVOICE, ,SUBTYPE )
PBODY_ARR := MISC_ARR[1]
PAMTS_ARR := MISC_ARR[2]
LI_TOTALS := MISC_ARR[3]
//** ORDER MASTER(CGW0OM) MISC ITEMS (SCREEN 2115) BO PRINT
MISC_ARR := BLD_ORDMISC( PBODY_ARR, PAMTS_ARR, LI_TOTALS, PRT_AMT, PRT_BO, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE )
PBODY_ARR := MISC_ARR[1]
PAMTS_ARR := MISC_ARR[2]
LI_TOTALS := MISC_ARR[3]
MISC_ARR := {{}} //** P3N - 12/2/98
ELSEIF WHCHORDER = 'INV' ; //INVOICE
.OR. (WHCHORDER = 'OD' .AND. WHICH_TYPE = 'CTRL'); //OD CTRL & DELIVERY
.OR. (WHCHORDER = 'PROD' .AND. WHICH_TYPE = 'CTRL') //GOLDEN ROD
PRT_BO := .F. //** P3N - 9/24/98
IF WHCHORDER = 'INV' .AND. CUR_MAST = 'ORD_MAST' //** P3N - 9/24/98
PRT_BO := .T. //** P3N - 9/24/98
ENDIF //** P3N - 9/24/98
PRT_AMT := DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
MISC_ARR := BLD_MISCORD(CUR_MISC, PBODY_ARR, PAMTS_ARR, LI_TOTALS, ;
PRT_AMT, DIDFST, PRT_BO, WHCHORDER, ;
PARTIAL_INVOICE, REPRINT_INVOICE, ,SUBTYPE )
PBODY_ARR := MISC_ARR[1]
PAMTS_ARR := MISC_ARR[2]
LI_TOTALS := MISC_ARR[3]
//** P3N -11/25/98 - INVOICE PROCESSING
M1 := (CUR_MAST)->MISC_QTY1
M2 := (CUR_MAST)->MISC_QTY2
M3 := (CUR_MAST)->MISC_QTY3
L1 := (CUR_MAST)->MISC_AMT1
L2 := (CUR_MAST)->MISC_AMT2
L3 := (CUR_MAST)->MISC_AMT3
MTOT := (M1*L1) + (M2*L2) + (M3*L3)
//** PARTIAL / REPRINT INVOICE
//** IF PARTIAL INVOICE S1, S2, S3 ARE SHIP QTYS
//** IF REPRINT INVOICE I1, I2, I3 ARE INV QTYS
MISC_ARR := GETQTYMISC(MORDER_NUM, PARTIAL_INVOICE, REPRINT_INVOICE)
FOR I := 1 TO LEN(MISC_ARR[1])
IF MISC_ARR[1,I,5] == 'ORDMISC1'
S1 := MISC_ARR[1,I,3] //** SHIP QTY
I1 := MISC_ARR[1,I,6] //** INV QTY
A1 := MISC_ARR[1,I,4] //** ITEM PRICE
ELSEIF MISC_ARR[1,I,5] == 'ORDMISC2'
S2 := MISC_ARR[1,I,3] //** SHIP QTY
I2 := MISC_ARR[1,I,6] //** INV QTY
A2 := MISC_ARR[1,I,4] //** ITEM PRICE
ELSEIF MISC_ARR[1,I,5] == 'ORDMISC3'
S3 := MISC_ARR[1,I,3] //** SHIP QTY
I3 := MISC_ARR[1,I,6] //** INV QTY
A3 := MISC_ARR[1,I,4] //** ITEM PRICE
ENDIF
NEXT
//** STOT CONTAINS THE TOTAL AMOUNT OF SHIPPED ITEMS
STOT := (S1*A1) + (S2*A2) + (S3*A3)
//** ITOT CONTAINS THE TOTAL AMOUNT OF INVOICED ITEMS
ITOT := (I1*A1) + (I2*A2) + (I3*A3)
//** CALC BO AMTS
B1 := M1 - S1 //** P3N - 11/25/98
B2 := M2 - S2 //** P3N - 11/25/98
B3 := M3 - S3 //** P3N - 11/25/98
IF (CUR_MAST)->MISC_QTY1 <> 0 .OR. ;
(CUR_MAST)->MISC_QTY2 <> 0 .OR. ;
(CUR_MAST)->MISC_QTY3 <> 0
IF PARTIAL_INVOICE
LI_TOTALS := LI_TOTALS + STOT
ELSEIF REPRINT_INVOICE
LI_TOTALS := LI_TOTALS + ITOT
ELSE
LI_TOTALS := LI_TOTALS + MTOT
ENDIF
IF NUMPRNT > 1 .AND. SUBPRNT <> 0 .AND. MHOME_LOC_CODE <> 'IOLA' ; // PER DARLENE 8-22-96
.AND. MHOME_LOC_CODE <> 'LINDS' // PER LINDA 8-23-96
AADD(PBODY_ARR, '-----' )
AADD(PAMTS_ARR, {})
ENDIF
//**P3N - 11/24/98 ALREADY EXECUTED ABOVE - 40 or 45 LINES
//**PRT_AMT := DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
//** P3N - 11/25/98
IF (CUR_MAST)->MISC_QTY1 <> 0
PAMTS := { M1,B1,S1, L1, PRT_AMT, PRT_BO, 0, , I1 }
AADD(PBODY_ARR, '^' + (CUR_MAST)->MISC_ITEM1)
AADD(PAMTS_ARR, PAMTS )
ENDIF
IF (CUR_MAST)->MISC_QTY2 <> 0
AADD(PBODY_ARR, ' ' ) //*DBL SPACE MISC ITEMS ON ORDER - PER ELLEN 7-31-97
AADD(PAMTS_ARR, {})
PAMTS := { M2,B2,S2, L2, PRT_AMT, PRT_BO, 0, , I2 }
AADD(PBODY_ARR, '^' + (CUR_MAST)->MISC_ITEM2 )
AADD(PAMTS_ARR, PAMTS )
ENDIF
IF (CUR_MAST)->MISC_QTY3 <> 0
AADD(PBODY_ARR, ' ' ) //*DBL SPACE MISC ITEMS ON ORDER - PER ELLEN 7-31-97
AADD(PAMTS_ARR, {})
PAMTS := { M3,B3,S3, L3, PRT_AMT, PRT_BO, 0, , I3 }
AADD(PBODY_ARR, '^' + (CUR_MAST)->MISC_ITEM3 )
AADD(PAMTS_ARR, PAMTS )
ENDIF
ENDIF
ENDIF
IF TOTPRNT <> 0 .AND. MHOME_LOC_CODE <> 'XXXX' ; // darlene 8-22-96
.AND. MHOME_LOC_CODE <> 'KC' // EDNA on 3-28-96
IF PRODUCT->(FIELDPOS('ORD_TOTALS')) > 0 //** P3N - 4/7/99
IF AT('S', PRODUCT->ORD_TOTALS) > 0 .AND. ; //** P3N - 4/7/99
WHICH_TYPE == 'STORM' //** P3N - 4/7/99
SUPPRESS_TOT := .T. //** P3N - 4/7/99
ENDIF //** P3N - 4/7/99
ENDIF //** P3N - 4/7/99
IF SUPPRESS_TOT //** P3N - 4/7/99
ELSEIF INT(TOTPRNT) = TOTPRNT
AADD(PBODY_ARR, '=====' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, STR(TOTPRNT,4) + ' Total' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, '=====' )
ELSE
AADD(PBODY_ARR, '========' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, STR(TOTPRNT,7,2) + ' Total' )
AADD(PAMTS_ARR, {})
AADD(PBODY_ARR, '========' )
ENDIF
AADD(PAMTS_ARR, {})
ENDIF
IF EMPTY(CNT_LI_DISC)
LI_DISC_PRNT := .F.
ELSE
LI_DISC_PRNT := .T.
ENDIF
PTAIL_ARR := BLD_TAIL(MORDER_NUM, WHCHORDER, LI_TOTALS, WHICH_TYPE, ;
SUBTYPE, LI_DISC_PRNT, PARTIAL_INVOICE, MISC_ARR, ;
PRT_BO, REPRINT_INVOICE )
//** PAMTS_ARR := RETVARARR[2]
IF WHCHORDER = 'BACKORD' //** P3N - 9/2/98
//** PRINT THE TAIL(ORD_MAST->BO_NOTES) INFO FOR BACKORDERS
ELSEIF PRT_AMT
ELSE //DO NOT PRINT AMOUNTS NO PTAIL_ARR - EXEC BLD_TAIL TO UPD GL_ARR
IF (CUR_MAST)->QUOTE_PRIC = 0 //NOT A QUOTED ORDER!!
IF WHCHORDER = 'INV' .OR. WHCHORDER = 'OD' .OR. ;
(WHCHORDER = 'PROD' .AND. WHICH_TYPE = 'CTRL') //** P3N - 12/3/98
**//** ADDED THE "OD" CHECK 9-30-97
// ON AN INVOICE / OD / DEL / GOLDEN ROD PRINT
// TOTALS OR NONTX ITEMS - IF PRESENT.
ELSE
PTAIL_ARR := {}
ENDIF
ENDIF
ENDIF
IF EMPTY(PBODY_ARR)
AADD(PBODY_ARR, '^' )
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
AADD(PAMTS_ARR, NIL)
ENDIF
PRT_GL_INFO := PRNT_ACCT_INFO( WHCHORDER, WHICH_TYPE, SUBTYPE )
PROCESS_OO(PHEAD_ARR, PBODY_ARR, PTAIL_ARR, PAMTS_ARR, SUBTYPE, ;
PRT_GL_INFO, WHCHORDER, PARTIAL_INVOICE, REPRINT_INVOICE, OUTMODE)
RETURN
****************************************************************
* Format the line item discount pct and amount
****************************************************************
//** DISCOUNT MODIFICATIONS - 10-7-97
FUNCTION PRNT_DISCOUNTS(DISC_ARR , WHCHORDER, SUBTYPE)
LOCAL DISC_PCT, I, DISC_TOTAL, RETARR := {}, RETVAL
LOCAL SP4 := SPACE(07)+'(', SP5 := SPACE(06)+'('
LOCAL SP6 := SPACE(05)+'(', SP7 := SPACE(04)+'('
LOCAL SP9 := SPACE(02)+'(', SP8 := SPACE(03)+'('
FOR I := 1 TO LEN(DISC_ARR)
DISC_PCT := DISC_ARR[I,2]
//** RETVAL := SPACE(10) + STR(DISC_PCT, 3,0) + '% ' //** P3N - 09/27/11
RETVAL := SPACE(08) + STR(DISC_PCT, 5,2) + '% ' //** P3N - 09/27/11
IF LEN(DISC_ARR) = 1
RETVAL := RETVAL + 'Total Discount' + SPACE(19)
ELSE
RETVAL := RETVAL + 'Discount for ' + DISC_ARR[I,4] //ENTRY SIZE
ENDIF
RETVAL := PADL(TRIM(RETVAL), 48, ' ')
DISC_TOTAL := DISC_ARR[I,3]
IF DISC_TOTAL < 0 //** P3N - 4/3/98 DISCOUNT CHARGE BACK
RETVAL := RETVAL + STR(DISC_TOTAL * -1, 12, 2)
ELSEIF DISC_TOTAL > 99999.99
RETVAL := RETVAL + SP9 + STR(DISC_TOTAL, 9,2) + ')'
ELSEIF DISC_TOTAL > 9999.99
RETVAL := RETVAL + SP8 + STR(DISC_TOTAL, 8,2) + ')'
ELSEIF DISC_TOTAL > 999.99
RETVAL := RETVAL + SP7 + STR(DISC_TOTAL, 7,2) + ')'
ELSEIF DISC_TOTAL > 99.99
RETVAL := RETVAL + SP6 + STR(DISC_TOTAL, 6,2) + ')'
ELSEIF DISC_TOTAL > 9.99
RETVAL := RETVAL + SP5 + STR(DISC_TOTAL, 5,2) + ')'
ELSE
RETVAL := RETVAL + SP4 + STR(DISC_TOTAL, 4,2) + ')'
ENDIF
IF MHOME_LOC_CODE = 'KC'
RETVAL := SPACE(22) + RETVAL
ELSEIF MHOME_LOC_CODE = 'IOLA'
RETVAL := SPACE(19) + RETVAL
ELSEIF MHOME_LOC_CODE = 'LINDS'
RETVAL := SPACE(21) + RETVAL
ELSEIF MHOME_LOC_CODE = 'PAWNEE'
RETVAL := SPACE(19) + RETVAL
ENDIF
AADD(RETARR, RETVAL)
NEXT
IF DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
// IF AMOUNTS TO PRINT; RETURN THE DISCOUNT ARRAY!
ELSE
RETARR := {}
ENDIF
RETURN RETARR
****************************************************************
****************************************************************
****************************************************************
FUNCTION IS_COD( TERMCODE )
IF ASCAN( MCOD_ARR, { |X| ALLTRIM( X ) == ALLTRIM( TERMCODE ) } ) > 0
RETURN .T.
ELSE
RETURN .F.
ENDIF
****************************************************************
* FIND IF ANY ELEMENTS FOR LOCATION TO PRINT
****************************************************************
FUNCTION SCAN_PRNARR(PRN_ARR, WHCH_LOCATION)
LOCAL ELEM := ASCAN (PRN_ARR, {|X| ALLTRIM(X[1]) == ALLTRIM(WHCH_LOCATION) } )
IF ELEM > 0
RETURN .T.
ELSE
RETURN .F.
ENDIF
****************************************************************
* READ THE LINE FILE( ORD_LINES/ADDL_LINES) AND PUT ALL APPLICABLE
* DATA INTO AN ARRAY FOR LATER USE AND PRINTING
****************************************************************
FUNCTION GET_ORD_DATA( MORDER_NUM, SELFILE, PARTIAL_INVOICE, REPRINT_INVOICE )
LOCAL DATA_ARR := {}, DISC_ARR, ITEM_LINE, MLOC_CODE, PRNT_ARR, DISC_PCT
LOCAL PRNT_DESARR, PRNT_DESC, PROD_MEMO, RAN_SLID := .F., MGL_LINE_DESC := ''
LOCAL ITEM_CAT_CODE, CALC_VAR, AMTVAR, GLASS_COPY, ADDL_MODE
LOCAL PAR_CAT_CODE, SCRNSIZE,I, WHERE_FROM, PROD_CAT_CODE, EQL_PRNT
LOCAL SV_SEL := SELECT(), MLINE, MLOC_FILE, SEEKKEY, OPTFILE
LOCAL FULL_HT, FULL_WD, HALF_HT, HALF_WD, FULL_ITEM, HALF_ITEM
LOCAL PROD_LINE, GLASS_LINE, EXP_LINE, PO_LINE, SASH_LINE, SCREEN_LINE
LOCAL FACT, HS_PRNT, PRNT_EXP, GLASS_PRNT, STORM_PRNT, FSARR := {}
LOCAL OR_TOP := 0, OR_BOT := 0, OR_ARR := {}, OR_VAL, OR_DEC := 0
LOCAL OR_SCR := 0, EX_DESC:= '', DEFAULT_ORIEL := .F., BALANCE_SIZE
LOCAL OR_DESC:= '', ODD_ORIEL, ELEM, OR_GLASS := 0, O_GLASS_DESC := ''
LOCAL MGL_NUM, MGL_AMT, EXP_REQ, ADDIT, SEEKPROD, SIZE_ARR, MNUM_GLASS
LOCAL MULL_REQ := .F., MULL_TYPE, MULL_ARR, S_REC, NUMMULLS, WKL_AMT := 0
LOCAL EXP_WK_WIDTH := 0, ADJ_WK_WIDTH := 0, ADJ_WK_HEIGHT := 0
LOCAL DEL_CHG := 0, WORKVAR, IS_ALWAYS_SLID := .F., STDADJ := 0
LOCAL XFACTOR := 0, _DISC_INFO, THIS_DISC, FLANKSCR := {.F., ''}
LOCAL GB_CHUNK := '', GLT_WD, GLT_HT, DO_GLASS_PRNT, GLB_WD, GLB_HT
LOCAL GLT_QTY, GLB_QTY, WK_QTY, OR_REASON, PR_CUSTID, MLINE_DESC
LOCAL BAL_INFO, TOTWIND, CUT_SPEC_ARR, WORKSPECS, RETVAL := {}
LOCAL G_ARR := {}, MCODE, MLINE_NUM, MNUM_SCREEN, PAR_LOC_CODE
LOCAL MWORK_DESC := '', GL311AMT, FRENCHDOOR, ADJ_HT, GETFLANK
LOCAL DO_SCRNS_ONLY := .F., BYPASS_SCREEN_PAR := .F., WKSPRICE := 0
LOCAL MPWHERE := 'U' //DEFAULT Line Notes to print UNDER the line item!
LOCAL SHP_QTY := 0, INV_QTY := 0, QTYARR := {}, BO_ITEM := ''
LOCAL CK_BKO_SCRNS := .F., SCRNINFO := {} //** P3N - 6/30/98
LOCAL FLNKSPECS := {}, PARORD, PARLINE //** P3N - 7/21/99 HAPPY BDAY DANIEL
STATIC PARGARR := {}, PARPROD, PARELM //** P3N - 7/21/99 HAPPY BDAY DANIEL
IF SELFILE == CUR_OL
WHERE_FROM := 'OL'
ADDL_MODE := .F.
OPTFILE := CUR_OO
ELSEIF SELFILE == CUR_XL
WHERE_FROM := 'XL'
ADDL_MODE := .T.
OPTFILE := CUR_XO
ENDIF
FOR I := 1 TO 11 // 11 TYPES OF OUTPUT FORMS
AADD(DATA_ARR, {}) // 1-Production
NEXT // 2-frame
// 3-sash
// 4-glass
// 5-screen
// 6-storms
// 7-invoice (customer)
// 8-expander
// 9-control desk
//10-SCREENS(when NOT at mfg. loc)
//11-storms (when NOT at mfg. loc)
// FILL ARRAY WITH 14-ELEMENTS CONTAINING
// 1. LOC CODE MLOC_CODE
// 2. DESCRIPTION PRNT_DESC
// 3. ITEM LINE PRINT VALUE - NO $ AMOUNTS ITEM_LINE
// 4. SALE PRICE
// 5. DISCOUNT PCT/AMOUNT ARRAY
// 6. MEMO NOTES PROD_MEMO
// 7. QUANTITY
// 8. WHERE DID ALL THE INFO COME FROM (IE: "OL" OR "XL")
// 9. LINE_NUM
//10. PROD_CODE
//11. SHP_QTY // ORDER SHIP QTY
//12. EXTRA WINDOWS
//13. cut spec array
//14. line_desc FOR USE ON GLASS / SCREEN COPIES at kansas city
//15. flag indicating print SCREEN ONLY regardless of the MFG Location
//16. flag indicating print notes above size prod_line(item_line)
// Print-'U ' = UNDER LINE, 'A' = ABOVE LINE, 'B' = Beside the LINE
//17. INV_QTY // ORDER INVOICE QTY
//
SELECT (SELFILE)
SEEK MORDER_NUM
DO WHILE ORDER_NUM = MORDER_NUM .AND. !EOF()
IF ADDL_MODE
// POINT TO PARENT ORDER LINE RECORD
(CUR_OL)->(DBSEEK( (SELFILE)->ORDER_NUM + STR((SELFILE)->LINE_NUM,3) ) )
PAR_LOC_CODE := (CUR_OL)->LOC_CODE
ELSE
PAR_LOC_CODE := NIL
IF EMPTY(PRT_NOTES)
MPWHERE := 'U' // DEFAULT - print the notes under the line item
ELSE
MPWHERE := PRT_NOTES // Print the Line Item notes where ?????
// "A" print ABOVE line item
// "B" print BESIDE line item
// "U" print UNDER line item
ENDIF
ENDIF
MLINE := STR(LINE_NUM,3)
MLINE := TRIM(MLINE)
// NUMBER OF XTRA WINDOWS MULLED
IF ADDL_MODE
XFACTOR := 0
ELSE
XFACTOR := CK_XTRAWIND( SELFILE, OPTFILE, ADDL_MODE )
QTYARR := GET_OSTQTY(SELFILE, , PARTIAL_INVOICE, REPRINT_INVOICE) //** P3N - 5/1/98
IF EMPTY(QTYARR) //** P3N - 12/3/98
SHP_QTY := 0 //** P3N - 12/3/98
INV_QTY := 0 //** P3N - 12/3/98
ELSE //** P3N - 12/3/98
SHP_QTY := QTYARR[1] //** P3N - 12/3/98
INV_QTY := QTYARR[2] //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
ENDIF
IF !EMPTY(ALT_SPRICE) // WAS ALTERNATE PRICE USED?
AMTVAR := ALT_SPRICE
WKSPRICE := (SELFILE)->ALT_SPRICE //** P3N -08/17/11
ELSE
WKSPRICE := (SELFILE)->SALE_PRICE //** P3N -08/17/11
AMTVAR := SALE_PRICE
IF !ADDL_MODE // GET ANY AMTS DUE FOR NON STD ADDL ITEMS
SELECT (CUR_XL)
DONSETORD(3)
SEEK (SELFILE)->ORDER_NUM + STR((SELFILE)->LINE_NUM,3)
IF FOUND()
//** P3N - 11/24/98 ADDRESS ADDL LINE PRICING FOR MULTI QTY PRODS
//** AMTVAR := AMTVAR + SALE_PRICE
AMTVAR := AMTVAR + ( SALE_PRICE * XFACTOR )
ENDIF
DONSETORD(1)
SELECT (CUR_OL)
ENDIF
ENDIF
//** USE THE QUOTED PRICE FOR DEL CHARG CALCS BELOW
IF EMPTY((CUR_MAST)->QUOTE_PRIC) //** P3N - 08/17/11
//** NO QUOTED PRICE - CONTINUE W/LINE ITEM AMT IN WKSPRICE
ELSE //** P3N - 08/17/11
WKSPRICE := (CUR_MAST)->QUOTE_PRIC //** P3N - 08/17/11
ENDIF
_DISC_INFO := ITEMDISC(PARTIAL_INVOICE, REPRINT_INVOICE, SELFILE)
// P3N - PER ELLEN - 6/3/98
**IF EMPTY( (SELFILE)->ALT_SPRICE ) // DO NOT APPLY A DISCOUNT ON ALT PRICE!
DISC_PCT := (SELFILE)->DISCOUNT //LINE ITEM DISCOUNT PCT - USER ENTERED
IF EMPTY(DISC_PCT)
DISC_PCT := (SELFILE)->SYS_DISC //LINE ITEM DISCOUNT PCT - SYSTEM GENERATED
ENDIF
**ELSE
** DISC_PCT := 0
** _DISC_INFO[2] := 0
**ENDIF
DISC_ARR := {DISC_PCT, ; //LINE ITEM DISCOUNT PCT
_DISC_INFO[2], ; //LINE ITEM DISCOUNT AMT
(SELFILE)->ENTRY_SIZE, ; //ENTRY SIZE OF DISCOUNT ITEM
(SELFILE)->HOW_MEAS } //HOW MEASURE
SELECT PRODUCT
SEEK (SELFILE)->PROD_CODE
MGL_NUM := GL_NUM
MLOC_CODE := (SELFILE)->LOC_CODE
CUST_MAST->(DBSEEK((CUR_MAST)->CUST_ID ))
IF !EMPTY(CUST_MAST->GL_CODE)
MGL_NUM := ALLTRIM(MGL_NUM)+CUST_MAST->GL_CODE //** P3N - 02/01/07 ABW GL FOR INTER COMPANY
//**MGL_NUM := SUBS(MGL_NUM,1,2) + TRIM(SUBS(MGL_NUM,4)) + ' '+ CUST_MAST->GL_CODE
ENDIF
ITEM_CAT_CODE = GET_CATCODE( (SELFILE)->PROD_CODE)
PAR_CAT_CODE = GET_CATCODE( (SELFILE)->PAR_PROD)
SELECT (SELFILE)
PRNT_DESC := ALLTRIM((SELFILE)->ITEM_DESC)
IF AT('EXPANDER' , PRNT_DESC) > 0 ;
.AND. AT('NO~EXPANDER' , PRNT_DESC) = 0 ;
.AND. ( ITEM_CAT_CODE = 'STORMS' .OR. ITEM_CAT_CODE = 'STPW' .OR. ITEM_CAT_CODE = 'EXPANDR' ) //** P3N - 9/29/99
//**.AND. ( ITEM_CAT_CODE = 'STORMS' .OR. ITEM_CAT_CODE = 'STPW' ) //** P3N - 9/29/99
EXP_REQ := .T.
ELSE
EXP_REQ := .F.
ENDIF
// HEADER LINE FROM OPTIONS SELECTED
IF SELFILE = CUR_XL
(CUR_OL)->(DBSEEK( (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) ) )
ELSE // IF ORDER LINES, CHECK IF ANY NON-STD OPTION ADDL_LINES
//** P3N - 5/17/99 REDUNDANT OPTION INFORMATION PRINTING WHEN NOT NEEDED
//** COMMENTED OUT PER SCOTT IN KC
//**SELECT (CUR_XL)
//**SEEKKEY = (SELFILE)->ORDER_NUM
//**SEEK SEEKKEY
//**DO WHILE ORDER_NUM == (SELFILE)->ORDER_NUM .AND. !EOF()
//** IF LINE_NUM == (SELFILE)->LINE_NUM .AND. STD_OPTS$'N'
//** PRNT_DESC := PRNT_DESC + CHR(13) + CHR(10)
//** PRNT_DESC := PRNT_DESC + '**~(' + ;
//** ALLTRIM(ITEM_DESC) + ')~**'
//** ENDIF
//** SKIP 1
//**ENDDO
//**SELECT (SELFILE)
ENDIF
GLASS_COPY := IF( (SELFILE)->GLASSORDER='Y', .T., .F.)
SELECT (SELFILE)
ITEM_LINE := ''
IF ( (SELFILE)->HOW_MEAS = 'NS' .AND. EMPTY((SELFILE)->PAR_PROD));
.OR. (SELFILE)->HOW_MEAS = 'BW' .OR. ;
(SELFILE)->HOW_MEAS = 'WO' .OR. (SELFILE)->IN_STOCK$'Y'
ITEM_LINE := ITEM_LINE + ' ' + STRTRAN( ALLTRIM( (SELFILE)->ENTRY_SIZE ), ' ','~')
ELSE
ITEM_LINE := ITEM_LINE + SPACE(11)
ENDIF
IF (SELFILE)->(FIELDPOS('GLINE_DESC')) > 0 //** P3N - 6/7/99
MGL_LINE_DESC := TRIM((SELFILE)->GLINE_DESC) //** P3N - 6/7/99
ENDIF //** P3N - 6/7/99
SASH_LINE := ' ' //** P3N - 5/25/00
IF !EMPTY( (SELFILE)->LINE_DESC )
MLINE_DESC := ALLTRIM( (SELFILE)->LINE_DESC ) //** P3N - 5/2/00 CHANGED BACK FOR LINE ATTRIB OPTS
IF AT('I', (SELFILE)->LDESC_COPY ) > 0 //** P3N - 5/2/00 SASH COPY DESC
SASH_LINE := MLINE_DESC //** P3N - 5/2/00
ENDIF //** P3N - 5/2/00
//**MLINE_DESC := ALLTRIM( (SELFILE)->LINE_DESC )+' '+MGL_LINE_DESC //** P3N - 6/7/99
ITEM_LINE := ITEM_LINE + ' '
// 12-4-96 - SAVE LINE_DESC UNTIL LATER PER LINDA AT LINDS ??
ITEM_LINE := ITEM_LINE + '~' + MLINE_DESC + ' '
MLINE_DESC := ''
ELSE //** P3N - 6/7/99
IF EMPTY(ITEM_LINE) //** P3N - 6/9/99
ITEM_LINE := MGL_LINE_DESC //** P3N - 6/7/99
ELSE //** P3N - 6/9/99
//** ITEM_LINE := ITEM_LINE + MGL_LINE_DESC //** P3N - 6/9/99
ITEM_LINE := ITEM_LINE +'~~'+ MGL_LINE_DESC //** P3N -10/19/99
ENDIF //** P3N - 6/9/99
ENDIF
IF EMPTY( (SELFILE)->LINE_NOTES)
PROD_MEMO := NIL
ELSE
PROD_MEMO := (SELFILE)->LINE_NOTES
ENDIF
IF AMTVAR = 0 .AND. (CUR_MAST)->QUOTE_PRIC <> 0
//** P3N - 7/28/98 - PRINT THE CODING ON QUOTED ORDERS
//**MGL_AMT := (SELFILE)->QUANTITY * (SELFILE)->CALC_PRICE
MGL_AMT := (CUR_MAST)->QUOTE_PRIC
//** P3N - 12/7/98 PARTIAL INVOICE PROCESSING
ELSEIF PARTIAL_INVOICE //** P3N - 12/7/98
MGL_AMT := SHP_QTY * AMTVAR //** P3N - 12/7/98
ELSEIF REPRINT_INVOICE //** P3N - 12/7/98
MGL_AMT := INV_QTY * AMTVAR //** P3N - 12/7/98
ELSE
MGL_AMT := (SELFILE)->QUANTITY * AMTVAR
ENDIF
// CALC THE SYSTEM DEALER PICKUP DISCOUNT
// FILL THE GL_ARR WITH ALLOCATION INFORMATION
// 09-5-95 - EXCLUDE INTERCOMPANY LINES FROM DELIVERY CHARGE
// 09-5-95 - SHOULD ANY OTHERS BE EXCLUDED?
// 03-31-97 - EXCLUDE KC BUILD TO STOCK ITEMS.
IF MHOME_LOC_CODE = 'IOLA'
IF (CUR_MAST)->PICK_DEL$'D' ;
.AND. !(SELFILE)->PRICE_SHT$'I' ;
.AND. (CUR_MAST)->CUST_ID <> '20187000' //** KC LOCATION
CATEGORY->(DBSEEK( ITEM_CAT_CODE ))
IF EMPTY(CATEGORY->FRT_AMT) //** P3N - 08/08/11
//** USE THE CATEGORY PCT TO CALC DELIVERY CHARGE ON ORDER SUBTOTAL
//**DEL_CHG := (CATEGORY->FRT_PCT / 100 ) * (SELFILE)->SALE_PRICE
//**WKL_AMT := (SELFILE)->SALE_PRICE / (1+(CATEGORY->FRT_PCT / 100 ))
//**WKL_AMT := (SELFILE)->SALE_PRICE - WKL_AMT //** SINGLE ITEM DEL CHG
WKL_AMT := WKSPRICE / (1+(CATEGORY->FRT_PCT / 100 )) //** P3N - 08/17/11
WKL_AMT := WKSPRICE - WKL_AMT //** SINGLE ITEM DEL CHG //** P3N - 08/17/11
DEL_CHG := WKL_AMT * (SELFILE)->QUANTITY
ELSE
DEL_CHG := CATEGORY->FRT_AMT * (XFACTOR+1) * (SELFILE)->QUANTITY
ENDIF
ELSE
DEL_CHG := 0
ENDIF
ELSEIF MHOME_LOC_CODE = 'KC'
IF (CUR_MAST)->PICK_DEL$'D' ;
.AND. !(SELFILE)->PRICE_SHT$'I' ;
.AND. IS_DELIVERED() //IS THIS ORDER ASSESSED A DELIVERY CHARGE???
CATEGORY->(DBSEEK( ITEM_CAT_CODE ))
IF EMPTY(CATEGORY->FRT_AMT) //** P3N - 08/08/11
//** USE THE CATEGORY PCT TO CALC DELIVERY CHARGE ON ORDER SUBTOTAL
//** DEL_CHG := (CATEGORY->FRT_PCT / 100 ) * (SELFILE)->SALE_PRICE
//**WKL_AMT := (SELFILE)->SALE_PRICE / (1+(CATEGORY->FRT_PCT / 100 ))
//**WKL_AMT := (SELFILE)->SALE_PRICE - WKL_AMT //** SINGLE ITEM DEL CHG
WKL_AMT := WKSPRICE / (1+(CATEGORY->FRT_PCT / 100 )) //** P3N - 08/17/11
WKL_AMT := WKSPRICE - WKL_AMT //** SINGLE ITEM DEL CHG //** P3N - 08/17/11
DEL_CHG := WKL_AMT * (SELFILE)->QUANTITY
ELSE
DEL_CHG := CATEGORY->FRT_AMT * (XFACTOR+1) * (SELFILE)->QUANTITY
ENDIF
ELSE
DEL_CHG := 0
ENDIF
ELSEIF (CUR_MAST)->PICK_DEL$'D' ;
.AND. !(SELFILE)->PRICE_SHT$'I'
CATEGORY->(DBSEEK( ITEM_CAT_CODE ))
IF EMPTY(CATEGORY->FRT_AMT) //** P3N - 08/08/11
//** USE THE CATEGORY PCT TO CALC DELIVERY CHARGE ON ORDER SUBTOTAL
//**DEL_CHG := (CATEGORY->FRT_PCT / 100 ) * (SELFILE)->SALE_PRICE
//**WKL_AMT := (SELFILE)->SALE_PRICE / (1+(CATEGORY->FRT_PCT / 100 ))
//**WKL_AMT := (SELFILE)->SALE_PRICE - WKL_AMT //** SINGLE ITEM DEL CHG
WKL_AMT := WKSPRICE / (1+(CATEGORY->FRT_PCT / 100 )) //** P3N - 08/17/11
WKL_AMT := WKSPRICE - WKL_AMT //** SINGLE ITEM DEL CHG //** P3N - 08/17/11
DEL_CHG := WKL_AMT * (SELFILE)->QUANTITY
ELSE
DEL_CHG := CATEGORY->FRT_AMT * (XFACTOR+1) * (SELFILE)->QUANTITY
ENDIF
ELSE
DEL_CHG := 0
ENDIF
**********************************************************
* GL 521 IS THE DELIVERY CHARGE - LineItem category calc [$ frt_amt or % frt_pct]
**********************************************************
IF ADDL_MODE
// NO DELIVERY CHARGE ON ADDL LINE ITEM (XL)
ELSEIF EMPTY( (CUR_MAST)->FUEL_CHRG ) //** P3N - 08/08/11
IF DEL_CHG <> 0 .AND. MGL_AMT <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = '521 '} )
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+ DEL_CHG
ELSE //INCLUDE FOR ALLOC.
AADD(GL_ARR, { '521 ', DEL_CHG, , 'I' } )
ENDIF
ENDIF
ELSE
DEL_CHG := 0 //** P3N - 08/08/11
ENDIF
**********************************************************
* GL 311 IS THE INSTALLATION ADJ.
* GL 361 IS THE INSTALLATION ADJ (as of 02/01/07)
**********************************************************
GL311AMT := (SELFILE)->GL311_AMT + (SELFILE)->GL311_ADJ
IF GL311AMT <> 0 .AND. MGL_AMT <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = '361 '} ) //** P3N - 01/30/07
//**ELEM := ASCAN(GL_ARR, {|X| X[1] = '311 '} ) //** P3N - 01/30/07
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2]+ GL311AMT
ELSE //INCLUDE FOR ALLOC.
AADD(GL_ARR, { '361 ', GL311AMT, , 'I' } ) //** P3N - 01/30/07
//** AADD(GL_ARR, { '311 ', GL311AMT, , 'I' } ) //** P3N - 01/30/07
ENDIF
ENDIF
//* AMOUNT ALREADY ALLOCATED TO THE GL ACCT. FOR THE PRIMARY LINE ITEM!
IF ADDL_MODE
MGL_AMT := 0
ENDIF
//* AMOUNT ALLOCATED TO THE GL ACCT. FOR THE LINE ITEM
IF MGL_AMT <> 0
ELEM := ASCAN(GL_ARR, {|X| X[1] = MGL_NUM} )
// CHECK FOR USER LINE DISCOUNTS OR SYSTEM CALC DISCOUNTS
//** P3N - 11/24/98 - COMMENTED OUT BECAUSE IT IS ALREADY
//** EXECUTED ABOVE
//**_DISC_INFO := ITEMDISC()
THIS_DISC := _DISC_INFO[2]
IF ELEM > 0
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2] + MGL_AMT - THIS_DISC - DEL_CHG - GL311AMT
ELSE // PRODUCT ALLOC.
AADD(GL_ARR, { MGL_NUM + ' ' , MGL_AMT - THIS_DISC - DEL_CHG - GL311AMT , , 'P'} )
ENDIF
ENDIF
**** CHECK IF RANCH SLIDER, BECAUSE THE WIDTH/HEIGHT WILL BE REVERSED
**** FOR PRODUCTION PROCESSING
**** IF ALWAYS SLIDER (C900) THEN DON'T REVERSE, BUT HALF SIZE WIDTH
**** MAYBE don't check screens for sliders per darlene 6-23-95??
RAN_SLID := CK_SLIDER(SELFILE, OPTFILE, ADDL_MODE)
IS_ALWAYS_SLID := ALWAYS_SLIDER(SELFILE, OPTFILE, ADDL_MODE)
***** SPECIAL ORIEL PROCESSING HERE
ODD_ORIEL := .T.
OR_DESC := ''
O_GLASS_DESC := ''
OR_SCR := 0
OR_ARR := CK_ORIEL(ITEM_CAT_CODE, SELFILE, OPTFILE, ADDL_MODE, RAN_SLID, IS_ALWAYS_SLID )
OR_TOP := OR_ARR[1]
OR_BOT := OR_ARR[2]
BALANCE_SIZE := OR_ARR[3]
OR_REASON := OR_ARR[4]
OR_SCR := OR_ARR[5]
OR_GLASS := OR_ARR[6]
ODD_ORIEL := OR_ARR[7]
DEFAULT_ORIEL := OR_ARR[8]
STDADJ := 0 //** P3N - 07/05/01
IF (SELFILE)->HOW_MEAS == 'NS' //** P3N - 07/05/01
//** STD SIZE ADJ FOR NOM SIZE - PAWNEE RE: DARYL //** P3N - 07/05/01
STDADJ := OR_ARR[9] //** STD SIZE ADJ - NOM SIZE ONLY
ENDIF //** P3N - 07/05/01
// OR_REASON RESULTS
// 'BAL ADJ'
// 'NO ORIEL'
// 'ATT CODE'
// 'BAL ADJ'
// 'DEFAULT'
// EMPTY CUTTING SPECS FOR THIS LINE ITEM
IF !ADDL_MODE
CUT_SPEC_ARR := ACLONE(GET_CUT_SPEC( (SELFILE)->PROD_CODE ) )
CATEGORY->(DBSEEK( ITEM_CAT_CODE ) )
MCODE := (SELFILE)->PROD_CODE
ELSE
IF ITEM_CAT_CODE = 'EXPANDR' //** P3N - 9/29/99
CUT_SPEC_ARR := ACLONE(GET_CUT_SPEC( (SELFILE)->PROD_CODE, SELFILE, (SELFILE)->QUANTITY, XFACTOR, G_ARR)) //** P3N - 9/29/99
ELSE //** P3N - 9/29/99
CUT_SPEC_ARR := ACLONE(GET_CUT_SPEC( (SELFILE)->PAR_PROD ) )
ENDIF //** P3N - 9/29/99
CATEGORY->(DBSEEK( PAR_CAT_CODE ) )
MCODE := (SELFILE)->PAR_PROD
ENDIF
IF !EMPTY(CUT_SPEC_ARR) .OR. !EMPTY(CATEGORY->HS_RULE) // NEED GET_ARRAY FOR CUTTING SPEC RULE AND HALF SIZE RULE EVALUATION
MLINE_NUM := STR((SELFILE)->LINE_NUM,3)
RETVAL = BUILD_GETARR( MCODE, 1, MORDER_NUM, MLINE_NUM, , .F., ADDL_MODE, PR_CUSTID, .F., SELFILE )
G_ARR = RETVAL[1]
// EVALUATED CUTTING SPECS FOR THIS LINE ITEM
IF ITEM_CAT_CODE = 'EXPANDR' //** P3N - 9/30/99
ELSE //** P3N - 9/30/99
CUT_SPEC_ARR := ACLONE(GET_CUT_SPEC( MCODE, SELFILE, (SELFILE)->QUANTITY, XFACTOR, G_ARR ))
ENDIF //** P3N - 9/30/99
IF ADDL_MODE //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSE //** P3N - 7/21/99 HAPPY BDAY DANIEL
PARORD := (SELFILE)->ORDER_NUM //** P3N - 7/22/99
PARPROD := (SELFILE)->PROD_CODE //** P3N - 7/22/99
PARLINE := STR((SELFILE)->LINE_NUM) //** P3N - 7/22/99
IF EMPTY(PARGARR) //** P3N - 7/21/99 HAPPY BDAY DANIEL
AADD(PARGARR, {PARORD, PARPROD, PARLINE, ACLONE(G_ARR)}) //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSEIF PARORD == PARGARR[1,1] //** P3N - 7/21/99 HAPPY BDAY DANIEL
IF ASCAN(PARGARR,{|X| X[1] == PARORD .AND. ;
X[2] == PARPROD .AND. ;
X[3] == PARLINE } ) > 0
ELSE //** P3N - 7/21/99 HAPPY BDAY DANIEL
AADD(PARGARR, {PARORD, PARPROD, PARLINE, ACLONE(G_ARR)}) //** P3N - 7/21/99 HAPPY BDAY DANIEL
ENDIF //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSE //** P3N - 7/21/99 HAPPY BDAY DANIEL
PARGARR := {} //** P3N - 7/21/99 HAPPY BDAY DANIEL
AADD(PARGARR, {PARORD, PARPROD, PARLINE, ACLONE(G_ARR)}) //** P3N - 7/21/99 HAPPY BDAY DANIEL
ENDIF //** P3N - 7/21/99 HAPPY BDAY DANIEL
ENDIF //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSE
PARORD := (SELFILE)->ORDER_NUM //** P3N - 7/22/99
G_ARR := {}
IF EMPTY(PARGARR) //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSEIF PARORD == PARGARR[1,1] //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSE //** P3N - 7/21/99 HAPPY BDAY DANIEL
PARGARR := {} //** P3N - 7/21/99 HAPPY BDAY DANIEL
ENDIF //** P3N - 7/21/99 HAPPY BDAY DANIEL
ENDIF
// CHECK THE PRINTING OF HALF SIZE INFORMATION
// (IN STOCK ITEMS - NO PRINT, EQUAL LITE MSG IF NORMALLY AN ORIEL.)
WK_WIDTH := (SELFILE)->PRD_WIDTH
WK_HEIGHT := (SELFILE)->PRD_HEIGHT
EQL_PRNT := '' //** P3N - 6/7/99
HS_PRNT := ''
PROD_LINE := ''
IF (SELFILE)->ORIEL_SIZE$'Y' .AND. ;
OR_TOP = 1 .AND. OR_BOT = 1
HS_PRNT := CK_HALF_SIZE(ITEM_CAT_CODE, SELFILE, OPTFILE, {0,0}, RAN_SLID, WK_WIDTH, WK_HEIGHT, EXP_REQ, IS_ALWAYS_SLID, G_ARR )
EQL_PRNT := TRIM(PROD_LINE) + ' ** Equal Lites ** '
ELSE
HS_PRNT := CK_HALF_SIZE(ITEM_CAT_CODE, SELFILE, OPTFILE, OR_ARR, RAN_SLID, WK_WIDTH, WK_HEIGHT, EXP_REQ, IS_ALWAYS_SLID, G_ARR)
IF OR_TOP <> OR_BOT
HS_PRNT := CK_HALF_SIZE(ITEM_CAT_CODE, SELFILE, OPTFILE, OR_ARR, RAN_SLID, WK_WIDTH, WK_HEIGHT, EXP_REQ, IS_ALWAYS_SLID, G_ARR)
ENDIF
ENDIF
IF (SELFILE)->HOW_MEAS = 'BW' .OR. ;
(SELFILE)->HOW_MEAS = 'WO' .OR. ;
((SELFILE)->HOW_MEAS = 'NS' .AND. EMPTY((SELFILE)->PAR_PROD)).OR. ;
(SELFILE)->IN_STOCK$'Y'
PROD_LINE := TRIM(ITEM_LINE)
//** P3N 11/27/01 - IOLA PRINT ENTRY SIZE FOR PRODUCTION FRAME FOR CATEGORY TRAP (TRAPEZOID)
IF ALLTRIM( ITEM_CAT_CODE ) == 'TRAP' //** P3N - 11/27/01
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM((SELFILE)->ENTRY_SIZE) //** P3N - 11/27/01
PROD_LINE := PROD_LINE + ' ' + ALLTRIM((SELFILE)->LINE_DESC) //** P3N - 11/27/01
ELSE
//** 6/7/99 - P3N - IOLA HALF SIZE PRINT ON NOMINAL SIZE PRODUCTION FRAME
IF MHOME_LOC_CODE = 'IOLA'
PROD_LINE := TRIM(PROD_LINE) + ' ' + PRNT_SIZE(WK_WIDTH, WK_HEIGHT)
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM(HS_PRNT)
PROD_LINE := TRIM(PROD_LINE) + ' ' + MGL_LINE_DESC //** P3N - 12/13/01
ENDIF
ENDIF //** P3N - 11/27/01
ELSE
//** P3N - 11/23/98 ADDRESS EXPANDER WIDTH FOR SLIDERS - IOLA
EXP_WK_WIDTH := (SELFILE)->ACT_WIDTH
IF RAN_SLID
//** P3N - 12/11/98 ADDRESS PAWNEE REQUEST TO PRINT SIZE BEFORE ITEM
//** PROD_LINE := TRIM(ITEM_LINE) + ' ' + PRNT_SIZE(WK_HEIGHT, WK_WIDTH)
PROD_LINE := PRNT_SIZE(WK_HEIGHT, WK_WIDTH)
//** P3N - 5/26/99 ADDRESS 1/2 SIZE PRINT FOR LINE DESC - IOLA
IF !EMPTY(HS_PRNT) .AND. (SELFILE)->IN_STOCK = 'N'
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM(HS_PRNT)
ENDIF
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM(ITEM_LINE)
//** P3N 11/27/01 - IOLA PRINT ENTRY SIZE FOR PRODUCTION FRAME FOR CATEGORY TRAP (TRAPEZOID)
ELSEIF ALLTRIM( ITEM_CAT_CODE ) == 'TRAP' //** P3N - 11/27/01
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM((SELFILE)->ENTRY_SIZE) //** P3N - 11/27/01
PROD_LINE := PROD_LINE + ' ' + ALLTRIM((SELFILE)->LINE_DESC) //** P3N - 11/27/01
ELSE
//** P3N - 12/11/98 ADDRESS PAWNEE REQUEST TO PRINT SIZE BEFORE ITEM
//** PROD_LINE := TRIM(ITEM_LINE) + ' ' + PRNT_SIZE(WK_WIDTH, WK_HEIGHT)
PROD_LINE := PRNT_SIZE(WK_WIDTH, WK_HEIGHT)
//** P3N - 5/26/99 ADDRESS 1/2 SIZE PRINT FOR LINE DESC - IOLA
IF !EMPTY(HS_PRNT) .AND. (SELFILE)->IN_STOCK = 'N'
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM(HS_PRNT)
ENDIF
//** P3N - 12/13/01 ADDRESS DARLENE'S PRODUCTION
IF MHOME_LOC_CODE = 'IOLA'
IF AT(ALLTRIM(MGL_LINE_DESC),ALLTRIM(ITEM_LINE)) > 0 //** P3N - 01/25/02 - ADDRESS DARLENE'S FRAME PRINTING
PROD_LINE := TRIM(PROD_LINE)+'~'+ALLTRIM(ITEM_LINE) //** P3N - 01/25/02
ELSE //** P3N - 01/25/02
PROD_LINE := TRIM(PROD_LINE)+'~'+MGL_LINE_DESC+ '~' + ALLTRIM(ITEM_LINE)
ENDIF //** P3N - 01/25/02
ELSE
PROD_LINE := TRIM(PROD_LINE) + ' ' + ALLTRIM(ITEM_LINE)
ENDIF
ENDIF
ENDIF
//* PERRY - 2-11-98
FRENCHDOOR := CK_FRENCH(SELFILE, OPTFILE, ADDL_MODE)
IF (SELFILE)->IN_STOCK$'N'
IF FRENCHDOOR
//* PERRY - 2-11-98
// DO NOT PRINT THE (OS) SIZE FOR FRENCH DOORS -
// IT WILL BE ENTERED BY THE USER IN THE OPTIONS, OR LINE MEMO
ELSEIF ALLTRIM(ITEM_CAT_CODE) == 'STD'; // STORM DOORS
.AND. (SELFILE)->HOW_MEAS = 'OS'
PROD_LINE := TRIM(PROD_LINE) + ;
STRTRAN(' (OS=' + ALLTRIM( (SELFILE)->ENTRY_SIZE) + ') ', ' ','~')
ENDIF
ELSE
// ONLY IN_STOCK WINDOWS FIT HERE!
PROD_LINE := TRIM(PROD_LINE) + ' (S)'
ITEM_LINE := TRIM(ITEM_LINE) + ' (S)'
ENDIF
**** CHECK IF ANY MULLS - CENTER VERTICAL WILL CALC BREAKDOWN, AND
**** WILL 2 PIECES GLASS / SASH
**** ANY OTHER 'MULL LOC' WILL HAVE NO SASH/GLASS
IF ITEM_CAT_CODE = 'STPW' .OR. PAR_CAT_CODE = 'STPW'
MULL_ARR := CK_MULLS(SELFILE, OPTFILE)
MULL_REQ := MULL_ARR[1]
MULL_TYPE := MULL_ARR[2]
ENDIF
// PRINT THE ORIEL BANNER
PROD_LINE := PROD_LINE + EQL_PRNT //** P3N - 6/7/99
IF (SELFILE)->ORIEL_SIZE$'Y' ;
.AND. !(OR_TOP = 1 .AND. OR_BOT = 1)
PROD_LINE := TRIM(PROD_LINE) + ' **~Oriel~** '
ENDIF
IF BALANCE_SIZE <> NIL
//**BAL_INFO := ' USE~' + ALLTRIM(BALANCE_SIZE) + '"~BALANCE '
//** P3N - 11/19/99 ADDRESSED BALANCE INFO AT PAWNEE
IF MHOME_LOC_CODE = 'PAWNEE'
BAL_INFO := '~' + ALLTRIM(BALANCE_SIZE) + '"~BAL '
ELSE
BAL_INFO := ' USE~' + ALLTRIM(BALANCE_SIZE) + '"~BALANCE '
ENDIF
ELSE
BAL_INFO := ''
ENDIF
PROD_LINE := TRIM(PROD_LINE) + BAL_INFO
IF CK_SPEC_PRICE( (CUR_MAST)->CUST_ID, (SELFILE)->PROD_CODE, (CUR_MAST)->ORDER_DATE, 'CUST_BP' )
PR_CUSTID := (CUR_MAST)->CUST_ID
ELSE
PR_CUSTID := NIL
ENDIF
// 1. SET UP THE PRODUCTION CONTROL CHUNK
// IF MANUFACTURED IN HOUSE, OTHER "CHUNKS" WILL UTILIZE THIS INFO.
// IF MADE IN LINDSBORG BUT STOCKED IN KC AND ORDERED IN KC, TREAT AS STOCK
IF MLOC_CODE = MHOME_LOC_CODE
ELSEIF IN_STOCK$'N'
PROD_LINE := TRIM(PROD_LINE) + ' (' + (SELFILE)->HOW_MEAS + ')~' ;
+ STRTRAN( TRIM( (SELFILE)->ENTRY_SIZE), ' ','~' )
ENDIF
// IF NOT ADDL MODE PUT INTO DATA_ARR[1]
// IF ADDL_MODE AND MADE HERE, BUT PARENT IS MADE ELSEWHERE
// PUT IT IN DATA_ARR[1]
ADDIT := .F.
IF !ADDL_MODE
IF MLOC_CODE = MHOME_LOC_CODE
ADDIT := .T.
ENDIF
ELSE // ADDL_MODE
IF MLOC_CODE = MHOME_LOC_CODE ;
.AND. PAR_LOC_CODE <> MHOME_LOC_CODE
ADDIT := .T.
ENDIF
// IF IN STOCK ITEM BUT NEED SCREEN, ADD_IT SHOULD BE TRUE FOR SCEEN COPY
IF ITEM_CAT_CODE = 'SCREENS'
//Create a screen copy regardless of MFG. Loc & stock item
IF (MLOC_CODE = MHOME_LOC_CODE .AND. (SELFILE)->IN_STOCK <> 'Y')
ELSE
DO_SCRNS_ONLY:=.T.
ADDIT := .T.
ENDIF
ENDIF
ENDIF
// 1. DATA_ARR[1] IS THE PRODUCTION PART
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'C', SELFILE )
IF ADDIT
AADD(DATA_ARR[1], {MLOC_CODE, PRNT_DESC, PROD_LINE, ;
AMTVAR, DISC_ARR, PROD_MEMO, QUANTITY ,WHERE_FROM, MLINE, ;
PROD_CODE, SHP_QTY, XFACTOR, WORKSPECS, NIL , ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY })
ENDIF
// 9. DATA_ARR[9] IS THE PRODUCTION REPRESENTATION OF ALL DELIVERY/INVOICE ITEMS/CONTROL DESK
IF !ADDL_MODE
AADD(DATA_ARR[9], {MLOC_CODE, PRNT_DESC, PROD_LINE, ;
AMTVAR, DISC_ARR, PROD_MEMO, QUANTITY ,WHERE_FROM, MLINE, ;
PROD_CODE, SHP_QTY, XFACTOR, WORKSPECS, NIL, ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY })
ENDIF
// 7. INV (CUSOMER INVOICE) PRINT LINES
IF WHERE_FROM = 'OL'
SELECT (SELFILE)
ITEMPRNT1 := PRNT_SIZE(DECVAL(WIDTH), DECVAL(HEIGHT))
ITEMPRNTX := ALLTRIM( (SELFILE)->ENTRY_SIZE)
ITEM_LINE := ''
ITEM_LINE := ITEM_LINE + ' (' + (SELFILE)->HOW_MEAS + ') '
//** P3N - 3/5/99 REQUESTED BY LAURA @ PAWNEE
IF ITEM_CAT_CODE = 'HYLIT' //** P3N - 3/5/99
IF (SELFILE)->HOW_MEAS == 'NS' //** P3N - 3/5/99
ITEM_LINE := ' Model# ' //** P3N - 3/5/99
ENDIF //** P3N - 3/5/99
ENDIF //** P3N - 3/5/99
ITEM_LINE := ITEM_LINE + ITEMPRNTX
IF FRENCHDOOR
// DO NOT PRINT THE OPENING SIZE ON FRENCH DOORS - PERRY 2-11-98
ITEM_LINE := ''
ENDIF
//** P3N - 6/17/99 ADD LINE ITEM GLASS DESC TO INV/DEL... FOR IOLA
IF AT(MGL_LINE_DESC, ITEM_LINE) = 0 //** P3N - 6/17/99
ITEM_LINE := ITEM_LINE + ' ' + TRIM(MGL_LINE_DESC) //** P3N - 6/17/99
ENDIF
IF !EMPTY( (SELFILE)->LINE_DESC )
ITEM_LINE := ITEM_LINE + '~' + TRIM( (SELFILE)->LINE_DESC) + ' '
//** P3N - 4/2/98
//** MOVED TO DENOTE '(S)' REGARDLESS OF THE ACTUAL SIZE!
IF (SELFILE)->IN_STOCK$'Y' // ONLY IN_STOCK WINDOWS FIT HERE!
ITEM_LINE := TRIM(ITEM_LINE) + '~(S)'
ENDIF
ENDIF
ITEMPRNT2 := ALLTRIM(PRNT_SIZE(ACT_WIDTH, ACT_HEIGHT))
IF ALLTRIM(ITEMPRNT1) == ALLTRIM(ITEMPRNT2)
ELSEIF (SELFILE)->IN_STOCK$'Y' // ONLY IN_STOCK WINDOWS FIT HERE!
//** P3N - 4/9/98 IS '(S)' ALREADY DENOTED FOR STOCK WINDOWS!
IF AT( '(S)', ITEM_LINE) = 0
//** P3N - 4/9/98 NO - INCLUDE THE '(S)' TO DENOTE STOCK!
ITEM_LINE := TRIM(ITEM_LINE) + '~(S)'
ENDIF
ELSEIF ITEM_CAT_CODE = 'STD'
IF MHOME_LOC_CODE = 'KC'
// DO NOT PRINT DOOR SIZE ON THE ORDER FOR KC - 10-01-97
ELSE
ITEM_LINE := TRIM(ITEM_LINE) + ' (DOOR~SIZE=~' + ITEMPRNT2 + ')'
ENDIF
ENDIF
ITEM_LINE := ITEM_LINE + BAL_INFO
// PRINT THE ORIEL BANNER
IF (SELFILE)->ORIEL_SIZE$'Y' ;
.AND. !(OR_TOP = 1 .AND. OR_BOT = 1)
WORKVAR := HS_PRNT
IF WORKVAR = NIL
WORKVAR := ''
ENDIF
//** - P3N 2/26/98 REMOVED THE HALF-SIZE PRINTING PER SCOTT - KC
//** - P3N 7/7/98 REINSTATED THE HALF-SIZE PRINTING LINDS/IOLA IC POS
//** - P3N 7/24/98 REMOVED THE HALF-SIZE PRINTING PER SCOTT/ellen - KC
IF MHOME_LOC_CODE = 'KC'
//** - P3N 11/11/98 REINSTATED THE HALF-SIZE PRINTING AT KC FOR
//** - EVERYTHING NOT PRODUCED AT KC
IF AT('**Oriel**', ITEM_LINE) > 0
ELSE
ITEM_LINE := TRIM(ITEM_LINE) + ' ' + ' **~Oriel~** '
ENDIF
IF MHOME_LOC_CODE == MLOC_CODE
ELSE
ITEM_LINE := TRIM(ITEM_LINE) + ' ' + WORKVAR
ENDIF
ELSEIF AT('**Oriel**', ITEM_LINE) > 0
ITEM_LINE := TRIM(ITEM_LINE) + ' ' + WORKVAR
ELSE
ITEM_LINE := TRIM(ITEM_LINE) + ' ' + ' **~Oriel~** ' + WORKVAR
ENDIF
ENDIF
ITEM_LINE := ITEM_LINE + SPACE( 60 - LEN(ITEM_LINE) )
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'V' , SELFILE )
AADD(DATA_ARR[7], {MLOC_CODE, PRNT_DESC, ;
ITEM_LINE, AMTVAR, DISC_ARR, PROD_MEMO, ;
QUANTITY, WHERE_FROM, MLINE, PROD_CODE, ;
SHP_QTY, XFACTOR, WORKSPECS, NIL, ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY})
ENDIF
// THE FOLLOWING "CHUNKS" ONLY APPLY TO IN-HOUSE PRODUCTION ITEMS
// WHICH ARE NOT IN STOCK - EXCEPT for the screens. ALL screens
// will get a SCREEN copy regardless of the MFG. location or whether
// it is a STOCK item.
// THE SIZE AND SPECS ON HERE ARE THE PRODUCTION FRAME SAW SETTINGS
// 2. SET UP THE FRAME COPY CHUNK
IF ADDL_MODE
ELSE
// Get the cutting specs for the screen.
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'N', SELFILE )
IF EMPTY(WORKSPECS)
//Create ONLY a screen copy when NOT same MFG. Loc & stock item! 7-30-97
IF (MLOC_CODE = MHOME_LOC_CODE .AND. (SELFILE)->IN_STOCK <> 'Y')
ELSE
DO_SCRNS_ONLY:=.T.
ENDIF
ENDIF
ENDIF
IF (MLOC_CODE = MHOME_LOC_CODE .AND. (SELFILE)->IN_STOCK <> 'Y') .OR. ;
DO_SCRNS_ONLY
DO CASE
CASE ITEM_CAT_CODE = 'SCREENS'
CASE ITEM_CAT_CODE = 'STORMS'
CASE ITEM_CAT_CODE = 'EXPAND'
CASE ITEM_CAT_CODE = 'STPW'
OTHERWISE
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'F', SELFILE )
IF DO_SCRNS_ONLY
ELSE // BYPASS THE FRAME COPY
AADD(DATA_ARR[2], {MLOC_CODE, PRNT_DESC, PROD_LINE, AMTVAR, ;
DISC_ARR , PROD_MEMO, QUANTITY ,WHERE_FROM, MLINE, ;
PROD_CODE, SHP_QTY, XFACTOR, WORKSPECS, NIL, ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY })
ENDIF
ENDCASE
// 3. SET UP THE SASH COPY CHUNK
// DON'T WORRY ABOUT RANCH SLIDERS - STORMS ONLY (NO SASH ON STROMS)
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'I', SELFILE )
IF (PRODUCT->MACH_SASHW = 0 .AND. PRODUCT->MACH_SASHH == 0) ;
.AND. WORKSPECS = NIL
// NO SASH ADJUSTMENT -- NO SASH COPY PRINTED
ELSEIF !MULL_REQ .OR. (MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL')
WK_QTY := (SELFILE)->QUANTITY
IF RAN_SLID
WK_HEIGHT := PRODUCT->MACH_SASHW + (SELFILE)->ACT_WIDTH
WK_WIDTH := PRODUCT->MACH_SASHH + (SELFILE)->ACT_HEIGHT
ELSE
WK_WIDTH := PRODUCT->MACH_SASHW + (SELFILE)->ACT_WIDTH
WK_HEIGHT := PRODUCT->MACH_SASHH + (SELFILE)->ACT_HEIGHT
ENDIF
IF MULL_REQ // ONLY CENTER VERTICAL TYPE MULLS GOT THIS FAR
WK_QTY := WK_QTY * 2
WK_WIDTH := WK_WIDTH - MMULL_SASH
ITEM_LINE := PRNT_SIZE(WK_WIDTH/2, WK_HEIGHT)
ELSE
ITEM_LINE := PRNT_SIZE(WK_WIDTH, WK_HEIGHT)
ENDIF
//** SET SASH LINE DESCR. PRINTING FOR ATTRIBUTES - LINDS
IF EMPTY(SASH_LINE) //** P3N - 5/2/00
SASH_LINE := ITEM_LINE //** P3N - 5/2/00
ENDIF //** P3N - 5/2/00
IF DO_SCRNS_ONLY
ELSE // BYPASS THE SASH COPY
//**P3N5200 AADD(DATA_ARR[3], {MLOC_CODE, PRNT_DESC, ITEM_LINE, AMTVAR,;
AADD(DATA_ARR[3], {MLOC_CODE, PRNT_DESC, SASH_LINE, AMTVAR, ;
DISC_ARR, PROD_MEMO, (SELFILE)->QUANTITY, WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, WORKSPECS, ;
NIL, DO_SCRNS_ONLY, MPWHERE, INV_QTY})
ENDIF
ENDIF
// 4. SET UP THE GLASS COPY CHUNK
// NO RANCH SLIDER CONCERNS BECAUSE ONLY APPLICABLE TO STORMS
// HOWEVER, IF ALWAYS A SLIDER, SPECIAL PROCESSING IS REQUIRED
// NOTE THAT THE QUANTITY IS CHANGED TO REFLECT XTRA WINDOWS HERE
// SO WE PRINT THE TOTAL REQUIRED. NO REFERENCE TO TWIN, ETC IN GLASS DESC!
IF MHOME_LOC_CODE = 'KC'
MWORK_DESC := MLINE_DESC
ELSE
MWORK_DESC := ' '
ENDIF
TOTWIND := XFACTOR + 1
SELECT CATEGORY
S_REC := RECNO()
IF !EMPTY(PAR_CAT_CODE)
SEEK PAR_CAT_CODE
ELSE
SEEK ITEM_CAT_CODE
ENDIF
MNUM_GLASS := CATEGORY->NUM_GLASS
GOTO S_REC
SELECT (SELFILE)
GLT_WD = NIL
GLT_HT = NIL
GLT_QTY = 0
GLB_WD = NIL
GLB_HT = NIL
GLB_QTY = 0
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'G', SELFILE )
IF (PRODUCT->MACH_GLASW = 0 .AND. PRODUCT->MACH_GLASH == 0 ;
.AND. WORKSPECS = NIL) ;
.OR. ( ALLTRIM(ITEM_CAT_CODE) = 'STORMS' .AND. ;
MHOME_LOC_CODE <> 'IOLA' )
// NO GLASS ADJUSTMENT -- NO GLASS COPY PRINTED
// STORM WINDOWS DON'T GET A GLASS ADJUSTMENT - BOXES USED IN
// THE STORM COPY. FORCE TO LOGIC BELOW
ELSE
IF ITEM_CAT_CODE = 'STORMS' .AND. MHOME_LOC_CODE = 'IOLA'
DO_GLASS_PRNT := .F.
ELSE
DO_GLASS_PRNT := .T.
ENDIF
WK_QTY := (SELFILE)->QUANTITY * TOTWIND
IF !MULL_REQ .OR. (MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL')
MNUM_GLASS := CATEGORY->NUM_GLASS
IF MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL'
MNUM_GLASS := MNUM_GLASS * 2 // SINCE A MULL, EXTRA GLASS REQUIRED
ENDIF
IF (GLASS_COPY .AND. CATEGORY->(DBSEEK(ITEM_CAT_CODE)) ;
.AND. MNUM_GLASS > 0) .OR. ;
(ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.OR. ALLTRIM(ITEM_CAT_CODE) == 'STPW' )
WK_ADJ_WIDTH := PRODUCT->MACH_GLASW
WK_ADJ_HEIGHT := PRODUCT->MACH_GLASH
// WK_WIDTH/WK_HEIGHT REPRESENT ENTIRE "GLASS AREA REQUIRED"
// ALL AREAS ARE 'NON SLIDER SPECIFIC NOW'
//** IF RAN_SLID
IF RAN_SLID .OR. IS_ALWAYS_SLID //** P3N - 2/8/99
WK_HEIGHT := WK_ADJ_WIDTH + (SELFILE)->ACT_WIDTH
WK_WIDTH := WK_ADJ_HEIGHT + (SELFILE)->ACT_HEIGHT
ELSE
WK_WIDTH := WK_ADJ_WIDTH + (SELFILE)->ACT_WIDTH
WK_HEIGHT := WK_ADJ_HEIGHT + (SELFILE)->ACT_HEIGHT
ENDIF
IF MULL_REQ
WK_WIDTH := WK_WIDTH - MMULL_GLASS
ENDIF
IF (OR_TOP = 0 .AND. OR_BOT = 0) .OR. ; // EQUAL LITE WINDOW
(OR_TOP = 1 .AND. OR_BOT = 1)
// 2 PIECES OF GLASS AT 1/2 SIZE EACH
IF MULL_REQ .OR. IS_ALWAYS_SLID
WK_WIDTH := WK_WIDTH / MNUM_GLASS
ELSE
WK_HEIGHT := WK_HEIGHT / MNUM_GLASS
ENDIF
WK_QTY := WK_QTY * MNUM_GLASS
GLT_QTY := WK_QTY
GLB_QTY := 0
GLT_WD = WK_WIDTH
GLT_HT = WK_HEIGHT
GLB_WD = WK_WIDTH
GLB_HT = WK_HEIGHT
IF (PRODUCT->MACH_GLASW = 0 .AND. PRODUCT->MACH_GLASH == 0)
GLASS_PRNT = ''
IF EMPTY(BAL_INFO)
// NO BALANCE SIZE INFO - NOT A STD_SASH
// DETERMINE THE GLASS SIZES FOR STD_SASH
ELSE
GLASS_PRNT := PRNT_SIZE(GLT_WD, GLT_HT, ' x ')
ENDIF
ELSE
GLASS_PRNT := PRNT_SIZE(WK_WIDTH, WK_HEIGHT)
ENDIF
IF (SELFILE)->(FIELDPOS('LDESC_COPY')) > 0 //** P3N - 5/4/99
IF AT('G', (SELFILE)->LDESC_COPY) > 0 //** P3N - 5/4/99
IF EMPTY(GLASS_PRNT) //** P3N - 5/10/99
WK_QTY := 0 //** P3N - 5/10/99
ENDIF //** P3N - 5/10/99
GLASS_PRNT := GLASS_PRNT +' '+ MGL_LINE_DESC //** P3N - 6/7/99
ENDIF //** P3N - 5/4/99
ENDIF //** P3N - 5/4/99
IF DO_SCRNS_ONLY
ELSE // BYPASS THE GLASS COPY
IF DO_GLASS_PRNT
AADD(DATA_ARR[4], {MLOC_CODE, PRNT_DESC, GLASS_PRNT, ;
AMTVAR, DISC_ARR , PROD_MEMO, ;
WK_QTY ,WHERE_FROM, ;
STR(VAL(MLINE)+.00,7,2), PROD_CODE, ;
SHP_QTY, 0, WORKSPECS, MWORK_DESC, ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY })
ENDIF
ENDIF
ELSE // ORIEL WINDOW
GLASS_LINE := ''
GLT_QTY := QUANTITY
GLB_QTY := QUANTITY
GLT_WD = WK_WIDTH
GLT_HT = WK_HEIGHT
GLB_WD = WK_WIDTH
GLB_HT = WK_HEIGHT
IF OR_TOP > 0
// DO TOP GLASS FIRST (OR LEFT GLASS ON SLIDER)
IF OR_GLASS <> 0 // PREDETERMINED SIZE FOR TOP
IF IS_ALWAYS_SLID
GLT_WD = OR_GLASS
GLT_HT = WK_HEIGHT // ADJUSTED ABOVE FOR CUT
ELSE
GLT_WD = WK_WIDTH // ADJUSTED ABOVE FOR CUT
GLT_HT = OR_GLASS
ENDIF
ELSE
IF IS_ALWAYS_SLID
GLT_WD = (SELFILE)->ACT_WIDTH - OR_BOT + ( WK_ADJ_WIDTH / 2 )
GLT_HT = WK_HEIGHT // ADJUSTED ABOVE FOR CUT
ELSE
GLT_WD = WK_WIDTH // ADJUSTED ABOVE FOR CUT
GLT_HT = (SELFILE)->ACT_HEIGHT - OR_BOT + ( WK_ADJ_HEIGHT / 2 )
ENDIF
IF EMPTY(BAL_INFO) //** P3N - 03/30/98
// NO BALANCE SIZE INFO - NOT A STD_SASH
ELSEIF EMPTY(WORKSPECS)
// NO CUTTING SPEC INFO
ELSE // DETERMINE THE GLASS TOP SIZE FOR STD_SASH
IF LEN(WORKSPECS) < 2 .OR. EMPTY(WORKSPECS[1,6]) .OR. EMPTY(WORKSPECS[2,6])
ERR_BOX(' Order line - ' + STR( (SELFILE)->LINE_NUM, 3) + ;
' / Model - ' + (SELFILE)->PROD_CODE + ' Contains', ;
' Invalid or missing GLASS Cutting Specs! ', ' ', ;
' PRODUCTION GLASS COPY may NOT be accurate!')
ELSE
GLT_WD := EVAL_MATH( WORKSPECS[1,6], G_ARR, '_CUT_SP', ;
WORKSPECS[1,1], SELFILE,'CUT')
ADJ_HT := EVAL_MATH( WORKSPECS[2,6], G_ARR, '_CUT_SP', ;
WORKSPECS[2,1], SELFILE,'CUT')
//** GLT_HT := ADJ_HT - OR_BOT //** P3N - 07/05/01
GLT_HT := ADJ_HT - OR_BOT - STDADJ //** P3N - 07/05/01
WORKSPECS[2,7] := GLT_HT
ENDIF
ENDIF
ENDIF
IF (PRODUCT->MACH_GLASW = 0 .AND. PRODUCT->MACH_GLASH == 0)
GLASS_PRNT := ''
IF EMPTY(BAL_INFO) //** P3N - 03/30/98
// NO BALANCE SIZE INFO - NOT A STD_SASH
// DETERMINE THE GLASS SIZES FOR STD_SASH
IF RAN_SLID //** P3N - 02/01/99
GLASS_PRNT := PRNT_SIZE(GLT_WD, GLT_HT, ' x ')
ELSEIF IS_ALWAYS_SLID //** P3N - 02/02/99
GLASS_PRNT := PRNT_SIZE(GLT_WD, GLT_HT, ' x ')
ENDIF
ELSE
GLASS_PRNT := PRNT_SIZE(GLT_WD, GLT_HT, ' x ')
ENDIF
ELSE
GLASS_PRNT := GLASS_LINE + PRNT_SIZE(GLT_WD, GLT_HT) + EX_DESC
ENDIF
IF (SELFILE)->(FIELDPOS('LDESC_COPY')) > 0 //** P3N - 5/4/99
IF AT('G', (SELFILE)->LDESC_COPY) > 0 //** P3N - 5/4/99
IF EMPTY(GLASS_PRNT) //** P3N - 5/10/99
WK_QTY := 0 //** P3N - 5/10/99
ENDIF //** P3N - 5/10/99
//** GLASS_PRNT := GLASS_PRNT + MLINE_DESC //** P3N - 5/4/99
GLASS_PRNT := GLASS_PRNT+' '+ MGL_LINE_DESC //** P3N - 6/7/99
ENDIF //** P3N - 5/4/99
ENDIF //** P3N - 5/4/99
IF DO_SCRNS_ONLY
ELSE // BYPASS THE GLASS COPY
IF DO_GLASS_PRNT
AADD(DATA_ARR[4], {MLOC_CODE, PRNT_DESC, GLASS_PRNT, ;
AMTVAR, DISC_ARR , PROD_MEMO, ;
WK_QTY ,WHERE_FROM, ;
STR(VAL(MLINE)+.00,7,2), PROD_CODE, ;
SHP_QTY, 0, WORKSPECS, MWORK_DESC, ;
DO_SCRNS_ONLY, MPWHERE, INV_QTY})
ENDIF
ENDIF
// DO BOTTOM PART NEXT.
IF OR_GLASS <> 0
IF IS_ALWAYS_SLID
GLB_WD = WK_WIDTH - OR_GLASS
GLB_HT = WK_HEIGHT
ELSE
GLB_WD = WK_WIDTH
GLB_HT = WK_HEIGHT - OR_GLASS
ENDIF
ELSE
IF IS_ALWAYS_SLID
GLB_WD = (SELFILE)->ACT_WIDTH - OR_TOP + ( WK_ADJ_WIDTH / 2 )
GLB_HT = WK_HEIGHT // ADJUSTED ABOVE FOR CUT
ELSE
GLB_WD = WK_WIDTH // ADJUSTED ABOVE FOR CUT
GLB_HT = (SELFILE)->ACT_HEIGHT - OR_TOP + ( WK_ADJ_HEIGHT / 2 )
ENDIF
ENDIF
IF EMPTY(BAL_INFO) //** P3N - 03/30/98
// NO BALANCE SIZE INFO - NOT A STD_SASH
ELSEIF EMPTY(WORKSPECS)
// NO CUTTING SPEC INFO
ELSE // DETERMINE THE GLASS BOTT SIZE FOR STD_SASH
IF LEN(WORKSPECS) < 2 .OR. EMPTY(WORKSPECS[1,6]) .OR. EMPTY(WORKSPECS[2,6])
ELSE
GLB_WD := EVAL_MATH( WORKSPECS[1,6], G_ARR, '_CUT_SP', ;
WORKSPECS[1,1], SELFILE,'CUT')
ADJ_HT := EVAL_MATH( WORKSPECS[2,6], G_ARR, '_CUT_SP', ;
WORKSPECS[2,1], SELFILE,'CUT')
GLB_HT := ADJ_HT - OR_TOP
WORKSPECS[2,7] := GLB_HT
ENDIF
ENDIF
IF (PRODUCT->MACH_GLASW = 0 .AND. PRODUCT->MACH_GLASH == 0)
GLASS_PRNT := ''
IF EMPTY(BAL_INFO) //** P3N - 03/30/98
// NO BALANCE SIZE INFO - NOT A STD_SASH
ELSE // DETERMINE THE GLASS SIZES FOR STD_SASH
GLASS_PRNT := PRNT_SIZE(GLB_WD, GLB_HT, ' x ')
ENDIF
ELSE
GLASS_PRNT := GLASS_LINE + PRNT_SIZE(GLB_WD, GLB_HT) + EX_DESC
ENDIF
IF (SELFILE)->(FIELDPOS('LDESC_COPY')) > 0 //** P3N - 5/4/99
IF AT('G', (SELFILE)->LDESC_COPY) > 0 //** P3N - 5/4/99
IF EMPTY(GLASS_PRNT) //** P3N - 5/10/99
WK_QTY := 0 //** P3N - 5/10/99
ENDIF //** P3N - 5/10/99
//** GLASS_PRNT := GLASS_PRNT + MLINE_DESC //** P3N - 5/4/99
GLASS_PRNT := GLASS_PRNT+' '+ MGL_LINE_DESC //** P3N - 6/7/99
ENDIF //** P3N - 5/4/99
ENDIF //** P3N - 5/4/99
IF DO_SCRNS_ONLY
ELSE // BYPASS THE GLASS COPY
// DON'T DO SECOND LINE IF ALL SPECS COME FROM CUT_SPEC_ARR
IF DO_GLASS_PRNT .AND. ;
WK_ADJ_WIDTH <> 0 .AND. ;
WK_ADJ_HEIGHT <> 0
AADD(DATA_ARR[4], {MLOC_CODE, PRNT_DESC, GLASS_PRNT, ;
AMTVAR, DISC_ARR , PROD_MEMO, ;
WK_QTY ,WHERE_FROM, ;
STR(VAL(MLINE)+.00,7,2), PROD_CODE,;
SHP_QTY, 0, WORKSPECS, MWORK_DESC,;
DO_SCRNS_ONLY, MPWHERE, INV_QTY })
ENDIF
ENDIF
ELSE // ORIEL BOTTOM IS > 0 AND ORIEL TOP = 0
// SHOULDN'T EVER GET TO HERE-ADJUSTED IN CK_ORIEL()
//** P3N - 9/29/98
ERR_BOX(' Order line - ' + STR( (SELFILE)->LINE_NUM, 3) + ;
' / Model - ' + (SELFILE)->PROD_CODE + ' Contains', ;
' Invalid ORIEL Measurements - Oriel Top can NOT be 0 !', ' ', ;
' PRODUCTION BREAKDOWNS may NOT be accurate!')
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// 5. PROD SCREEN PRINT LINES
IF ADDL_MODE
ELSE
IF XL_EXISTS('SCREENS')
BYPASS_SCREEN_PAR := .T.
ELSE
BYPASS_SCREEN_PAR := .F.
ENDIF
ENDIF
BO_ITEM := '(' + (SELFILE)->HOW_MEAS + ') '
BO_ITEM := BO_ITEM + (SELFILE)->ENTRY_SIZE
IF BYPASS_SCREEN_PAR
ELSE
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'N', SELFILE )
MNUM_SCREEN := CATEGORY->NUM_SCREEN
IF MNUM_SCREEN = 0
MNUM_SCREEN := 1
ENDIF
IF ALLTRIM(ITEM_CAT_CODE) == 'SCREENS' ;
.OR. WORKSPECS <> NIL
AADD(DATA_ARR[5], SCREEN_CHUNK( SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, DISC_ARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.F., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR) )
//** P3N - 7/21/99 ARE THERE FLANKERS TO PROCESS FOR BACKORDER
IF ADDL_MODE
PARORD := (SELFILE)->ORDER_NUM //** P3N - 7/22/99
PARPROD := (SELFILE)->PAR_PROD //** P3N - 7/22/99
PARLINE := STR((SELFILE)->LINE_NUM) //** P3N - 7/22/99
PARELM := ASCAN(PARGARR,{|X| X[1] == PARORD .AND. ;
X[2] == PARPROD .AND. ;
X[3] == PARLINE } )
IF PARELM > 0
FLNKSPECS := GET_THESE_SPECS( PARGARR[PARELM,4], CUT_SPEC_ARR, 'N', 'ORD_LINES')
GETFLANK := PARGARR[PARELM,4]
ELSE
FLNKSPECS := {}
GETFLANK := {}
ENDIF
FLANKSCR := BKO_FLANKSCR(GETFLANK)
IF FLANKSCR[1] //**FLANKER SCREENS TO CONSIDER ON BACKORDER
FSARR := ACLONE(DISC_ARR)
FSARR[3] := FLANKSCR[2]
//** AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, .F., WORKSPECS, ;
AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, .F., FLNKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, FSARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR, FLANKSCR) )
ENDIF //** P3N - 1/27/99
ENDIF //** P3N - 7/22/99
ELSE
SCRNINFO := TOL_SCREENS(SELFILE) //** P3N - 9/16/98
IF EMPTY(SCRNINFO) //** P3N - 9/16/98
ELSE //** P3N - 9/16/98
IF EMPTY(SCRNINFO[1]) //TOL SCREEN QTY //** P3N - 9/16/98
ELSE //** P3N - 9/16/98
//** P3N BACKORDER SCREEN COPIES WHEN NO CUTTING SPECS
AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, DISC_ARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR) )
//** P3N - 1/27/99 ARE THERE FLANKERS TO PROCESS FOR BACKORDER
FLANKSCR := BKO_FLANKSCR(G_ARR)
IF FLANKSCR[1] //**FLANKER SCREENS TO CONSIDER ON BACKORDER
FSARR := ACLONE(DISC_ARR)
FSARR[3] := FLANKSCR[2]
AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, FSARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR, FLANKSCR) )
ENDIF //** P3N - 1/27/99
ENDIF //** P3N - 9/16/98
ENDIF //** P3N - 9/16/98
ENDIF
ENDIF
// 6. PROD STORMS PRINT LINES
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'S', SELFILE )
IF (ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.OR. ALLTRIM(ITEM_CAT_CODE) == 'STPW') ;
.OR. WORKSPECS <> NIL
IF ADDL_MODE .AND. ALLTRIM(ITEM_CAT_CODE) == 'SCREENS'
//** P3N - 3/24/99
//** DO NOT PRODUCE STORM COPY WHEN ADDL SCREEN PRODUCT
ELSE
WK_QTY := (SELFILE)->QUANTITY
IF (SELFILE)->CLEAR_SS$'Y' .AND. MHOME_LOC_CODE = 'IOLA'
GLASS_PRNT := BEST_BOX(GLT_QTY, GLT_WD, GLT_HT, GLB_QTY, GLB_WD, GLB_HT)
ELSE
GLASS_PRNT := ''
ENDIF
IF ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.OR. ALLTRIM(ITEM_CAT_CODE) == 'STPW'
STORM_PRNT := PROD_LINE + ' ' + GLASS_PRNT
ELSE
STORM_PRNT := ''
ENDIF
IF DO_SCRNS_ONLY
//** P3N - 9/11/98
//** THIS IS FOR BACKORDER STORMS NOT AT THE MFG. LOC
//** AADD(DATA_ARR[11], {MLOC_CODE, PRNT_DESC, STORM_PRNT, AMTVAR, ;
AADD(DATA_ARR[11], {MLOC_CODE, PRNT_DESC, ITEM_LINE, AMTVAR, ;
DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY, MPWHERE, INV_QTY} )
ELSE
IF !MULL_REQ .OR. (MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL')
AADD(DATA_ARR[6], {MLOC_CODE, PRNT_DESC, STORM_PRNT, AMTVAR, ;
DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY, MPWHERE, INV_QTY} )
ELSE
AADD(DATA_ARR[6], {MLOC_CODE, PRNT_DESC, ;
PROD_LINE + ' ** MANUAL BREAKDOWN REQUIRED Due to MULLS **', ;
AMTVAR, DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY , MPWHERE, INV_QTY})
ENDIF
ENDIF
ENDIF
ENDIF
// 8. EXPANDERS REQUIRED SECTION
// ONLY INCLUDE THE ORDER LINE ITEMS (EXTRAS APPEAR IN THE DESCRIPTION)
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'E', SELFILE )
IF MHOME_LOC_CODE <> 'LINDS' ;
.AND. ( EXP_REQ .OR. WORKSPECS <> NIL )
// EXPANDER SIZES ARE STORED AS ACTUAL CALLED IN SIZES
WK_QTY := (SELFILE)->QUANTITY
IF ITEM_CAT_CODE = 'EXPANDR' //** P3N - 9/30/99
//** IF CATEGORY EXPANDER THE SIZE WILL //** P3N - 9/30/99
//** BE DEFINED IN THE CUTTING SPECS. //** P3N - 9/30/99
PRNT_EXP := '' //** P3N - 9/30/99
ELSE //** P3N - 9/30/99
PRNT_EXP := PRNT_SIZE( EXP_WK_WIDTH, NIL)
ENDIF //** P3N - 9/30/99
IF DO_SCRNS_ONLY
ELSE // BYPASS THE EXPANDER COPY
AADD(DATA_ARR[8], {MLOC_CODE, PRNT_DESC, PRNT_EXP, AMTVAR, ;
DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY, MPWHERE, INV_QTY})
ENDIF
ENDIF
ELSE //** P3N BACKORDER SCREEN COPIES WHEN MFG. LOC IS NOT THE SAME
BO_ITEM := '(' + (SELFILE)->HOW_MEAS + ') '
BO_ITEM := BO_ITEM + (SELFILE)->ENTRY_SIZE
CK_BKO_SCRNS := .F.
IF ALLTRIM(ITEM_CAT_CODE) == 'SCREENS' //** P3N 9/15/98 - HAPY BDAY MOM!
IF EMPTY(DATA_ARR[5])
CK_BKO_SCRNS := .T.
ELSEIF EMPTY( ASCAN(DATA_ARR[5], {|X| X[9] + X[10] == ;
STR((SELFILE)->LINE_NUM, 3) + (SELFILE)->PROD_CODE}) )
CK_BKO_SCRNS := .T.
ELSE
CK_BKO_SCRNS := .F.
ENDIF
ELSE
SCRNINFO := TOL_SCREENS(SELFILE) //** P3N - 9/16/98
IF EMPTY(SCRNINFO) //** P3N - 9/16/98
ELSE //** P3N - 9/16/98
IF EMPTY(SCRNINFO[1]) //TOL SCREEN QTY //** P3N - 9/16/98
ELSE //** P3N - 9/16/98
//** P3N BACKORDER SCREEN COPIES WHEN NO CUTTING SPECS
AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, DISC_ARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR) )
//** P3N - 1/27/99 ARE THERE FLANKERS TO PROCESS FOR BACKORDER
FLANKSCR := BKO_FLANKSCR(G_ARR)
IF FLANKSCR[1] //**FLANKER SCREENS TO CONSIDER ON BACKORDER
FSARR := ACLONE(DISC_ARR)
FSARR[3] := FLANKSCR[2]
AADD(DATA_ARR[10], SCREEN_CHUNK( SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, FSARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR, FLANKSCR) )
ENDIF //** P3N - 1/27/99
ENDIF //** P3N - 9/16/98
ENDIF //** P3N - 9/16/98
ENDIF //** 9/15/98 - HAPPY BDAY MOM
IF XL_EXISTS('SCREENS')
//** USE THE ADDL_LINES FOR SCREEN BACKORDER STUFF!
ELSEIF CK_BKO_SCRNS
//** WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'N', SELFILE )
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'B', SELFILE )
IF ALLTRIM(ITEM_CAT_CODE) == 'SCREENS' .OR. !EMPTY(WORKSPECS)
AADD( DATA_ARR[10], SCREEN_CHUNK(SELFILE, ADDL_MODE, WORKSPECS, ;
MULL_REQ, MULL_TYPE, IS_ALWAYS_SLID, OR_TOP, OR_BOT, ;
OR_SCR, BO_ITEM, BAL_INFO, RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, DISC_ARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
.T., XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, MNUM_GLASS, G_ARR) )
ENDIF
ENDIF
//** P3N BACKORDER STORM COPIES WHEN MFG. LOC IS NOT THE SAME
// 11. PROD STORMS PRINT LINES FOR BACKORDERS
WORKSPECS := GET_THESE_SPECS( G_ARR, CUT_SPEC_ARR, 'S', SELFILE )
IF ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.OR. ALLTRIM(ITEM_CAT_CODE) == 'STPW' ;
.OR. WORKSPECS <> NIL
WK_QTY := (SELFILE)->QUANTITY
IF (SELFILE)->CLEAR_SS$'Y' .AND. MHOME_LOC_CODE = 'IOLA'
GLASS_PRNT := BEST_BOX(GLT_QTY, GLT_WD, GLT_HT, GLB_QTY, GLB_WD, GLB_HT)
ELSE
GLASS_PRNT := ''
ENDIF
IF ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.OR. ALLTRIM(ITEM_CAT_CODE) == 'STPW'
STORM_PRNT := PROD_LINE + ' ' + GLASS_PRNT
ELSE
STORM_PRNT := ''
ENDIF
IF !MULL_REQ .OR. (MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL')
AADD(DATA_ARR[11], {MLOC_CODE, PRNT_DESC, STORM_PRNT, AMTVAR, ;
DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY, MPWHERE, INV_QTY} )
ELSE
AADD(DATA_ARR[11], {MLOC_CODE, PRNT_DESC, ;
PROD_LINE + ' ** MANUAL BREAKDOWN REQUIRED Due to MULLS **', ;
AMTVAR, DISC_ARR, PROD_MEMO, WK_QTY ,WHERE_FROM, ;
MLINE, PROD_CODE, SHP_QTY, XFACTOR, ;
WORKSPECS, NIL, DO_SCRNS_ONLY , MPWHERE, INV_QTY})
ENDIF
ENDIF // END STORMS
ENDIF // ENDIF (MLOC_CODE = MHOME_LOC_CODE)
DO_SCRNS_ONLY := .F. //7-30-97
SELECT (SELFILE)
SKIP 1
ENDDO
//** (CUR_MAST)->ORD_L_TTL and (CUR_MAST)->QUOTE_PRIC ( QUOTED PRICE )
//** P3N - 09/26/06 ADD THE FULE SURCHARGE INTO THE GL_ARR AS NECESSARY
IF ADDL_MODE
// NO FUEL SURCHARGE ON ADDL LINE ITEM (XL) - ONLY ON OL PASS
ELSEIF EMPTY( (CUR_MAST)->FUEL_CHRG ) //** P3N - 09/26/06
//** No Fuel Surcharge - Continue
//** may be a del_chg (gl-521 amt) from category [$frt_amt or %frt_pct]?
ELSE //** P3N - 09/26/06
ELEM := ASCAN(GL_ARR, {|X| X[1] = '521 '} ) //** P3N - 09/26/06
IF ELEM > 0 //** P3N - 09/26/06
GL_ARR[ELEM, 2] := GL_ARR[ELEM, 2] + (CUR_MAST)->FUEL_CHRG
ELSE //** P3N - 09/26/06
AADD(GL_ARR, { '521 ', (CUR_MAST)->FUEL_CHRG, , 'I' } )
ENDIF //** P3N - 09/26/06
ENDIF //** P3N - 09/26/06
SELECT(SV_SEL)
RETURN DATA_ARR
//**********************************************************
// P3N - 1/27/99 ARE THERE FLANKER SCREENS FOR BACKORDER PRINTING???
//**********************************************************
FUNCTION BKO_FLANKSCR(GETARR)
LOCAL ELM := 0, RETVAL := .F., FLANKERS := ''
ELM := ASCAN(GETARR, {|X| X[1] = 'FLANKERS'} )
IF EMPTY(ELM)
//** NO FLANKERS
ELSE
FLANKERS := ALLTRIM(GETARR[ELM,4])
ELM := ASCAN(GETARR, {|X| X[1] = 'FLANK SCRN'})
IF EMPTY(ELM)
RETVAL := .F.
FLANKERS := ''
ELSEIF ALLTRIM(GETARR[ELM,4]) == 'YES'
RETVAL := .T.
ELSE
RETVAL := .F.
FLANKERS := ''
ENDIF
ENDIF
RETURN {RETVAL, FLANKERS}
//**********************************************************
// P3N - BUILD THE SCREEN CHUNK FOR ORDER / BACKORDER PRINTING
//**********************************************************
FUNCTION SCREEN_CHUNK(SELFILE, ADDL_MODE, WORKSPECS, MULL_REQ, MULL_TYPE, ;
IS_ALWAYS_SLID, OR_TOP, OR_BOT, OR_SCR, BO_ITEM, BAL_INFO, ;
RAN_SLID, MLOC_CODE, PRNT_DESC, ;
AMTVAR, DISC_ARR, PROD_MEMO, WHERE_FROM, MLINE, PROD_CODE, ;
BACKORD, XFACTOR, DO_SCRNS_ONLY, MPWHERE, MWORK_DESC, MNUM_SCREEN, ;
MNUM_GLASS, G_ARR, FLANKSCR)
// NEW LOGIC TO ADD ADJUSTMENT HERE AND NOT IN CGWPRPO.
LOCAL PASSARR := {} , OR_DESC := '' ,SHP_QTY := 0 , SCRINFO := {}
LOCAL WK_WIDTH := (SELFILE)->PRD_WIDTH
LOCAL WK_HEIGHT := (SELFILE)->PRD_HEIGHT
LOCAL WK_ADJ_WIDTH := 0, WK_QTY := 0, INV_QTY := 0
LOCAL WK_ADJ_HEIGHT := 0, WORKVAR, SCREEN_LINE, ELM3
LOCAL ITEM_CAT_CODE := GET_CATCODE( (SELFILE)->PROD_CODE)
LOCAL OLQTY := 0 , NUM_IN_SPEC := 0 //**P3N - 9/22/98 HAPPY BDAY CINDY
LOCAL ELM := 0, FLANKERS := '', TOLKEY //** P3N -11/3/98
LOCAL OSTKEY := (SELFILE)->ORDER_NUM + STR((SELFILE)->LINE_NUM, 3) + 'SCREENS'
LOCAL OSTFSK := (SELFILE)->ORDER_NUM + STR((SELFILE)->LINE_NUM, 3) + 'SCRFLNK'
LOCAL QTYARR := GET_OSTQTY(SELFILE), BKOFLNKSCR := .F.
IF EMPTY(FLANKSCR) //** P3N - 1/27/99
IF EMPTY(QTYARR) //** P3N - 12/3/98
SHP_QTY := 0 //** P3N - 12/3/98
INV_QTY := 0 //** P3N - 12/3/98
ELSE //** P3N - 12/3/98
SHP_QTY := QTYARR[1] //** P3N - 12/3/98
INV_QTY := QTYARR[2] //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
IF EMPTY(SHP_QTY) .OR. ITEM_CAT_CODE <> 'SCREENS'
QTYARR := GET_OSTQTY(SELFILE, OSTKEY )
IF EMPTY(QTYARR) //** P3N - 12/3/98
SHP_QTY := 0 //** P3N - 12/3/98
INV_QTY := 0 //** P3N - 12/3/98
ELSE //** P3N - 12/3/98
SHP_QTY := QTYARR[1] //** P3N - 12/3/98
INV_QTY := QTYARR[2] //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
ENDIF
ELSEIF FLANKSCR[1] //** P3N - 1/27/99
BKOFLNKSCR := .T. //** P3N - 1/27/99
QTYARR := GET_OSTQTY(SELFILE, OSTFSK )
IF EMPTY(QTYARR) //** P3N - 1/27/99
SHP_QTY := 0 //** P3N - 1/27/99
INV_QTY := 0 //** P3N - 1/27/99
ELSE //** P3N - 1/27/99
SHP_QTY := QTYARR[1] //** P3N - 1/27/99
INV_QTY := QTYARR[2] //** P3N - 1/27/99
ENDIF //** P3N - 1/27/99
ENDIF //** P3N - 1/27/99
IF EMPTY(MNUM_SCREEN)
MNUM_SCREEN := CATEGORY->NUM_SCREEN
IF MNUM_SCREEN = 0
MNUM_SCREEN := 1
ENDIF
ENDIF
IF EMPTY(MNUM_GLASS)
MNUM_GLASS := CATEGORY->NUM_GLASS
ENDIF
IF ADDL_MODE
PRODUCT->(DBSEEK( (SELFILE)->PAR_PROD))
IF PRODUCT->MACH_SCRNW <> 0 .AND. PRODUCT->MACH_SCRNH <> 0
WK_ADJ_WIDTH := PRODUCT->MACH_SCRNW
WK_ADJ_HEIGHT := PRODUCT->MACH_SCRNH
WK_WIDTH := (CUR_OL)->ACT_WIDTH
WK_HEIGHT := (CUR_OL)->ACT_HEIGHT
WORKSPECS := NIL
ENDIF
PRODUCT->(DBSEEK( (SELFILE)->PROD_CODE ))
ELSE
WK_WIDTH := (SELFILE)->ACT_WIDTH
WK_HEIGHT := (SELFILE)->ACT_HEIGHT
ENDIF
IF ADDL_MODE // GET FROM PARENT STUFF
IF EMPTY(WORKSPECS)
WK_QTY := (SELFILE)->QUANTITY * MNUM_SCREEN
ELSE
WK_QTY := (SELFILE)->QUANTITY // (*)FACTOR FROM WORKSPECS
ENDIF
ELSEIF BACKORD
IF BKOFLNKSCR //** P3N - 1/28/99
TOLKEY := ORDER_NUM + STR(LINE_NUM) + PROD_CODE + 'SCRFLNK'
IF SELFILE == 'ADDL_LINES' //** P3N - 7/21/99 HAPPY BDAY DANIEL
TOLKEY := ORDER_NUM + STR(LINE_NUM) + PAR_PROD + 'SCRFLNK'
ENDIF //** P3N - 7/21/99 HAPPY BDAY DANIEL
ELSEIF GET_CATCODE(PROD_CODE) == 'SCREENS' //** P3N - 5/20/99
TOLKEY := ORDER_NUM + STR(LINE_NUM) + SPACE(7) + PROD_CODE
ELSE //** P3N - 1/28/99
TOLKEY := ORDER_NUM + STR(LINE_NUM) + PROD_CODE + 'SCREENS'
ENDIF //** P3N - 1/28/99
IF GET_CATCODE(PROD_CODE) == 'SCREENS' //** P3N - 5/20/99
SCRINFO := TOL_SCREENS( ,TOLKEY, BKOFLNKSCR) //** P3N -11/3/98
ELSE
SCRINFO := TOL_SCREENS(SELFILE,TOLKEY, BKOFLNKSCR) //** P3N -11/3/98
ENDIF
IF LEN(SCRINFO) > 2 //** P3N -11/3/98
BO_ITEM := SCRINFO[3] //** P3N -11/3/98
ENDIF //** P3N -11/3/98
WK_QTY := SCRINFO[1] //** P3N - 9/9/98
PRNT_DESC := SCRINFO[2] //** P3N - 9/9/98
ELSEIF !ADDL_MODE
IF EMPTY(WORKSPECS)
WK_QTY := (SELFILE)->QUANTITY * MNUM_SCREEN
ELSE
OLQTY := WORKSPECS[1, 3]
NUM_IN_SPEC := WORKSPECS[1, 13]
WK_QTY := OLQTY * NUM_IN_SPEC * ( 1 + XFACTOR )
//**WK_QTY := (SELFILE)->QUANTITY // (*)FACTOR FROM WORKSPECS
ENDIF
ENDIF
// NORMAL WIDTH WINDOWS / NOT ODD WIDTHS MULLED TOGETHER.
IF !MULL_REQ .OR. (MULL_REQ .AND. MULL_TYPE = 'CENTER VERTICAL')
// STPW ONLY??
IF MULL_REQ
MNUM_GLASS ++ // SINCE A MULL, EXTRA GLASS REQUIRED (ONLY CENTER VERTICAL ONES GOT TO HERE!
SELECT PRODUCT
IF RAN_SLID // REVERSE HT/WIDTH
WORKVAR := WK_HEIGHT // ADDL_MODE PART ADDED
WK_HEIGHT := WK_WIDTH // 6-05-95 BY DON
WK_WIDTH := WORKVAR
WORKVAR := WK_ADJ_HEIGHT // ADDL_MODE PART ADDED
WK_ADJ_HEIGHT := WK_ADJ_WIDTH // 6-05-95 BY DON
WK_ADJ_WIDTH := WORKVAR
ENDIF
WK_WIDTH := WK_WIDTH + WK_ADJ_WIDTH
WK_HEIGHT := WK_HEIGHT + WK_ADJ_HEIGHT
WK_QTY := WK_QTY * 2
WK_WIDTH := WK_WIDTH - MMULL_SASH
SCREEN_LINE := ''
IF ITEM_CAT_CODE = 'SCREENS' .AND. EMPTY(WORKSPECS)
SCREEN_LINE := SET_SCREEN_LINE(MULL_REQ, WK_WIDTH, WK_HEIGHT, ' ', PROD_CODE, PRNT_DESC)
ENDIF
ELM3 := {SCREEN_LINE, BO_ITEM} //** P3N = 6/26/98
PASSARR := {MLOC_CODE, PRNT_DESC, ELM3 , AMTVAR,;
DISC_ARR, PROD_MEMO, WK_QTY, WHERE_FROM, MLINE, ;
PROD_CODE, SHP_QTY, 0 , WORKSPECS, MWORK_DESC, ;
DO_SCRNS_ONLY , MPWHERE, INV_QTY }
ELSE
// NO WINDOWS MULLED TOGETHER.
// SCREEN HEIGHT WILL BE WK_HEIGHT / NUM_GLASS UNLESS ORIEL
// OR WE ARE USING A STANDARD SIZE SASH ON THE BOTTOM
IF (OR_TOP = 0 .AND. OR_BOT = 0) .OR. ;
(OR_TOP = 1 .AND. OR_BOT = 1) .OR. MNUM_GLASS = 1
// 2 PIECES OF GLASS AT 1/2 SIZE EACH
IF IS_ALWAYS_SLID
WK_WIDTH := WK_WIDTH / MNUM_GLASS
ELSE
WK_HEIGHT := WK_HEIGHT / MNUM_GLASS
ENDIF
ELSE
// oriel processing here.
IF OR_SCR > 0 // FROM STD SIZE TABLE
IF IS_ALWAYS_SLID
WK_WIDTH := OR_SCR
WK_ADJ_HEIGHT := 0 // is this true??
ELSE
WK_HEIGHT := OR_SCR
WK_ADJ_HEIGHT := 0 // is this true??
ENDIF
ELSE
IF OR_TOP > 0
IF IS_ALWAYS_SLID
WK_WIDTH := WK_WIDTH - OR_TOP // SCREEN GOES ON BOTTOM
ELSE
WK_HEIGHT := WK_HEIGHT - OR_TOP // SCREEN GOES ON BOTTOM
ENDIF
ELSE
IF IS_ALWAYS_SLID
WK_WIDTH := OR_BOT // SCREEN GOES ON BOTTOM
ELSE
WK_HEIGHT := OR_BOT // SCREEN GOES ON BOTTOM
ENDIF
ENDIF
ENDIF
ENDIF
WK_HEIGHT := WK_HEIGHT + WK_ADJ_HEIGHT
WK_WIDTH := WK_WIDTH + WK_ADJ_WIDTH
IF RAN_SLID .AND. !ADDL_MODE // REVERSE HT/WIDTH (IF !ADDL_MODE 6-5-95)
WORKVAR := WK_HEIGHT
WK_HEIGHT := WK_WIDTH
WK_WIDTH := WORKVAR
ENDIF
IF EMPTY(BAL_INFO) //** P3N - 03/30/98
// NO BALANCE SIZE INFO - NOT A STD_SASH
ELSEIF EMPTY(WORKSPECS)
// NO CUTTING SPEC INFO
ELSE // DETERMINE THE SCREEN SIZE FOR STD_SASH
IF LEN(WORKSPECS) < 2 .OR. EMPTY(WORKSPECS[1,6]) .OR. EMPTY(WORKSPECS[2,6])
ERR_BOX(' Order line - ' + STR( (SELFILE)->LINE_NUM, 3) + ;
' / Model - ' + (SELFILE)->PROD_CODE + ' Contains', ;
' Invalid or missing SCREEN Cutting Specs! ', ' ', ;
' PRODUCTION SCREEN COPY may NOT be accurate!')
ELSE
ADJ_HT := EVAL_MATH( WORKSPECS[2,6], G_ARR, '_CUT_SP', ;
WORKSPECS[2,1], SELFILE,'CUT')
WK_HEIGHT := ADJ_HT - OR_TOP
WORKSPECS[2,7] := WK_HEIGHT
ENDIF
ENDIF
IF ITEM_CAT_CODE = 'SCREENS' .AND. EMPTY(WORKSPECS)
SCREEN_LINE := SET_SCREEN_LINE(MULL_REQ, WK_WIDTH, WK_HEIGHT, OR_DESC, PROD_CODE, PRNT_DESC)
ELSE
SCREEN_LINE := ''
ENDIF
SELECT (SELFILE)
ELM3 := {SCREEN_LINE, BO_ITEM} //** P3N = 6/26/98
PASSARR := {MLOC_CODE, PRNT_DESC, ELM3 , AMTVAR,;
DISC_ARR, PROD_MEMO, WK_QTY, WHERE_FROM, MLINE, ;
PROD_CODE, SHP_QTY, 0 , WORKSPECS, MWORK_DESC, ;
DO_SCRNS_ONLY , MPWHERE, INV_QTY }
ENDIF
ENDIF
RETURN PASSARR
******************************************************************
* GET THE BACKORDER QTY FOR SCREENS - FROM THE TORD_LINES DATABASE
* //** P3N - 9/9/98
******************************************************************
FUNCTION TOL_SCREENS(SELFILE, PASSKEY, FLANKERS)
LOCAL SVREC := 1, TOLKEY, FLANKCNT := 0, RETVAL := { 0 , '' }, BO_ITEM
IF EMPTY(FLANKERS) //** P3N - 1/27/99
FLANKERS := .F. //** P3N - 1/27/99
ENDIF //** P3N - 1/27/99
IF SELECT('TORD_LINES') > 0
SVREC := TORD_LINES->(RECNO())
TORD_LINES->(DBGOTOP())
IF (CUR_MAST)->ORDER_NUM == TORD_LINES->ORDER_NUM
ELSE
CLOSE TORD_LINES
BLD_TORD_LINES((CUR_MAST)->ORDER_NUM)
ENDIF
ELSE
BLD_TORD_LINES((CUR_MAST)->ORDER_NUM)
ENDIF
TORD_LINES->(DBGOTOP())
DO WHILE TORD_LINES->(!EOF())
IF EMPTY(SELFILE)
TOLKEY := TORD_LINES->ORDER_NUM + STR(TORD_LINES->LINE_NUM, 3)
TOLKEY := TOLKEY + TORD_LINES->PAR_PROD + TORD_LINES->PROD_CODE
IF TOLKEY == PASSKEY
RETVAL := { TORD_LINES->QUANTITY, TORD_LINES->ITEM_DESC }
IF FLANKERS //** P3N - 7/21/99
IF TORD_LINES->PROD_CODE == 'SCRFLNK' //** P3N - 7/21/99
BO_ITEM := '(' + TORD_LINES->HOW_MEAS + ') '
BO_ITEM := BO_ITEM + TORD_LINES->ENTRY_SIZE
RETVAL := { TORD_LINES->QUANTITY, TORD_LINES->ITEM_DESC, BO_ITEM}
ENDIF
ENDIF
EXIT
ENDIF
ELSEIF TORD_LINES->ORDER_NUM == (SELFILE)->ORDER_NUM
IF TORD_LINES->LINE_NUM == (SELFILE)->LINE_NUM
IF TORD_LINES->PAR_PROD == (SELFILE)->PROD_CODE
IF FLANKERS //** P3N - 1/27/99
IF TORD_LINES->PROD_CODE == 'SCRFLNK' //** P3N - 1/27/99
BO_ITEM := '(' + TORD_LINES->HOW_MEAS + ') '
BO_ITEM := BO_ITEM + TORD_LINES->ENTRY_SIZE
RETVAL := { TORD_LINES->QUANTITY, TORD_LINES->ITEM_DESC, BO_ITEM}
EXIT
ENDIF
ELSEIF TORD_LINES->PROD_CODE == 'SCREENS'
RETVAL := { TORD_LINES->QUANTITY, TORD_LINES->ITEM_DESC }
EXIT
ENDIF
ENDIF
ENDIF
ENDIF
TORD_LINES->(DBSKIP(+1) )
ENDDO
TORD_LINES->(DBGOTO(SVREC) )
RETURN RETVAL
******************************************************************
* GET THE ORDER SHIPPING TRANS IN ORDER TO CALC BACKORDERS!
* //** P3N - 5/1/98
******************************************************************
FUNCTION GET_OSTQTY(CUR_OL, MISCKEY , PARTIAL_INVOICE, REPRINT_INVOICE)
LOCAL RETVAL := {}, RETSHP := 0, RETINV := 0, SVSEL := SELECT()
PRIVATE SEEKKEY := (CUR_OL)->ORDER_NUM + STR((CUR_OL)->LINE_NUM, 3) + ;
(CUR_OL)->PROD_CODE + (CUR_OL)->PAR_PROD
PRIVATE SAMELIN := 'ORDER_NUM + STR(LINE_NUM, 3)+PROD_CODE+PAR_PROD == SEEKKEY'
//DEFAULT PARTIAL_INVOICE := .F.
//DEFAULT REPRINT_INVOICE := .F.
If( PARTIAL_INVOICE == nil, PARTIAL_INVOICE := .F., )
If( REPRINT_INVOICE == nil, REPRINT_INVOICE := .F., )
IF EMPTY(PARTIAL_INVOICE) //** P3N - 12/9/98
PARTIAL_INVOICE := .F. //** P3N - 12/9/98
ENDIF //** P3N - 12/9/98
IF EMPTY(REPRINT_INVOICE) //** P3N - 12/9/98
REPRINT_INVOICE := .F. //** P3N - 12/9/98
ENDIF //** P3N - 12/9/98
IF EMPTY(MISCKEY)
ELSE
SEEKKEY := MISCKEY
SAMELIN := 'ORDER_NUM + STR(LINE_NUM, 3)+PROD_CODE == SEEKKEY'
ENDIF
SELECT ORD_SHIP
IF ORD_SHIP->(DBSEEK(SEEKKEY))
DO WHILE !EOF() .AND. &SAMELIN
IF REPRINT_INVOICE .AND. EMPTY(INV_QTY) //** P3N - 12/9/98
//** PARTIAL INVOICE SHIPPED TO NEW ORDER
ELSE
RETSHP := RETSHP + ORD_SHIP->SHIP_QTY
ENDIF
RETINV := RETINV + ORD_SHIP->INV_QTY
ORD_SHIP->(DBSKIP(+1))
ENDDO
ENDIF
SELECT(SVSEL)
RETURN {RETSHP, RETINV}
******************************************************************
* IS THERE A STOCK SCREEN AND HOW WERE THE MEASUREMENTS ENTERED
******************************************************************
FUNCTION SET_SCREEN_LINE(MULL_REQ, WK_WIDTH, WK_HEIGHT, OR_DESC, PROD_CODE, PRNT_DESC)
LOCAL SCREEN_LINE := ''
IF (IN_STOCK == 'Y' .AND. HOW_MEAS == 'NS') .AND. ;
(PROD_CODE = '500' .AND. AT('WHITE', PRNT_DESC) > 0)
SCREEN_LINE := ENTRY_SIZE
ELSEIF MULL_REQ
SCREEN_LINE := PRNT_SIZE(WK_WIDTH/2, WK_HEIGHT)
ELSE
SCREEN_LINE := PRNT_SIZE(WK_WIDTH, WK_HEIGHT) + OR_DESC
ENDIF
IF IN_STOCK == 'Y'
SCREEN_LINE := TRIM(SCREEN_LINE) + ' (S)'
ENDIF
RETURN SCREEN_LINE
************************************************************
* IS THERE AN ADDITIONAL LINE ITEM
* FOR THE TYPE PASSED ??? (IE: 'SCREEN')
************************************************************
FUNCTION XL_EXISTS(WHAT_TYPE)
LOCAL SV_SEL := SELECT()
LOCAL SV_REC := (SV_SEL)->(RECNO()) //** P3N - 7/20/98
LOCAL SV_ORD := INDEXORD(), RETVAL := .F.
LOCAL SEEKKEY := (CUR_OL)->ORDER_NUM+(CUR_OL)->PROD_CODE
SELECT (CUR_XL)
DONSETORD(2) // ORDER + PAR_PROD
SEEK SEEKKEY
IF FOUND()
IF GET_CATCODE(PROD_CODE) == WHAT_TYPE
RETVAL := .T.
ELSE
RETVAL := .F.
ENDIF
ENDIF
SET ORDER TO SV_ORD
SELECT(SV_SEL)
(SV_SEL)->(DBGOTO(SV_REC)) //** P3N - 7/20/98
RETURN RETVAL
************************************************************
* IS THIS ORDER ASSESSED A DELIVERY CHARGE ???
************************************************************
FUNCTION IS_DELIVERED()
LOCAL SEEKKEY := (CUR_MAST)->SHP_METHOD, SV_SEL := SELECT(), RET_VAL := .F.
IF SHIPMETH->(DBSEEK(SEEKKEY))
IF SHIPMETH->DEL_CHG$'Y' //DELIVERY CHARGE ????
RET_VAL := .T.
ENDIF
ENDIF
SELECT(SV_SEL)
RETURN RET_VAL
************************************************************
************************************************************
************************************************************
FUNCTION BEST_BOX(GLT_QTY, GLT_WD, GLT_HT, GLB_QTY, GLB_WD, GLB_HT)
LOCAL RETARR := {}, SAVESEL := SELECT(), I
LOCAL PRNTLINE, BESTWASTE:=9999, THISWASTE, THISSIZE
LOCAL BEST_BOX1, BEST_BOX2, ORIEL, WASTE1, RETVAL:=''
STATIC GLASS_ARR
IF GLT_WD = NIL
RETURN RETVAL
ENDIF
// IF ORIEL, 1 BOX FOR EACH PIECE OF GLASS
// OTHERWISE, GIVE BEST 1 AND BEST 2 SITUATION
IF GLB_QTY = 0
ORIEL := .F.
ELSE
ORIEL := .T.
ENDIF
// LOOK ON 'GLASS_BOX' FILE TO FIND BEST SIZE WITH LEAST WASTE
IF GLASS_ARR = NIL
GLASS_ARR := {}
DBOPEN('GLASS_BOX')
GOTO TOP
DO WHILE !EOF()
AADD(GLASS_ARR, { BOX_NUM, WIDTH, HEIGHT } )
SKIP 1
ENDDO
CLOSE GLASS_BOX
SELECT (SAVESEL)
ENDIF
THISSIZE := GLT_WD * GLT_HT
BESTWASTE := 9999
FOR I := 1 TO LEN(GLASS_ARR)
IF (GLT_WD <= GLASS_ARR[I,2] .AND. GLT_HT <= GLASS_ARR[I,3]) .OR. ;
(GLT_WD <= GLASS_ARR[I,3] .AND. GLT_HT <= GLASS_ARR[I,2])
THISWASTE := (GLASS_ARR[I,2] * GLASS_ARR[I,3]) - THISSIZE
IF THISWASTE < BESTWASTE
BESTWASTE := THISWASTE
BEST_BOX1 := GLASS_ARR[I,1]
ENDIF
ENDIF
NEXT
WASTE1 := BESTWASTE
IF ORIEL
THISSIZE := GLB_WD * GLB_HT
BESTWASTE := 9999
FOR I := 1 TO LEN(GLASS_ARR)
IF (GLB_WD <= GLASS_ARR[I,2] .AND. GLB_HT <= GLASS_ARR[I,3]) .OR. ;
(GLB_WD <= GLASS_ARR[I,3] .AND. GLB_HT <= GLASS_ARR[I,2])
THISWASTE := (GLASS_ARR[I,2] * GLASS_ARR[I,3]) - THISSIZE
IF THISWASTE < BESTWASTE
BESTWASTE := THISWASTE
BEST_BOX2 := GLASS_ARR[I,1]
ENDIF
ENDIF
NEXT
ELSE
THISSIZE := GLB_WD * GLB_HT * 2
FOR I := 1 TO LEN(GLASS_ARR)
IF ((GLB_WD * 2) <= GLASS_ARR[I,2] .AND. GLB_HT <= GLASS_ARR[I,3]) .OR. ;
((GLB_WD * 2) <= GLASS_ARR[I,3] .AND. GLB_HT <= GLASS_ARR[I,2]) .OR. ;
(GLB_WD <= GLASS_ARR[I,2] .AND. (GLB_HT * 2) <= GLASS_ARR[I,3]) .OR. ;
(GLB_WD <= GLASS_ARR[I,3] .AND. (GLB_HT * 2) <= GLASS_ARR[I,2])
THISWASTE := (GLASS_ARR[I,2] * GLASS_ARR[I,3]) - THISSIZE
IF THISWASTE < BESTWASTE
BESTWASTE := THISWASTE
BEST_BOX2 := GLASS_ARR[I,1]
ENDIF
ENDIF
NEXT
ENDIF
IF BEST_BOX1 = NIL
BEST_BOX1 := '??'
ENDIF
IF BEST_BOX2 = NIL
BEST_BOX2 := '??'
ENDIF
IF ORIEL
RETURN 'Top~-~BOX~' + ALLTRIM(BEST_BOX1) + ' Bottom~-~BOX~' + ALLTRIM(BEST_BOX2)
ELSE
SQFT_SAVED := (WASTE1 - BESTWASTE) / 144
IF BEST_BOX1 <> '??'
RETVAL := ' BOX~' + ALLTRIM(BEST_BOX1)
ENDIF
IF BEST_BOX2 <> '??'
RETVAL := RETVAL + ' -or- 2/1~use~BOX~';
+ ALLTRIM(BEST_BOX2) + ' (~' + ALLTRIM(STR(SQFT_SAVED,7,2)) ;
+ '~Saved~)'
ENDIF
ENDIF
RETVAL := ALLTRIM(RETVAL)
RETURN ' ' + RETVAL
************************************************************
************************************************************
************************************************************
FUNCTION CK_HALF_SIZE(ITEM_CAT_CODE, SELFILE, OPTFILE, OR_ARR, RAN_SLID, P_WIDTH, P_HEIGHT, EXP_REQ, IS_ALWAYS_SLID, G_ARR)
LOCAL SEEKKEY, FACT, CALC_VAR, PRNT_VAR := '', ORI_SIZE
LOCAL OR_TOP := OR_ARR[1], OR_BOT := OR_ARR[2], IS_SLIDER := .F.
LOCAL WK_HEIGHT, WK_WIDTH, SAVESEL := SELECT()
// NORMALLY, HALF SIZE IS HEIGHT / 2 UNLESS RANCH SLIDER
// WINDOW ROTATED 90 DEGREES (HT BECOMES WIDTH, WD BECOMES HT)
IF RAN_SLID .OR. IS_ALWAYS_SLID
WK_WIDTH := P_HEIGHT
WK_HEIGHT := P_WIDTH
ELSE
WK_WIDTH := P_WIDTH
WK_HEIGHT := P_HEIGHT
ENDIF
IF CATEGORY->(DBSEEK(ITEM_CAT_CODE))
IF CATEGORY->PRNT_HS = 'Y' .AND. ;
( EMPTY(CATEGORY->HS_RULE) .OR. CHK_RULE(CATEGORY->HS_RULE, G_ARR , , SELFILE) )
// PRINT CALC_VAR DIVIDED BY 2 INCLUDING FRACTIONS
FACT := 2
ELSE
SELECT (SAVESEL)
RETURN '' //** P3N - 6/17/99
//**RETURN NIL //** P3N - 6/17/99
ENDIF
IF OR_TOP <> 0
IF (SELFILE)->IN_STOCK$'Y'
PRNT_VAR := ' '
ELSE
// ADDED IOLA CONDITION 6-6-95 - DON
IF EXP_REQ .AND. MHOME_LOC_CODE = 'KC'
TOPNUM := OR_TOP + .5
ELSE
TOPNUM := OR_TOP
ENDIF
TOPPART := TOPNUM
BOTPART := WK_HEIGHT - TOPPART
PRNT_VAR := ' ( ' + PRNT_SIZE(TOPPART, BOTPART, '/') + ' )'
ENDIF
ELSEIF OR_BOT <> 0
IF (SELFILE)->IN_STOCK$'Y'
PRNT_VAR := ' '
ELSE
IF EXP_REQ .AND. MHOME_LOC_CODE = 'KC'
BOTNUM := OR_BOT - .5
ELSE
BOTNUM := OR_BOT
ENDIF
TOPPART := WK_HEIGHT - BOTNUM
BOTPART := BOTNUM
PRNT_VAR := ' ( ' + PRNT_SIZE(TOPPART, BOTPART, '/') + ' )'
ENDIF
ELSE
CALC_VAR := WK_HEIGHT / FACT
// PRINT THIS AS THE HALF SIZE
PRNT_VAR := ' ( ' + PRNT_SIZE(CALC_VAR, NIL) + ' )'
ENDIF
ENDIF
SELECT (SAVESEL)
RETURN STRTRAN(PRNT_VAR, ' ', '~')
**********************************************
**********************************************
**********************************************
FUNCTION CK_XTRAWIND(SELFILE, OPTFILE, ADDL_MODE)
// IS IT AN EXTRA WINDOW SITUATION?
LOCAL SAVESEL := SELECT(), RETVAL := 0, I
LOCAL SEEKKEY := '' //** P3N - 05/24/02
SELECT (SELFILE)
FOR I := 1 TO 2
IF I = 1
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'XTRA WIND')
ELSE
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'FRENCH STY')
ENDIF
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (OPTFILE) // EITHER ORDER_OPTS OR ADDL_OPTS
SEEK SEEKKEY
IF FOUND()
IF I = 1
RETVAL := VAL(USER_RESP)
ELSE
RETVAL := 1
ENDIF
ENDIF
// IF ADDL_MODE AND CHECK IF XTRA PARENT WINDOWS. IF SO,
// THE ADD-ON PRODUCT MUST GET EXTRAS ALSO
IF ADDL_MODE
SEEKKEY := (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'XTRA WIND'
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (CUR_OO) // PARENT OPTIONS
SEEK SEEKKEY
IF FOUND()
IF I = 1
RETVAL := VAL(USER_RESP)
ELSE
RETVAL := 1
ENDIF
ENDIF
ENDIF
IF RETVAL <> 0
EXIT
ENDIF
NEXT
SELECT (SELFILE)
RETURN RETVAL
**********************************************
**********************************************
**********************************************
FUNCTION ALWAYS_SLIDER(SELFILE, OPTFILE, ADDL_MODE)
// IS IT ALWAYS A RANCH SLIDER?
LOCAL SAVESEL := SELECT(), RAN_SLID := .F.
SELECT (SELFILE)
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'RANCH SLID')
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (OPTFILE) // EITHER ORDER_OPTS OR ADDL_OPTS
SEEK SEEKKEY
IF FOUND()
IF ALLTRIM(USER_RESP) == 'ALWAYS SLIDER'
RAN_SLID = .T.
ENDIF
ENDIF
// IF ADDL_MODE AND PARENT IS A SLIDER
// THE ADD-ON PRODUCT MUST BE A SLIDER ALSO
IF !RAN_SLID .AND. ADDL_MODE
SEEKKEY := (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'RANCH SLID'
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (CUR_OO) // PARENT OPTIONS
SEEK SEEKKEY
IF FOUND()
IF ALLTRIM(USER_RESP) == 'ALWAYS SLIDER'
RAN_SLID = .T.
ENDIF
ENDIF
ENDIF
SELECT (SELFILE)
RETURN RAN_SLID
**********************************************
**********************************************
**********************************************
FUNCTION CK_SLIDER(SELFILE, OPTFILE, ADDL_MODE)
// IS IT A RANCH SLIDER?
LOCAL SAVESEL := SELECT(), RAN_SLID := .F.
SELECT (SELFILE)
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'RANCH SLID')
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (OPTFILE) // EITHER ORDER_OPTS OR ADDL_OPTS
SEEK SEEKKEY
IF FOUND()
IF ALLTRIM(USER_RESP) == 'RANCH SLIDER'
RAN_SLID = .T.
ENDIF
ENDIF
// IF ADDL_MODE AND PARENT IS A SLIDER
// THE ADD-ON PRODUCT MUST BE A SLIDER ALSO
IF !RAN_SLID .AND. ADDL_MODE
SEEKKEY := (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'RANCH SLID'
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (CUR_OO) // PARENT OPTIONS
SEEK SEEKKEY
IF FOUND()
IF ALLTRIM(USER_RESP) == 'RANCH SLIDER'
RAN_SLID = .T.
ENDIF
ENDIF
ENDIF
SELECT (SELFILE)
RETURN RAN_SLID
**********************************************
* CHECK FOR A FRENCH DOOR ATTRIBUTE !
* PERRY - 2-11-98
**********************************************
FUNCTION CK_FRENCH(SELFILE, OPTFILE, ADDL_MODE)
// IS IT A FRENCH STYLE DOOR KIT?
LOCAL SAVESEL := SELECT(), FRENCHDOOR := .F.
SELECT (SELFILE)
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'FRENCH STY')
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (OPTFILE) // EITHER ORDER_OPTS OR ADDL_OPTS
SEEK SEEKKEY
IF FOUND()
IF ALLTRIM(USER_RESP) == 'FRENCH STYLE KIT'
FRENCHDOOR := .T.
ENDIF
ENDIF
SELECT (SELFILE)
RETURN FRENCHDOOR
**********************************************
**********************************************
**********************************************
FUNCTION CK_MULLS(SELFILE, OPTFILE)
// IS MULL REQUIRED?
LOCAL SAVESEL := SELECT(), MULL_REQ := .F., MULL_TYPE := NIL
SELECT (SELFILE)
SEEKKEY := BLD_OPT_SEEK(SELFILE, 'MULL LOC ')
// DIRECT SEEK ON THIS ATTRIBUTE
SELECT (OPTFILE) // EITHER ORDER_OPTS OR ADDL_OPTS
SEEK SEEKKEY
IF FOUND()
IF !EMPTY(USER_RESP) .AND. ALLTRIM(USER_RESP) <> 'N/A'
MULL_REQ = .T.
ENDIF
IF ALLTRIM(USER_RESP) == 'CENTER VERTICAL'
MULL_TYPE = ALLTRIM(USER_RESP)
ENDIF
ENDIF
SELECT (SELFILE)
RETURN {MULL_REQ, MULL_TYPE}
******************************************************************
******************************************************************
******************************************************************
FUNCTION BLD_OPT_SEEK(SELFILE, MATT_CODE)
//BUILD THE SEEKKEY FOR OPTIONS FILE
//**LOCAL SEEKKEY //** P3N - 07/19/13 - ABEND LINDA @ LINDS -
LOCAL SEEKKEY := '' //** P3N - 07/19/13 - ABEND LINDA @ LINDS - JUST IN CASE NOT FOUND ASSIGN TO EMPTY
IF SELFILE == CUR_OL
SEEKKEY = (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + MATT_CODE
ELSEIF SELFILE == CUR_XL
SEEKKEY = (SELFILE)->ORDER_NUM + (SELFILE)->PROD_CODE + STR( (SELFILE)->LINE_NUM,3) + MATT_CODE
ENDIF
RETURN SEEKKEY
******************************************************************
******************************************************************
******************************************************************
FUNCTION CK_ORIEL(ITEM_CAT_CODE, SELFILE, OPTFILE, ADDL_MODE, RAN_SLID, IS_ALWAYS_SLID )
LOCAL SAVESEL := SELECT()
LOCAL SEEKKEY, BALANCE_SIZE, WORKVAL1, WORKVAL2, WORKVAL3
LOCAL OR_TOP := 0, OR_BOT := 0, OR_ARR := {}, STDBOTTSASH := .F.
LOCAL SCRNSIZE, WORKDIFF, OR_REASON := 'NO ORIEL'
LOCAL OR_SCR := 0 ,OR_GLASS := 0, ODD_ORIEL := .F., DEFAULT_ORIEL := .F.
LOCAL SIZEARR := {}, MWIDTH, MHEIGHT
IF EMPTY(IS_ALWAYS_SLID) //** P3N - 3/24/99
IS_ALWAYS_SLID := .F. //** P3N - 3/24/99
ENDIF //** P3N - 3/24/99
// ORIEL SPECIFICATIONS APPEAR IN PARENT SPECS ONLY
SEEKKEY = (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'ORIEL TOP'
SELECT(CUR_OO)
SEEK SEEKKEY
IF FOUND()
OR_TOP := DECVAL(USER_RESP)
OR_REASON := 'ATT CODE'
ENDIF
SEEKKEY = (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'ORIEL BOTT'
SELECT(CUR_OO)
SEEK SEEKKEY
IF FOUND()
OR_BOT := DECVAL(USER_RESP)
OR_REASON := 'ATT CODE'
ENDIF
SEEKKEY = (SELFILE)->ORDER_NUM + STR( (SELFILE)->LINE_NUM,3) + 'ORIEL BOTT'
SELECT(CUR_OO)
SEEK SEEKKEY
IF FOUND()
OR_BOT := DECVAL(USER_RESP)
OR_REASON := 'ATT CODE'
ENDIF
IF !ADDL_MODE .AND. PRODUCT->SS_BOTSASH$'Y'
STDBOTTSASH := .T.
ENDIF
SELECT PRODUCT
SAVEREC := RECNO()
IF ADDL_MODE
SEEK (CUR_XL)->PAR_PROD
IF FOUND() .AND. PRODUCT->SS_BOTSASH$'Y'
STDBOTTSASH := .T.
ENDIF
ENDIF
// CHECK THE STDSASH FILE AND FORCE TO OR_BOT
IF OR_TOP = 0 .AND. OR_BOT = 0
IF STDBOTTSASH
SEEKKEY := PRODUCT->PROD_CODE
SELECT STD_SASH
SEEK SEEKKEY
WORKVAL1 := (SELFILE)->ACT_HEIGHT
DO WHILE PROD_CODE == SEEKKEY .AND. !EOF()
WORKVAL2 := DECVAL( UP_TO_SIZE )
IF WORKVAL1 <= WORKVAL2
BALANCE_SIZE := BOTT_SASH
IF BOTT_SIZE = 0
WORKVAL3 := DECVAL( BOTT_SASH )
ELSE
WORKVAL3 := BOTT_SIZE * 2 // WILL DIVIDE BY 2 BELOW!
ENDIF
WORKDIFF = ABS( WORKVAL1 - WORKVAL3 )
IF ADDL_MODE .AND. ALLTRIM(ITEM_CAT_CODE) = 'STORMS' ;
.AND. WORKDIFF <= 1.5 // DON'T ADDJUST ADD ON STORMS WITHIN 1.5 INCHES OF BALANCE SIZE
ELSE
IF (SELFILE)->HOW_MEAS == 'NS' //** P3N - 07/05/01
//** STD SASH/NOM SIZE ADJUSTMENT //** P3N - 07/05/01
//** RE: PAWNEE - DARYL //** P3N - 07/05/01
//** OR_BOT := (WORKVAL3 / 2) + WORKDIFF // UNEQUAL ORIEL LITES
ELSE
WORKDIFF := WORKVAL1 - VAL(BALANCE_SIZE) //** P3N - 06/29/01
//** OR_BOT := WORKVAL3 / 2 // UNEQUAL ORIEL LITES
ENDIF
OR_BOT := WORKVAL3 / 2 // UNEQUAL ORIEL LITES //P3N-07/05/01
OR_REASON := 'BAL ADJ'
ENDIF
EXIT
ENDIF
SKIP 1
ENDDO
ENDIF
ENDIF
IF (!ADDL_MODE .AND. (SELFILE)->ORIEL_SIZE = 'Y') .OR. ;
(ADDL_MODE .AND. (CUR_OL)->ORIEL_SIZE = 'Y')
// CONVERT EVERY THING TO ACTUAL SIZE AND SEEK FOR STD_SIZE TABLE
SELECT STD_SIZES // CHECK IF NORMAL ORIEL SIZE
DONSETORD(2)
IF EMPTY( (SELFILE)->PAR_PROD )
MWIDTH := DECVAL( (SELFILE)->WIDTH )
MHEIGHT:= DECVAL( (SELFILE)->HEIGHT)
SIZE_ARR := CONV_SIZE( (SELFILE)->PROD_CODE, MWIDTH,;
MHEIGHT, (SELFILE )->HOW_MEAS, .T.)
SEEK (SELFILE)->PROD_CODE + STR(SIZE_ARR[1],10,6) + STR(SIZE_ARR[2],10,6)
ELSE
MWIDTH := DECVAL( (CUR_OL)->WIDTH )
MHEIGHT:= DECVAL( (CUR_OL)->HEIGHT )
SIZE_ARR := CONV_SIZE( (SELFILE)->PAR_PROD, MWIDTH,;
MHEIGHT, (SELFILE)->HOW_MEAS, .T.)
SEEK (SELFILE)->PAR_PROD + STR(SIZE_ARR[1],10,6) + STR(SIZE_ARR[2],10,6)
ENDIF
IF FOUND() .AND. ORIEL_SIZE$'X' // NORMALLY AN ORIEL
IF (OR_TOP = 0 .AND. OR_BOT = 0) ;
.OR. OR_REASON = 'BAL ADJ' // NO OVERRIDES - USE STD TABLE DEFAULT
IF ALLTRIM(ITEM_CAT_CODE) == 'STORMS' ;
.AND. (ADDL_MODE .OR. !EMPTY( (SELFILE)->PAR_PROD) )
OR_TOP := TOP_STORM
ELSE
OR_TOP := ORIEL_TOP
ENDIF
OR_BOT := 0
OR_REASON := 'DEFAULT'
OR_SCR := ORIEL_SCRN
OR_GLASS := TOP_GLASS
ODD_ORIEL := .F.
DEFAULT_ORIEL := .T.
ELSE
ODD_ORIEL := .T.
ENDIF
ENDIF
ENDIF
SELECT PRODUCT
GOTO SAVEREC
IF OR_TOP <> 0 .AND. OR_BOT = 0
//** IF !RAN_SLID
//** OR_BOT := (SELFILE)->ACT_HEIGHT - OR_TOP
//** ELSE
//** OR_BOT := (SELFILE)->ACT_WIDTH - OR_TOP
//** ENDIF
IF RAN_SLID //** P3N - 02/01/99
OR_BOT := (SELFILE)->ACT_WIDTH - OR_TOP //** P3N - 02/01/99
ELSEIF IS_ALWAYS_SLID //** P3N - 02/01/99
OR_BOT := (SELFILE)->ACT_WIDTH - OR_TOP //** P3N - 02/01/99
ELSE //** P3N - 02/01/99
OR_BOT := (SELFILE)->ACT_HEIGHT - OR_TOP //** P3N - 02/01/99
ENDIF
ENDIF
IF OR_BOT <> 0 .AND. OR_TOP = 0
//** IF !RAN_SLID
//** OR_TOP := (SELFILE)->ACT_HEIGHT - OR_BOT
//** ELSE
//** OR_TOP := (SELFILE)->ACT_WIDTH - OR_BOT
//** ENDIF
IF RAN_SLID //** P3N - 02/01/99
OR_TOP := (SELFILE)->ACT_WIDTH - OR_BOT //** P3N - 02/01/99
ELSEIF IS_ALWAYS_SLID //** P3N - 02/01/99
OR_TOP := (SELFILE)->ACT_WIDTH - OR_BOT //** P3N - 02/01/99
ELSE //** P3N - 02/01/99
OR_TOP := (SELFILE)->ACT_HEIGHT - OR_BOT //** P3N - 02/01/99
ENDIF //** P3N - 02/01/99
ENDIF
SELECT (SAVESEL)
RETURN {OR_TOP, OR_BOT, BALANCE_SIZE, OR_REASON, OR_SCR, OR_GLASS, ODD_ORIEL, DEFAULT_ORIEL, WORKDIFF }
//**RETURN {OR_TOP, OR_BOT, BALANCE_SIZE, OR_REASON, OR_SCR, OR_GLASS, ODD_ORIEL, DEFAULT_ORIEL }
*********************************************************************
* BUILD THE BODY OF THE ORDER
*********************************************************************
FUNCTION BLD_BODY(OL_ARR, WHICH_TYPE, WHCH_LOCATION, PBODY_ARR, ;
PAMTS_ARR, WHCHORDER, SUBTYPE, INCL_ALL_LINES,;
DO_CUT_SPECS, PARTIAL_INVOICE, REPRINT_INVOICE)
LOCAL PRNT_DESC, PRNT_LEN := 42, PRNTOUTVAR, PRNT_VAL
LOCAL PRNT_PRICE, PRNT_QTY, XX, I, II, WAMTS_ARR
LOCAL PAMTS := NIL, MLINE_DESC, X1, X2
LOCAL LI_TTL := 0, LI_QTY := 0, CUT_SPEC_ARR, VENTPOS := ''
LOCAL BK_ORD := 0, WORKOUT, WORKQTY := 0, OPT := 0, PRTOPT := ''
LOCAL PRT_AMT := .T., WORKVAR, SPEC_CHAR, WORKDESC
LOCAL PRT_BO := .T., RETVARVARR := {}, XFACTOR, WORKARR, OPTARR := {}
LOCAL WORKDESC1, WORKDESC2, RETVARARR := {}, MGL_LINE_DESC := ''
LOCAL MWHEREFROM := OL_ARR[8] //** P3N - 5/26/99
LOCAL SHIP_QTY := 0, QTYARR := {} //** P3N - 5/1/98
LOCAL GETARR := {}, WKARR := {} //** P3N - 8/17/98
LOCAL MPROD_CODE := OL_ARR[10] //** P3N - 8/17/98
LOCAL MLINE_NUM := OL_ARR[9] //** P3N - 8/17/98
LOCAL USE_TEMP := .F. //** P3N - 8/17/98
LOCAL ADDL_MODE := .F. //** P3N - 8/17/98
LOCAL PPR_CUSTID := NIL //** P3N - 8/17/98
LOCAL DISP_WAIT := .F. //** P3N - 8/17/98
LOCAL PRNT_DESARR := {} //** P3N - 8/17/98
LOCAL INV_QTY := OL_ARR[17] //** P3N - 12/3/98
LOCAL BKOPROD := MPROD_SUMMARY(MPROD_CODE) //** P3N - 2/2/99
STATIC VPARR := {} //** P3N - 11/26/01
//**STATIC PRIORPROD := '' //** P3N - 11/26/01
//**STATIC PRIORLINE := '' //** P3N - 11/26/01
//DEFAULT PARTIAL_INVOICE := .F.
//DEFAULT REPRINT_INVOICE := .F.
If( PARTIAL_INVOICE == nil, PARTIAL_INVOICE := .F., )
If( REPRINT_INVOICE == nil, REPRINT_INVOICE := .F., )
IF EMPTY(REPRINT_INVOICE) //** P3N - 12/3/98
REPRINT_INVOICE := .F. //** P3N - 12/3/98
ENDIF //** P3N - 12/3/98
IF EMPTY(PARTIAL_INVOICE) //** P3N - 11/16/98
PARTIAL_INVOICE := .F. //** P3N - 11/16/98
ENDIF //** P3N - 11/16/98
IF FORMTYPE <> 'PREPRINT' .AND. !DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
PRNT_LEN := 60
ENDIF
PRNT_DESC := ALLTRIM(OL_ARR[2])
IF MHOME_LOC_CODE = 'IOLA' //** P3N - 08/26/02 - FIX DARLENES SPECIAL CUSTOMER IC/PO DESC PRINTING
//**IF WHICH_TYPE == 'PO' //** P3N - 2/22/02
ELSEIF WHICH_TYPE == 'PO' //** P3N - 08/26/02
(CUR_OL)->(DBSEEK(MORDER_NUM+MLINE_NUM)) //** P3N - 2/22/02
(CUR_XL)->(DBSEEK(MORDER_NUM+MPROD_CODE+MLINE_NUM)) //** P3N - 2/22/02
IF MWHEREFROM = 'XL' //** P3N - 2/22/02
ADDL_MODE := .T. //** P3N - 2/22/02
ENDIF //** P3N - 2/22/02
WKARR := BUILD_GETARR( MPROD_CODE, 1, MORDER_NUM, MLINE_NUM, '', ;
USE_TEMP, ADDL_MODE, PPR_CUSTID, DISP_WAIT, CUR_OL)
GETARR := WKARR[1] //** P3N - 2/22/02
PRNT_DESARR := BLD_DESC(GETARR, CUR_OL, WHICH_TYPE, MPROD_CODE, SUBTYPE) //** P3N - 02/22/02
PRNT_DESC := PRNT_DESARR[1] //** P3N - 2/22/02
ENDIF
IF WHCHORDER == 'BACKORD' //** P3N - 8/17/98
//** COMMENTED OUT P3N - 5/26/99
//** IF SUBTYPE == 'BACKORD' //** P3N - 5/26/99
//** IF EMPTY(PRIORPROD) //** P3N - 11/26/01
//** PRIORPROD := MPROD_CODE //** P3N - 11/26/01
//** ENDIF //** P3N - 11/26/01
//** IF EMPTY(PRIORLINE) //** P3N - 11/26/01
//** PRIORLINE := MLINE_NUM //** P3N - 11/26/01
//** ENDIF //** P3N - 11/26/01
IF MWHEREFROM = 'XL' //** P3N - 11/26/01
ADDL_MODE := .T. //** P3N - 11/26/01
//** ELSEIF PRIORPROD == MPROD_CODE .AND. ; //** P3N - 11/26/01
//** PRIORLINE == MLINE_NUM //** P3N - 11/26/01
ELSEIF EMPTY(PBODY_ARR) //** P3N - 11/26/01
//** PRIORPROD := MPROD_CODE //** P3N - 11/26/01
//** PRIORLINE := MLINE_NUM //** P3N - 11/26/01
VPARR := {} //** P3N - 11/26/01
VENTPOS := '' //** P3N - 11/26/01
ENDIF //** P3N - 11/26/01
IF SUBTYPE == 'SCREENS' .AND. MWHEREFROM = 'OL' //** P3N - 5/26/99
ELSE
(CUR_OL)->(DBSEEK(MORDER_NUM+MLINE_NUM)) //** P3N - 8/17/98
(CUR_XL)->(DBSEEK(MORDER_NUM+MPROD_CODE+MLINE_NUM)) //**P3N-11/26/01
WKARR := BUILD_GETARR( MPROD_CODE, 1, MORDER_NUM, MLINE_NUM, '', ;
USE_TEMP, ADDL_MODE, PPR_CUSTID, DISP_WAIT, CUR_OL)
GETARR := WKARR[1]
IF ADDL_MODE //** P3N -11/26/01
ELSE //** P3N -11/26/01
ELM := ASCAN(GETARR, {|X| X[1] = 'VENT POS'} ) //** P3N -11/26/01
IF EMPTY(ELM) //** P3N -11/26/01
//** VENTPOS := '' //** P3N -11/26/01
PRTOPT := 'N' //** P3N -11/26/01
ELSE //** P3N -11/26/01
OPTARR := GETARR[ELM,OPT_ARR] //** P3N -11/26/01
OPT := ASCAN(OPTARR, {|X| X[1] = GETARR[ELM,4]} ) //** P3N -11/26/01
IF EMPTY(OPT) //** P3N -11/26/01
PRTOPT := 'N' //** P3N -11/26/01
ELSE //** P3N -11/26/01
PRTOPT := OPTARR[OPT,OPT_PIND] //** P3N -11/26/01
ENDIF //** P3N -11/26/01
IF PRTOPT == 'N' // NEVER PRINT DESCRIPTION
VENTPOS := '' //** P3N -11/26/01
ELSE //** P3N -11/26/01
VENTPOS := ALLTRIM(GETARR[ELM,4]) //** P3N -11/26/01
AADD(VPARR,{TRIM(MPROD_CODE), MLINE_NUM, VENTPOS})
ENDIF //** P3N -11/26/01
ENDIF //** P3N -11/26/01
ENDIF //** P3N -11/26/01
PRNT_DESARR := BLD_DESC(GETARR, CUR_OL, WHCHORDER, MPROD_CODE, SUBTYPE)
PRNT_DESC := PRNT_DESARR[1] //** P3N - 8/17/98
IF EMPTY(VPARR) //** P3N -11/26/01
ELSEIF ADDL_MODE //** P3N -11/26/01
VELM := ASCAN(VPARR, {|X| X[1] == BKOPROD .AND. X[2] == MLINE_NUM })
IF EMPTY(VELM) //** P3N -11/26/01
VENTPOS := '' //** P3N -11/26/01
ELSE //** P3N -11/26/01
VENTPOS := VPARR[VELM,3] //** P3N -11/26/01
ENDIF //** P3N -11/26/01
PRNT_DESC := PRNT_DESC + ' - '+STRTRAN(VENTPOS,' ','~') //** P3N -11/26/01
ENDIF //** P3N -11/26/01
ENDIF
ENDIF //** P3N - 8/17/98
IF WHICH_TYPE == 'CTRL' .AND. !(OL_ARR[1] == MHOME_LOC_CODE) ;
.AND. MHOME_LOC_CODE <> 'KC'
PRNT_DESC := ALLTRIM(PRNT_DESC) + ' (' ;
+ ALLTRIM(OL_ARR[1]) + '~PO#' + ')'
ENDIF
//** P3N - 5/13/98
//** PRINT BACKORDERED ITEMS
QTYARR := ORD_QTYS(WHCHORDER, OL_ARR)
PRNT_QTY := QTYARR[1] // LINE ITEM QTY
SHIP_QTY := QTYARR[2] // ITEMS SHIPPED
BK_ORD := QTYARR[3] // ITEMS BACKORDERD
IF EMPTY(BK_ORD) .AND. WHCHORDER == 'BACKORD'
//** ONLY PRINT THE BACKORDERED ITEMS
INCL_ALL_LINES := .F. //** P3N - 9/9/98
//** P3N - 2/2/99 - SUMMARIZE SCREENS ON BACKORDERS TO MODEL LEVEL
ELSEIF WHICH_TYPE == 'BACKORD' .AND. SUBTYPE == 'SCREENS' //** P3N - 2/02/99
IF !(BKOPROD == SAVE_BKOPROD) //** P3N - 2/02/99 PRINT BACKORDER
SPEC_CHAR := '^' //** P3N - 2/02/99 SCREENS SUMMARIZED
IF LEN(PRNT_DESC) <= PRNT_LEN //** P3N - 2/02/99 TO THE MODEL LVL
IF !EMPTY(PBODY_ARR) .AND. !EMPTY(PBODY_ARR[LEN(PBODY_ARR)])
IF PBODY_ARR[LEN(PBODY_ARR)] == '-----'
// ONLY double space when one line item for a given product
ELSE
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
AADD(PBODY_ARR, SPEC_CHAR + STRTRAN(PRNT_DESC, '~', ' ' ) )
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
AADD(PAMTS_ARR, NIL)
SAVE_DESC1 := ALLTRIM(PRNT_DESC)
ELSE
MEMOCNT := MLCOUNT(PRNT_DESC, PRNT_LEN, 0, .T.)
PRNTOUTVAR = STRTRAN(PRNT_DESC, CHR(248), CHR(179))
FOR II = 1 TO MEMOCNT
PRNT_VAL := MEMOTRAN(MEMOLINE(PRNTOUTVAR, PRNT_LEN, II, 0, .T.), '')
IF II = 1
IF !EMPTY(PBODY_ARR) .AND. !EMPTY(PBODY_ARR[LEN(PBODY_ARR)])
IF PBODY_ARR[LEN(PBODY_ARR)] == '-----'
// ONLY double space when one line item for a given product
ELSE
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
AADD(PBODY_ARR, SPEC_CHAR + STRTRAN(PRNT_VAL, '~', ' ') )
AADD(PAMTS_ARR, NIL)
SAVE_DESC1 := ALLTRIM(PRNT_VAL)
ELSE
AADD(PBODY_ARR, STRTRAN(PRNT_VAL, '~', ' ') )
AADD(PAMTS_ARR, NIL)
ENDIF
NEXT
AADD(PBODY_ARR, ' ' ) // OK - LEAVE HERE!
AADD(PAMTS_ARR, NIL)
ENDIF //** P3N - 2/02/99
//** P3N - 2/02/99
SAVE_BKOPROD := BKOPROD //** P3N - 2/02/99
ENDIF
ELSEIF !(PRNT_DESC == SAVE_DESC) .OR. !(WHICH_TYPE == SAVE_TYPE)
SPEC_CHAR := '^'
IF WHICH_TYPE = 'STORM' .AND. !(PRNT_DESC = SAVE_DESC1)
SPEC_CHAR := '^' + CHR(1)
ENDIF
// IF SPEC_CHAR = '^' + CHR(1) THEN A NEW PAGE WILL BE FORCED
IF WHICH_TYPE = 'EXPANDER' .AND. !(PRNT_DESC = SAVE_DESC1) ;
.AND. MHOME_LOC_CODE = 'KC'
SPEC_CHAR := '^' + CHR(1)
ENDIF
IF LEN(PRNT_DESC) <= PRNT_LEN
IF !EMPTY(PBODY_ARR) .AND. !EMPTY(PBODY_ARR[LEN(PBODY_ARR)])
IF PBODY_ARR[LEN(PBODY_ARR)] == '-----'
// ONLY double space when one line item for a given product
ELSE
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
AADD(PBODY_ARR, SPEC_CHAR + STRTRAN(PRNT_DESC, '~', ' ' ) )
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
AADD(PAMTS_ARR, NIL)
SAVE_DESC1 := ALLTRIM(PRNT_DESC)
ELSE
MEMOCNT := MLCOUNT(PRNT_DESC, PRNT_LEN, 0, .T.)
PRNTOUTVAR = STRTRAN(PRNT_DESC, CHR(248), CHR(179))
FOR II = 1 TO MEMOCNT
PRNT_VAL := MEMOTRAN(MEMOLINE(PRNTOUTVAR, PRNT_LEN, II, 0, .T.), '')
IF II = 1
IF !EMPTY(PBODY_ARR) .AND. !EMPTY(PBODY_ARR[LEN(PBODY_ARR)])
IF PBODY_ARR[LEN(PBODY_ARR)] == '-----'
// ONLY double space when one line item for a given product
ELSE
AADD(PBODY_ARR, ' ' )
AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
AADD(PBODY_ARR, SPEC_CHAR + STRTRAN(PRNT_VAL, '~', ' ') )
AADD(PAMTS_ARR, NIL)
SAVE_DESC1 := ALLTRIM(PRNT_VAL)
ELSE
AADD(PBODY_ARR, STRTRAN(PRNT_VAL, '~', ' ') )
AADD(PAMTS_ARR, NIL)
ENDIF
NEXT
AADD(PBODY_ARR, ' ' ) // OK - LEAVE HERE!
AADD(PAMTS_ARR, NIL)
ENDIF
SAVE_DESC := PRNT_DESC
SAVE_BKOPROD := BKOPROD //** P3N - 2/02/99
ENDIF
IF INCL_ALL_LINES
IF VALTYPE(OL_ARR[3]) = 'A' //** ARRAY -SCREEN COPY
IF WHCHORDER == 'BACKORD'
DO_CUT_SPECS := .F.
PRNT_VAL := ALLTRIM(OL_ARR[3,2]) //* 2 - BO SCREEN DESC
ELSE
PRNT_VAL := ALLTRIM(OL_ARR[3,1]) //* 1 - SCREEN DESC
ENDIF
ELSE
PRNT_VAL := ALLTRIM(OL_ARR[3]) // ITEM LINE DESC
ENDIF
IF !EMPTY( OL_ARR[14])
MLINE_DESC := ALLTRIM(OL_ARR[14])
ELSE
MLINE_DESC := NIL
ENDIF
PRNT_PRICE := OL_ARR[4] // ITEM PRICE
XFACTOR := OL_ARR[12] // XTRA WINDOWS
PRT_AMT := DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
IF WHCHORDER $ 'INV BACKORD' .AND. CUR_MAST = 'ORD_MAST' //** P3N - 5/12/98
PRT_BO := .T.
ELSE
PRT_BO := .F.
ENDIF
IF EMPTY(OL_ARR[6]) // LINE ITEM NOTES - LINE_NOTES IN LINE DBF
ELSEIF OL_ARR[16] == 'A' // PRINT THE NOTES ABOVE THE LINE ITEM
RETVARARR := PRT_MEMO(PBODY_ARR, PAMTS_ARR, OL_ARR[6], PRNT_LEN) // PRINT THE LINE ITEM NOTES
PBODY_ARR := RETVARARR[1]
PAMTS_ARR := RETVARARR[2]
ENDIF
// ALL LINE ITEM DETAIL AMOUNTS
IF EMPTY(PRNT_VAL) // NO LINE ITEM DESC. - NO AMOUNTS
PAMTS := NIL
ELSEIF WHCHORDER == 'BACKORD' //** P3N - 5/14/98
PAMTS := { 0 , 0 , BK_ORD , PRNT_PRICE, PRT_AMT, PRT_BO, XFACTOR, , INV_QTY }
ELSE
PAMTS := { PRNT_QTY, BK_ORD, SHIP_QTY, PRNT_PRICE, PRT_AMT, PRT_BO, XFACTOR, , INV_QTY }
ENDIF
IF WHICH_TYPE == 'INV' .OR. WHICH_TYPE == 'CTRL' // CUSTOMER INVOICE OR PROD CONTROL COPY
IF OL_ARR[4] == NIL // LINE ITEM TOTAL
ELSEIF PARTIAL_INVOICE
//** P3N - 11/23/98 - PARTIAL INVOICE MODIFICATIONS
LI_TTL := LI_TTL + (PRNT_PRICE * SHIP_QTY) // TALLY THE LINE TOTALS
ELSEIF REPRINT_INVOICE
//** P3N - 12/3/98 - REPRINT INVOICE MODIFICATIONS
LI_TTL := LI_TTL + (PRNT_PRICE * INV_QTY) // TALLY THE LINE TOTALS
ELSE
LI_TTL := LI_TTL + (PRNT_PRICE * PRNT_QTY) // TALLY THE LINE TOTALS
ENDIF
ENDIF
IF EMPTY(OL_ARR[6]) //LINE ITEM NOTES - LINE_NOTES IN LINE DBF
ELSEIF OL_ARR[16] == 'B' //PRINT THE NOTES BESIDE THE LINE ITEM
WORKVAR := STRTRAN( ALLTRIM( OL_ARR[6] ), CHR(13), '' )
WORKVAR := STRTRAN( WORKVAR, CHR(10), ' ' )
PRNT_VAL := PRNT_VAL + ' ' + WORKVAR
ENDIF
//** P3N - 5/13/98
//** ONLY PRINT BACKORDERED ITEMS
IF EMPTY(BK_ORD) .AND. WHCHORDER == 'BACKORD'
PRNT_VAL := ' '
DO_CUT_SPECS := .F.
ENDIF
IF !EMPTY(PRNT_VAL)
//**IF DO_CUT_SPECS .AND. !EMPTY(OL_ARR[13]) // LINE ITEM CUTTING SPECS
//** PAMTS := NIL //** P3N - 5/4/99
//**ENDIF //** P3N - 5/4/99
IF LEN(PRNT_VAL) <= PRNT_LEN
IF WHCHORDER == 'PROD' .AND. WHICH_TYPE == 'GLASS' .AND. ; //** P3N - 10/19/99
EMPTY(PRNT_QTY) .AND. EMPTY(SHIP_QTY) .AND. EMPTY(BK_ORD) //** P3N - 10/19/99
MGL_LINE_DESC := PRNT_VAL //** P3N - 10/19/99
ELSE //** P3N - 10/19/99
AADD(PBODY_ARR, STRTRAN(PRNT_VAL,'~',' ') ) // ITEM LINE FOR ALL PRODUCTION ORDERS
AADD(PAMTS_ARR, PAMTS) // ITEM LINE FOR ALL PRODUCTION ORDERS
ENDIF
ELSE
MEMOCNT := MLCOUNT(PRNT_VAL, PRNT_LEN, 0, .T.)
PRNTOUTVAR = STRTRAN(PRNT_VAL, CHR(248), CHR(179))
FOR II = 1 TO MEMOCNT
PRNT_VAL := MEMOTRAN(MEMOLINE(PRNTOUTVAR, PRNT_LEN, II, 0, .T.), '')
AADD(PBODY_ARR, STRTRAN(PRNT_VAL,'~', ' ') )
IF II < MEMOCNT
AADD(PAMTS_ARR, NIL)
ELSE
AADD(PAMTS_ARR, PAMTS)
ENDIF
NEXT
//** REMOVED DUE TO MULIT SPACING AT PAWNEE - P3N - 11/19/99
//** AADD(PBODY_ARR, ' ' ) // GET RID OF THIS BLANK BETWEEN ??
//** AADD(PAMTS_ARR, NIL)
ENDIF
ENDIF
//** P3N*4/1/98 - EXCLUDE PRINT OF CUTTING SPECS
//** P3N*4/1/98 - DOUBLE SPACE !
IF ASCAN(OL_ARR[13], {|X| AT('X', X[9]) > 0 }) > 0
DO_CUT_SPECS := .F.
AADD(PBODY_ARR, ' ' )
AADD( PAMTS_ARR, NIL )
ENDIF
IF DO_CUT_SPECS .AND. !EMPTY(OL_ARR[13]) // LINE ITEM CUTTING SPECS
CUT_SPEC_ARR := OL_ARR[13]
PRNTOUTVAR := {}
FOR I := 1 TO LEN(CUT_SPEC_ARR)
WORKVAR := ''
IF CUT_SPEC_ARR[I,7] <> NIL // CALCULATED RESULT
WORKVAR := WORKVAR + CUT_SPEC_ARR[I,4] + ' ' // PRINT DESC
WORKVAR := WORKVAR + CUT_SPEC_ARR[I,5] + ' ' // PROFILE
WORKVAR := WORKVAR + ': '
AADD(PRNTOUTVAR, {WORKVAR, CUT_SPEC_ARR[I,7], ;
CUT_SPEC_ARR[I,11], CUT_SPEC_ARR[I,12], CUT_SPEC_ARR[I,3], ;
CUT_SPEC_ARR[I,13] , CUT_SPEC_ARR[I,14] , ; // 6-7
CUT_SPEC_ARR[I,15] , CUT_SPEC_ARR[I,16] , ; // 8-9
CUT_SPEC_ARR[I,17] } ) // 10
ENDIF
NEXT
II := 0
WAMTS_ARR := NIL
FOR I := 1 TO LEN(PRNTOUTVAR)
II ++
// DUMP DATA IN "BUFFER" TO START FRESH LINE ON WIDTH/HEIGHT VARS.
IF PRNTOUTVAR[I,3]$'W' .AND. II = 2 // WIDTH/HEIGHT/NOTHING
AADD(PBODY_ARR, STRTRAN(WORKVAR,'~',' ') ) // WAITING TO FILL LINE - DUMP LINE FOR CLEAN WID HT
AADD(PAMTS_ARR, WAMTS_ARR)
WAMTS_ARR := NIL
II := 1
ENDIF
IF II = 1 // 1ST ITEM IN A LINE
WORKVAR := ''
ELSE
WORKVAR := WORKVAR + ' '
ENDIF
IF !PRNTOUTVAR[I,3]$'H' // SINCE A PAIR, TAKE QTY FROM THE WIDTH
// NUM IN SPEC ORD QTY XFACTOR
WORKQTY := PRNTOUTVAR[I,5] * (PRNTOUTVAR[I,6] * (1 + PRNTOUTVAR[I,7]) )
ELSE
WORKQTY := 0
ENDIF
IF !PRNTOUTVAR[I,3]$'WH' // WIDTH/HEIGHT/NOTHING
IF PRNTOUTVAR[I,5] <> 0
WORKVAR := WORKVAR + PADR( ALLTRIM(STR( WORKQTY, 2 )),3)
ELSE
WORKVAR := WORKVAR + CHR(255) + ' '
ENDIF
WORKVAR := WORKVAR + PRNTOUTVAR[I,1]
IF PRNTOUTVAR[I,4]$'D' // FRACTION / DECIMAL
WORKOUT := STR(PRNTOUTVAR[I,2],8,4)
ELSE
WORKOUT := PADR(PRNT_SIZE( PRNTOUTVAR[I,2] ),8)
ENDIF
WORKVAR := WORKVAR + WORKOUT
//** ELSEIF II = 1
ELSEIF II = 1 .OR. II = 3 //** P3N - 4/6/99
// IT IS A WIDTH OR HEIGHT CUT SPEC
IF !EMPTY(PRNTOUTVAR[I,8]) // WIDTH/HEIGHT DESCRIPTION
AADD(PBODY_ARR, PRNTOUTVAR[I,8] )
AADD(PAMTS_ARR, NIL )
ENDIF
WORKVAR := WORKVAR + ' ' + ALLTRIM(PRNT_SIZE( PRNTOUTVAR[I,2] )) + '~~x'
IF WORKQTY = 0
WAMTS_ARR := NIL
ELSEIF WHCHORDER == 'BACKORD'
WAMTS_ARR := { 0 , 0 , BK_ORD , 0, .F., .T., 0 }
************WAMTS_ARR := { SHIP_QTY, BK_ORD, PRNT_QTY , 0, .F., .T., 0 }
ELSE
WAMTS_ARR := { WORKQTY, 0, 0, 0, .F., .F., 0 }
ENDIF
// WIDTH/HEIGHT/NOTHING
ELSE // ASSUME PREVIOUS ONE WAS A WIDTH
WORKVAR := ALLTRIM(WORKVAR) + ' '
WORKVAR := WORKVAR + ALLTRIM(PRNT_SIZE( PRNTOUTVAR[I,2] ))
ENDIF
// LAST ONE ON LINE OR IN ARRAY
//** IF I = LEN(PRNTOUTVAR) .OR. II = 2
//** PRINT STORM COPY COLUMN FORMAT (IE: C200007 @ IOLA)
IF I = LEN(PRNTOUTVAR) .OR. II >= 2 //** P3N - 4/6/99
IF PRNTOUTVAR[I,10] == 'S' //** P3N - 4/6/99
IF II = 2 //** P3N - 4/6/99
WORKVAR := PADR(WORKVAR , 20, ' ') //** P3N - 4/6/99
ELSEIF II = 4 //** P3N - 4/6/99
AADD(PBODY_ARR, STRTRAN(WORKVAR,'~',' ') )
AADD( PAMTS_ARR, WAMTS_ARR ) //** P3N - 4/6/99
WAMTS_ARR := NIL //** P3N - 4/6/99
ENDIF //** P3N - 4/6/99
ELSE
WORKVAR := WORKVAR+' '+MGL_LINE_DESC //** P3N - 10/19/99
AADD(PBODY_ARR, STRTRAN(WORKVAR,'~',' '))
AADD( PAMTS_ARR, WAMTS_ARR )
IF PRNTOUTVAR[I,3]$'WH'
// EXTRA LINE DESCRIPTION
IF !EMPTY(OL_ARR[14]) .AND. PRNTOUTVAR[I,10]$'Y ' // PRINT ITEM DESC
AADD(PBODY_ARR, STRTRAN(OL_ARR[14],'~',' ') )
AADD( PAMTS_ARR, NIL )
ENDIF
ENDIF
WAMTS_ARR := NIL
ENDIF
ENDIF
//** IF II = 2
//** II := 0
//** ENDIF
IF II >= 2 //** P3N - 4/6/99
//** PRINT STORM COPY COLUMN FORMAT (IE: C200007 @ IOLA)
IF PRNTOUTVAR[I,10] == 'S' //** P3N - 4/6/99
IF II > 3 //** P3N - 4/6/99
II := 0 //** P3N - 4/6/99
ENDIF //** P3N - 4/6/99
ELSE //** P3N - 4/6/99
II := 0 //** P3N - 4/6/99
ENDIF //** P3N - 4/6/99
ENDIF //** P3N - 4/6/99
NEXT
IF EMPTY(OL_ARR[6]) // LINE ITEM NOTES - LINE_NOTES IN LINE DBF
ELSEIF OL_ARR[16] == 'U' // PRINT THE NOTES UNDER THE LINE ITEM
RETVARARR := PRT_MEMO(PBODY_ARR, PAMTS_ARR, OL_ARR[6], PRNT_LEN) // PRINT THE LINE ITEM NOTES
PBODY_ARR := RETVARARR[1]
PAMTS_ARR := RETVARARR[2]
ENDIF
IF LEN(PRNTOUTVAR) > 0
AADD(PBODY_ARR, ' ' ) // DOUBLE SPACE
AADD(PAMTS_ARR, WAMTS_ARR)
WAMTS_ARR := NIL
ENDIF
ELSE
IF EMPTY(OL_ARR[6]) // LINE ITEM NOTES - LINE_NOTES IN LINE DBF
ELSEIF OL_ARR[16] == 'U' // PRINT THE NOTES UNDER THE LINE ITEM
RETVARARR := PRT_MEMO(PBODY_ARR, PAMTS_ARR, OL_ARR[6], PRNT_LEN) // PRINT THE LINE ITEM NOTES
PBODY_ARR := RETVARARR[1]
PAMTS_ARR := RETVARARR[2]
ENDIF
ENDIF
ENDIF
SAVE_TYPE := WHICH_TYPE
IF DBLSPACE(WHICH_TYPE, WHCHORDER, SUBTYPE, MPROD_CODE) //** P3N - 02/12/04
AADD(PBODY_ARR, ' ' ) //** P3N - 02/12/04
AADD( PAMTS_ARR, NIL ) //** P3N - 02/12/04
ENDIF //** P3N - 02/12/04
RETURN {LI_TTL, PBODY_ARR, PAMTS_ARR}
***************************************************************
* P3N - 2/12/04 SHOULD WE DOUBLE SPACE THIS ORDER?
***************************************************************
FUNCTION DBLSPACE(WHICH_TYPE, WHCHORDER, SUBTYPE, P_PROD) //** P3N - 02/12/04
LOCAL RETVAL := .F.
LOCAL ITEM_CAT_CODE := GET_CATCODE( P_PROD )
IF EMPTY(SUBTYPE)
SUBTYPE := ''
ENDIF
IF CATEGORY->(DBSEEK( ITEM_CAT_CODE ))
IF WHCHORDER = 'PROD'
IF WHICH_TYPE = 'FRAME'.AND.AT('F', UPPER(CATEGORY->DBLSP_PROD)) >0
RETVAL := .T.
ENDIF
IF WHICH_TYPE = 'STORM'.AND.AT('F', UPPER(CATEGORY->DBLSP_PROD)) >0
RETVAL := .T.
ENDIF
IF WHICH_TYPE = 'GLASS'.AND.AT('G', UPPER(CATEGORY->DBLSP_PROD)) >0
RETVAL := .T.
ENDIF
IF WHICH_TYPE = 'SCREEN'.AND.AT('S', UPPER(CATEGORY->DBLSP_PROD)) >0
RETVAL := .T.
ENDIF
IF WHICH_TYPE = 'CTRL'.AND.AT('R', UPPER(CATEGORY->DBLSP_PROD)) >0
//** SUBTYPE = 'GOLDEN'
RETVAL := .T.
ENDIF
ELSEIF WHCHORDER = 'OD'
IF SUBTYPE = 'DELIVERY'.AND.AT('D', UPPER(CATEGORY->DBLSP_OD)) >0
//** DELIVERY COPY
RETVAL := .T.
ENDIF
IF SUBTYPE = 'ORDERDESK'.AND.AT('O', UPPER(CATEGORY->DBLSP_OD)) >0
//** ORDERDESK COPY
RETVAL := .T.
ENDIF
IF SUBTYPE = 'PO'.AND.AT('I', UPPER(CATEGORY->DBLSP_OD)) >0
//** INTERCOMPANY PURCHASE ORDER
RETVAL := .T.
ENDIF
ELSEIF WHCHORDER = 'INV'
IF EMPTY(SUBTYPE).AND.AT('I', UPPER(CATEGORY->DBLSP_INV)) >0
//** CUSTOMER INVOICE COPY
RETVAL := .T.
ENDIF
IF SUBTYPE = 'PREBILL'.AND.AT('B', UPPER(CATEGORY->DBLSP_INV)) >0
//** PREBILL INVOICE COPY
RETVAL := .T.
ENDIF
IF SUBTYPE = 'PRECOST'.AND.AT('C', UPPER(CATEGORY->DBLSP_INV)) >0
//** PRECOST INVOICE COPY
RETVAL := .T.
ENDIF
ELSEIF WHCHORDER = 'BACKORD'
IF CATEGORY->DBLSP_BO = 'Y'
RETVAL := .T.
ENDIF
ENDIF
**ERR_BOX('FOUND ITEM_CAT_CODE = ' + ITEM_CAT_CODE, ;
** 'PROD CODE = ' + P_PROD, 'SUBTYPE = '+ SUBTYPE, ;
** 'WHCHORDER = ' + WHCHORDER, 'WHICH_TYPE = '+ WHICH_TYPE)
ENDIF
RETURN RETVAL
***************************************************************
* P3N - 2/12/04 VALIDATE THE CATEGROY DOUBLE SPACE CODES
***************************************************************
FUNCTION VAL_DBLSP(CMD)
//** CMD - "PROD" PRODUCTION ORDER COPIES
//** CMD - "OD" ORDERDESK ORDER COPIES
//** CMD - "INV" INVOICE ORDER COPIES
//** CMD - "BO" BACKORDER ORDER COPIES
LOCAL RETVAL := .T.
IF CMD = 'PROD'
* ERR_BOX('Prodction double spaceing opts: "F", "G", "S" are valid')
* RETVAL := .F.
ELSEIF CMD = 'OD'
* IF CATEGORY->DBLSP_OD
ELSEIF CMD = 'INV'
* IF CATEGORY->DBLSP_INV
ELSEIF CMD = 'BO'
* IF CATEGORY->DBLSP_BO
ELSE
* ERR_BOX('Invalid CMD in VAL_DBLSP() function')
ENDIF
RETURN RETVAL
***************************************************************
* P3N - 5/22/98 ARE THERE ANY BACKORDER ITEMS TO PRINT?
***************************************************************
FUNCTION ORD_QTYS(WHCHORDER, OL_ARR)
LOCAL ELM, OLQTY, NUM_IN_SPEC, XFACTOR, CALCQTY, SCRNKEY, ADDLKEY
LOCAL PRNT_QTY := OL_ARR[7] // ITEM QUANTITY
LOCAL SHIP_QTY := OL_ARR[11] // ITEM SHIPPED QTY
LOCAL CUT_SPEC_ARR := OL_ARR[13] // CUTTING SPECS ARR
LOCAL LINE_NUM := OL_ARR[9] // ORDER LINE_NUM
LOCAL PAR_PROD := OL_ARR[10] //ORDER PROD_CODE-PAR_PROD FOR SCREENS
LOCAL BK_ORD := 0 //** P3N - 11/12/98
IF EMPTY(PRNT_QTY) //** P3N - 11/12/98
PRNT_QTY := 0 //** P3N - 11/12/98
ENDIF //** P3N - 11/12/98
IF EMPTY(SHIP_QTY) //** P3N - 11/12/98
SHIP_QTY := 0 //** P3N - 11/12/98
ENDIF //** P3N - 11/12/98
BK_ORD := PRNT_QTY - SHIP_QTY // BACK ORDER QTY
IF WHCHORDER == 'BACKORD'
IF EMPTY(PRNT_QTY)
ADDLKEY := MORDER_NUM + PAR_PROD + LINE_NUM
IF ADDL_LINES->(DBSEEK(ADDLKEY))
OLQTY := ADDL_LINES->QUANTITY
ADDLKEY := MORDER_NUM + LINE_NUM + PAR_PROD
SHIP_QTY := SCRN_SHPQTY(ADDLKEY)
BK_ORD := OLQTY - SHIP_QTY
ELSE
ELM := ASCAN(CUT_SPEC_ARR, {|X| AT('N', X[9]) > 0 }) // IS THIS A SCREEN SPEC?
IF EMPTY(ELM)
ELSE
OLQTY := CUT_SPEC_ARR[ELM, 3]
NUM_IN_SPEC := CUT_SPEC_ARR[ELM, 13]
XFACTOR := CK_XTRAWIND( 'ORD_LINES', 'ORDER_OPTS', .F. )
CALCQTY := OLQTY * NUM_IN_SPEC * ( 1 + XFACTOR )
PRNT_QTY := CALCQTY //** LINE ITEM QTY
SCRNKEY := MORDER_NUM + LINE_NUM + 'SCREENS' + PAR_PROD
SHIP_QTY := SCRN_SHPQTY(SCRNKEY)
BK_ORD := CALCQTY - SHIP_QTY
ENDIF
ENDIF
ENDIF
ENDIF
RETURN { PRNT_QTY, SHIP_QTY, BK_ORD }
***************************************************************
* P3N - 5/22/98 GET THE SHIPPED SCREENS TO PRINT ON BACK ORDER!
***************************************************************
FUNCTION SCRN_SHPQTY(SCRNKEY)
RETVAL := 0
IF ORD_SHIP->(DBSEEK(SCRNKEY))
DO WHILE ORD_SHIP->(!EOF()) .AND. ;
( ORD_SHIP->ORDER_NUM + STR(ORD_SHIP->LINE_NUM, 3) + ;
ORD_SHIP->PROD_CODE + ORD_SHIP->PAR_PROD == SCRNKEY )
RETVAL := RETVAL + ORD_SHIP->SHIP_QTY
ORD_SHIP->(DBSKIP(+1))
ENDDO
ENDIF
RETURN RETVAL
***************************************************************
***************************************************************
***************************************************************
FUNCTION DO_WE_PRT_AMT( WHCHORDER, SUBTYPE )
LOCAL PRT_AMT := .F.
//**IF (CUR_MAST)->TERMS = '90' .OR. ; //** NO CHARGE //**P3N - 4/27/98
//** (CUR_MAST)->TERMS = '96' //** CANCELLATION //**P3N - 4/27/98
IF ZERO_ORDER() //** NO CHARGE //**P3N - 3/05/99
//** FOR A NO CHARGE OR CANCELLATION FORCE TO NOT PRINT AMTS
ELSEIF WHCHORDER == 'INV'
IF ITEMIZE = 1
PRT_AMT := .T.
ENDIF
ELSEIF WHCHORDER == 'OD' // ORDER DESK
PRT_AMT := .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 MHOME_LOC_CODE = 'KC' .AND. SUBTYPE == 'ORDERDESK'
**** //PER ELLEN @ KC 10-26-98
**** //DO NOT PRINT GL ALLOCATIONS / ORDER AMOUNTS ON ORDERDESK - GOLDEN ROD
**** PRT_AMT := .F.
ELSEIF SUBTYPE == 'DELIVERY' .AND. !IS_COD( (CUR_MAST)->TERMS )
PRT_AMT := .F.
ELSEIF SUBTYPE == 'PO' // DO NOT PRINT AMTS ON THE INTERCOMPANY COPY
PRT_AMT := .F.
ELSEIF (CUR_MAST)->PRICE_SHT$'I' //** P3N - 01/30/06
//** P3N - 01/30/06 PER PAT PRINT PRICING ON ODERDESK COPY FOR SPECIAL DEALERS
//**ELSEIF (CUR_MAST)->PRICE_SHT$'IS' //** P3N - 01/30/06
//DO NOT PRINT AMTS ON OD COPY WHEN INTERCOMPANY OR SPECIAL DEALER PRICING!
PRT_AMT := .F.
ENDIF
ELSEIF WHCHORDER == 'BACKORD' //** P3N - 5/1/98
PRT_AMT := .F. //** P3N - 5/1/98
ENDIF
RETURN PRT_AMT
********************************************************************
// PRINT THE PRODUCTION LINE MEMOS
********************************************************************
FUNCTION PRT_MEMO(PBODY_ARR, PAMTS_ARR, PROD_MEMO, PRNT_LEN)
LOCAL MEMOCNT, PRNTOUTVAR, PRNT_VAL, I
MEMOCNT := MLCOUNT(PROD_MEMO, PRNT_LEN, 0, .T.)
PRNTOUTVAR = STRTRAN(PROD_MEMO, CHR(248), CHR(179))
FOR I = 1 TO MEMOCNT
PRNT_VAL := MEMOTRAN(MEMOLINE(PRNTOUTVAR, PRNT_LEN, I, 0, .T.), '')
AADD(PBODY_ARR, PRNT_VAL )
AADD(PAMTS_ARR, NIL)
NEXT
RETURN { PBODY_ARR, PAMTS_ARR }
**********
// THIS PRG IS A print port manager for lib programs
// needing multiple output routings.
// will be called IF FILE('PRINTERS.DBF')
PROCEDURE CUSTOMPRINT()
LOCAL CLOSE_ARR := {}, PRN_LIST := {}
* - SELECT A PRINTER FROM THE TABLE BELOW
*
* draw input screen
*
AADD(PRN_LIST , 'OKI')
AADD(PRN_LIST , 'EPS')
AADD(PRN_LIST , 'HPJ') // MOVED HERE 6-10-20
AADD(PRN_LIST , 'PRW')
AADD(PRN_LIST , 'PRN')
AADD(PRN_LIST , 'P90')
AADD(PRN_LIST , 'HPD')
AADD(PRN_LIST , 'HP4')
_REPTPRNT := STR(ASCAN(PRN_LIST, {|X| X = REPT_PRN}),1)
_BOPRNT := STR(ASCAN(PRN_LIST, {|X| X = BO_PRN}),1) //** P3N - 4/30/98
_PRODPRNT := STR(ASCAN(PRN_LIST, {|X| X = PROD_PRN}),1)
_ODPRNT := STR(ASCAN(PRN_LIST, {|X| X = OD_PRN}),1)
_INVPRNT := STR(ASCAN(PRN_LIST, {|X| X = INV_PRN}),1)
_DELPRNT := STR(ASCAN(PRN_LIST, {|X| X = DEL_PRN}),1)
_GRPRNT := STR(ASCAN(PRN_LIST, {|X| X = GR_PRN}),1)
_ICPRNT := STR(ASCAN(PRN_LIST, {|X| X = IC_PRN}),1)
_LBLPRNT := STR(ASCAN(PRN_LIST, {|X| X = LBL_PRN}),1)
_QTEPRNT := STR(ASCAN(PRN_LIST, {|X| X = INV_PRN}),1)
_PREPRNT := STR(ASCAN(PRN_LIST, {|X| X = INV_PRN}),1)
// 3/31/2021 - ADJUSTMENT FACTOR FOR WIDTH/HEIGHT OF PRINT
_REPTFACW := REPT_FACW
_REPTFACH := REPT_FACH
IF _REPTFACW = 0
_REPTFACW := 100
ENDIF
IF _REPTFACH = 0
_REPTFACH := 100
ENDIF
_PRODFACW := PROD_FACW
_PRODFACH := PROD_FACH
IF _PRODFACW = 0
_PRODFACW := 100
ENDIF
IF _PRODFACH = 0
_PRODFACH := 100
ENDIF
_ODFACW := OD_FACW
_ODFACH := OD_FACH
IF _ODFACW = 0
_ODFACW := 100
ENDIF
IF _ODFACH = 0
_ODFACH := 100
ENDIF
_INVFACW := INV_FACW
_INVFACH := INV_FACH
IF _INVFACW = 0
_INVFACW := 100
ENDIF
IF _INVFACH = 0
_INVFACH := 100
ENDIF
_DELFACW := DEL_FACW
_DELFACH := DEL_FACH
IF _DELFACW = 0
_DELFACW := 100
ENDIF
IF _DELFACH = 0
_DELFACH := 100
ENDIF
_GRFACW := GR_FACW
_GRFACH := GR_FACH
IF _GRFACW = 0
_GRFACW := 100
ENDIF
IF _GRFACH = 0
_GRFACH := 100
ENDIF
_LBLFACW := LBL_FACW
_LBLFACH := LBL_FACH
IF _LBLFACW = 0
_LBLFACW := 100
ENDIF
IF _LBLFACH = 0
_LBLFACH := 100
ENDIF
_ICFACW := IC_FACW
_ICFACH := IC_FACH
IF _ICFACW = 0
_ICFACW := 100
ENDIF
IF _ICFACH = 0
_ICFACH := 100
ENDIF
_BOFACW := BO_FACW
_BOFACH := BO_FACH
IF _BOFACW = 0
_BOFACW := 100
ENDIF
IF _BOFACH = 0
_BOFACH := 100
ENDIF
_QTEFACW := QTE_FACW
_QTEFACH := QTE_FACH
IF _QTEFACW = 0
_QTEFACW := 100
ENDIF
IF _QTEFACH = 0
_QTEFACH := 100
ENDIF
_PREFACW := PRE_FACW
_PREFACH := PRE_FACH
IF _PREFACW = 0
_PREFACW := 100
ENDIF
IF _PREFACH = 0
_PREFACH := 100
ENDIF
M_LPTR := REPT_PORT
M_LPTP := PROD_PORT
M_LPTO := OD_PORT
M_LPTI := INV_PORT
M_LPTD := DEL_PORT
M_LPTG := GR_PORT
M_LPTL := LBL_PORT
M_LPTIC := IC_PORT
M_LPTBO := BO_PORT //** P3N - 4/30/98
M_LPTQ := INV_PORT //** P3N - 4/13/98
M_LPTPRE := INV_PORT //** P3N - 4/13/98
IF FIELDPOS('QTE_PORT') > 0 //** P3N - 4/13/98
M_LPTQ := QTE_PORT //** P3N - 4/13/98
ENDIF
IF FIELDPOS('PRE_PORT') > 0 //** P3N - 4/13/98
M_LPTPRE := PRE_PORT //** P3N - 4/13/98
ENDIF
SELECT WORKSTAT
DO WHILE .T.
CLEAR
TITLE = 'SELECT PRINTER'
H = ((80 - LEN(TITLE)) / 2)
@ 0,H SAY TITLE
@ 0,74 SAY 'PDEF'
@ 1,0 SAY DOUBLE
@ 3,72 SAY DTOC(DATE())
@ 5,28 SAY " AVAILABLE PRINTERS "
@ 6,28 SAY " ================== "
@ 7,26 SAY "1. Okidata Microline 84"
@ 8,26 SAY "2. Epson (All Models)"
@ 9,26 SAY "3. HP LaserJet "
LOOP4100 := .T.
DO WHILE LOOP4100
SET CONFIRM OFF
@ 4,72 SAY TIME()
// 3/31/2021 - Set ZOOM Factor for each one.
@ 11,09 SAY " Set ZOOM Resize Factor from 100% ------>Width Height"
@ 12,09 SAY " Select REPORTS Printer : : LPT Port : : : : : :"
@ 13,09 SAY " Select PRODUCTION Printer : : LPT Port : : : : : :"
@ 14,09 SAY " Select ORDER DESK Printer : : LPT Port : : : : : :"
@ 15,09 SAY " Select INVOICE Printer : : LPT Port : : : : : :"
@ 16,09 SAY " Select DELIVERY Printer : : LPT Port : : : : : :"
@ 17,09 SAY " Select GOLDEN ROD Printer : : LPT Port : : : : : :"
@ 18,09 SAY "Select MAILING LABEL Printer : : LPT Port : : : : : :"
@ 19,09 SAY " Select INTERCOMPANY Printer : : LPT Port : : : : : :"
@ 20,09 SAY " Select BACKORDER Printer : : LPT Port : : : : : :"
IF FIELDPOS('QTE_PRN') > 0 .AND. FIELDPOS('QTE_PORT') > 0
@ 21,09 SAY " Select QUOTE Printer : : LPT Port : : : : : :"
ENDIF
IF FIELDPOS('PRE_PRN') > 0 .AND. FIELDPOS('PRE_PORT') > 0
@ 22,09 SAY " Select PREBILL Printer : : LPT Port : : : : : :"
ENDIF
DO WHILE .T.
@ 12,39 GET _REPTPRNT PICTURE '9' VALID CHK_PRN(_REPTPRNT)
@ 12,54 GET M_LPTR PICTURE '9' VALID M_LPTR$'1234'
@ 12,60 GET _REPTFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 12,66 GET _REPTFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 13,39 GET _PRODPRNT PICTURE '9' VALID CHK_PRN(_PRODPRNT)
@ 13,54 GET M_LPTP PICTURE '9' VALID M_LPTP$'1234'
@ 13,60 GET _PRODFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 13,66 GET _PRODFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 14,39 GET _ODPRNT PICTURE '9' VALID CHK_PRN(_ODPRNT)
@ 14,54 GET M_LPTO PICTURE '9' VALID M_LPTO$'1234'
@ 14,60 GET _ODFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 14,66 GET _ODFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 15,39 GET _INVPRNT PICTURE '9' VALID CHK_PRN(_INVPRNT)
@ 15,54 GET M_LPTI PICTURE '9' VALID M_LPTI$'1234'
@ 15,60 GET _INVFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 15,66 GET _INVFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 16,39 GET _DELPRNT PICTURE '9' VALID CHK_PRN(_DELPRNT)
@ 16,54 GET M_LPTD PICTURE '9' VALID M_LPTD$'1234'
@ 16,60 GET _DELFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 16,66 GET _DELFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 17,39 GET _GRPRNT PICTURE '9' VALID CHK_PRN(_GRPRNT)
@ 17,54 GET M_LPTG PICTURE '9' VALID M_LPTG$'1234'
@ 17,60 GET _GRFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 17,66 GET _GRFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 18,39 GET _LBLPRNT PICTURE '9' VALID CHK_PRN(_LBLPRNT)
@ 18,54 GET M_LPTL PICTURE '9' VALID M_LPTL$'1234'
@ 18,60 GET _LBLFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 18,66 GET _LBLFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 19,39 GET _ICPRNT PICTURE '9' VALID CHK_PRN(_ICPRNT)
@ 19,54 GET M_LPTIC PICTURE '9' VALID M_LPTIC$'1234'
@ 19,60 GET _ICFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 19,66 GET _ICFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
@ 20,39 GET _BOPRNT PICTURE '9' VALID CHK_PRN(_BOPRNT) //** P3N - 4/30/98
@ 20,54 GET M_LPTBO PICTURE '9' VALID M_LPTBO$'1234'
@ 20,60 GET _BOFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 20,66 GET _BOFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
IF FIELDPOS('QTE_PRN') > 0 .AND. FIELDPOS('QTE_PORT') > 0 //** P3N - 4/13/98
@ 21,39 GET _QTEPRNT PICTURE '9' VALID CHK_PRN(_QTEPRNT)
@ 21,54 GET M_LPTQ PICTURE '9' VALID M_LPTQ$'1234'
@ 21,60 GET _QTEFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 21,66 GET _QTEFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
ENDIF
IF FIELDPOS('PRE_PRN') > 0 .AND. FIELDPOS('PRE_PORT') > 0 //** P3N - 4/13/98
@ 22,39 GET _PREPRNT PICTURE '9' VALID CHK_PRN(_PREPRNT)
@ 22,54 GET M_LPTPRE PICTURE '9' VALID M_LPTPRE$'1234'
@ 22,60 GET _PREFACW PICTURE '999' // 3/31/2021 - WIDTH FACTOR
@ 22,66 GET _PREFACH PICTURE '999' // 3/31/2021 - HEIGHT FACTOR
ENDIF
READ
IF LASTKEY() == 27 .AND. PROCNAME(1) <> 'SET_PRNT_P'
CLS
FOR L = 1 TO LEN(CLOSE_ARR)
MFILE = CLOSE_ARR[L]
SELECT(MFILE)
USE
NEXT
RETURN
ENDIF
IF EMPTY(M_LPTR) .OR. EMPTY(M_LPTP) .OR. EMPTY(M_LPTO);
.OR. EMPTY(M_LPTI) .OR. EMPTY(M_LPTD) .OR. EMPTY(M_LPTG)
LOOP
ENDIF
CORR = CORRCHEK()
IF CORR = 'Y'
LOOP4100 := .F.
EXIT
ENDIF
IF LASTKEY() == 27 .AND. PROCNAME(1) <> 'SET_PRNT_P'
CLEAR
FOR L = 1 TO LEN(CLOSE_ARR)
MFILE = CLOSE_ARR[L]
SELECT(MFILE)
USE
NEXT
RETURN
ENDIF
ENDDO
ENDDO
SETCOLOR(LNOR)
SELECT WORKSTAT
REC_LOCK(1)
REPLACE REPT_PRN WITH PRN_LIST[VAL(_REPTPRNT)]
REPLACE PROD_PRN WITH PRN_LIST[VAL(_PRODPRNT)]
REPLACE OD_PRN WITH PRN_LIST[VAL(_ODPRNT)]
REPLACE INV_PRN WITH PRN_LIST[VAL(_INVPRNT)]
REPLACE DEL_PRN WITH PRN_LIST[VAL(_DELPRNT)]
REPLACE GR_PRN WITH PRN_LIST[VAL(_GRPRNT)]
REPLACE LBL_PRN WITH PRN_LIST[VAL(_LBLPRNT)]
REPLACE IC_PRN WITH PRN_LIST[VAL(_ICPRNT)]
REPLACE BO_PRN WITH PRN_LIST[VAL(_BOPRNT)] //** P3N - 4/30/98
IF FIELDPOS('QTE_PRN') > 0 //** P3N - 4/13/98
REPLACE QTE_PRN WITH PRN_LIST[VAL(_QTEPRNT)] //** P3N - 4/13/98
ENDIF
IF FIELDPOS('PRE_PRN') > 0 //** P3N - 4/13/98
REPLACE PRE_PRN WITH PRN_LIST[VAL(_PREPRNT)] //** P3N - 4/13/98
ENDIF
REPLACE REPT_PORT WITH M_LPTR
REPLACE PROD_PORT WITH M_LPTP
REPLACE OD_PORT WITH M_LPTO
REPLACE INV_PORT WITH M_LPTI
REPLACE DEL_PORT WITH M_LPTD
REPLACE GR_PORT WITH M_LPTG
REPLACE LBL_PORT WITH M_LPTL
REPLACE IC_PORT WITH M_LPTIC
REPLACE BO_PORT WITH M_LPTBO //** P3N - 4/30/98
IF FIELDPOS('QTE_PORT') > 0 //** P3N - 4/13/98
REPLACE QTE_PORT WITH M_LPTQ //** P3N - 4/13/98
ENDIF
IF FIELDPOS('PRE_PORT') > 0 //** P3N - 4/13/98
REPLACE PRE_PORT WITH M_LPTPRE //** P3N - 4/13/98
ENDIF
// 3/31/2021 - ADJUSTMENT FACTOR FOR WIDTH/HEIGHT OF PRINT
REPLACE REPT_FACW WITH _REPTFACW
REPLACE REPT_FACH WITH _REPTFACH
REPLACE PROD_FACW WITH _PRODFACW
REPLACE PROD_FACH WITH _PRODFACH
REPLACE OD_FACW WITH _ODFACW
REPLACE OD_FACH WITH _ODFACH
REPLACE INV_FACW WITH _INVFACW
REPLACE INV_FACH WITH _INVFACH
REPLACE DEL_FACW WITH _DELFACW
REPLACE DEL_FACH WITH _DELFACH
REPLACE GR_FACW WITH _GRFACW
REPLACE GR_FACH WITH _GRFACH
REPLACE LBL_FACW WITH _LBLFACW
REPLACE LBL_FACH WITH _LBLFACH
REPLACE IC_FACW WITH _ICFACW
REPLACE IC_FACH WITH _ICFACH
REPLACE BO_FACW WITH _BOFACW
REPLACE BO_FACH WITH _BOFACH
REPLACE QTE_FACW WITH _QTEFACW
REPLACE QTE_FACH WITH _QTEFACH
REPLACE PRE_FACW WITH _PREFACW
REPLACE PRE_FACH WITH _PREFACH
// RESET THE SYSTEM VARIABLES TOO!!!
FOR L = 1 TO LEN(CLOSE_ARR)
MFILE = CLOSE_ARR[L]
SELECT(MFILE)
USE
NEXT
CLEAR SCREEN
RETURN
ENDDO WHILE .T.
RETURN
* * * * * * * * * * * * * * * * *
// @ 12,10 SAY " Select REPORTS Printer : : LPT Port : :"
// @ 13,10 SAY " Select PRODUCTION Printer : : LPT Port : :"
// @ 14,10 SAY " Select ORDER DESK Printer : : LPT Port : :"
// @ 15,10 SAY " Select INVOICE Printer : : LPT Port : :"
// @ 16,10 SAY " Select DELIVERY Printer : : LPT Port : :"
// @ 17,10 SAY " Select GOLDEN ROD Printer : : LPT Port : :"
// @ 18,10 SAY "Select MAILING LABEL Printer : : LPT Port : :"
// @ 19,10 SAY " Select INTERCOMPANY Printer : : LPT Port : :"
// @ 20,10 SAY " Select BACKORDER Printer : : LPT Port : :" //** P3N 4/30/98
// IF FIELDPOS('QTE_PRN') > 0 .AND. FIELDPOS('QTE_PORT') > 0 //** P3N - 4/13/98
// @ 21,10 SAY " Select QUOTE Printer : : LPT Port : :"
// ENDIF
// IF FIELDPOS('PRE_PRN') > 0 .AND. FIELDPOS('PRE_PORT') > 0 //** P3N - 4/13/98
// @ 22,10 SAY " Select PREBILL Printer : : LPT Port : :"
// ENDIF
**********************************************************************