home *** CD-ROM | disk | FTP | other *** search
- ********************** ' MultiNet Source Code ' ***********************
- ** ' SBT Corporation ' **
- ** ' One Harbor Drive, Sausalito, California 94965 ' **
- ** ' Telephone (415) 331-9900 ' **
- ***********************************************************************
- ** ' (c) Copyright 1984, Revisions 1985 - 1990 SBT Corporation ' **
- ** ' All Rights Reserved by SBT Corporation ' **
- ** ' ' **
- ***********************************************************************
- ** ' 06/12/90 = Last Update ** SYSBCAL.PRG ** Version 6.30.02 ' **
- ***********************************************************************
- * ' Recalculate File balances - called by SYSBUST, APUTIL,
- * ' ARUTIL, POUTIL, SOUTIL
- *
- CLOSE DATABASES
- SELECT a
- IF .NOT. m0single
- DO p0sysmnt WITH .t.
- IF .NOT. mreturn
- RETURN
- ENDIF
- ENDIF
- CLEAR
- @ 1,1 SAY m0date
- @ 1,28 SAY 'Recalculate File Balances'
- @ 1,73 SAY SUBSTR(m0company,79,6)
- @ 2,1 SAY SUBSTR(m0company,1,78)
- @ 6,1 SAY '***** Opening Work Areas *****'
- SET ESCAPE OFF
- USE &m0sysdr.sysdata
- STORE .f. TO mar, map, mso, mpo, mma, mar635, mso635
- STORE SPACE(30) TO m0apdr, m0ardr, m0sodr, m0podr, m0madr, m0cusdr, ;
- m0invdr, m0vendr
- * ' Search for custom file locator record
- LOCATE FOR UPPER(a->sysid) = '@@' + SUBSTR(m0comp,1,2) ;
- .AND. SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- * ' Setup custom file descriptors
- IF LEN(TRIM(SUBSTR(a->str5,1,30))) <> 0
- STORE TRIM(SUBSTR(a->str5,1,30)) TO m0cusdr
- ENDIF
- IF LEN(TRIM(SUBSTR(a->str6,1,30))) <> 0
- STORE TRIM(SUBSTR(a->str6,1,30)) TO m0invdr
- ENDIF
- IF LEN(TRIM(SUBSTR(a->str7,1,30))) <> 0
- STORE TRIM(SUBSTR(a->str7,1,30)) TO m0vendr
- ENDIF
- ENDIF
- LOCATE FOR UPPER(sysid) = 'AP' + SUBSTR(m0comp,1,2) .AND. ;
- SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- STORE .t. TO map
- STORE TRIM(SUBSTR(drive,61,30)) TO m0apdr
- IF LEN(TRIM(m0vendr)) = 0
- STORE m0apdr TO m0vendr
- ENDIF
- STORE m0apdr + 'APMAST' + SUBSTR(m0comp,1,2) TO apmastf
- STORE m0apdr + 'APMASV' + SUBSTR(m0comp,1,2) TO apmasvf
- STORE m0apdr + 'APCHCK' + SUBSTR(m0comp,1,2) TO apchckf
- STORE m0vendr + 'APVEND' + SUBSTR(m0comp,1,2) TO apvendf
- ENDIF
- LOCATE FOR UPPER(sysid) = 'AR' + SUBSTR(m0comp,1,2) .AND. ;
- SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- STORE .t. TO mar
- IF SUBSTR(drive, 198, 3) = '635'
- STORE .t. TO mar635
- ENDIF
- STORE TRIM(SUBSTR(drive,61,30)) TO m0ardr
- IF LEN(TRIM(m0cusdr)) = 0
- STORE m0ardr TO m0cusdr
- ENDIF
- IF LEN(TRIM(m0invdr)) = 0
- STORE m0ardr TO m0invdr
- ENDIF
- STORE m0ardr + 'ARCASH' + SUBSTR(m0comp,1,2) TO arcashf
- STORE m0cusdr + 'ARCUST' + SUBSTR(m0comp,1,2) TO arcustf
- STORE m0ardr + 'ARMAST' + SUBSTR(m0comp,1,2) TO armastf
- STORE m0ardr + 'ARMASC' + SUBSTR(m0comp,1,2) TO armascf
- STORE m0invdr + 'ARINVT' + SUBSTR(m0comp,1,2) TO arinvtf
- STORE m0ardr + 'ARITRN' + SUBSTR(m0comp,1,2) TO aritrnf
- STORE m0ardr + 'ARTRAN' + SUBSTR(m0comp,1,2) TO artranf
- STORE m0ardr + 'ARTRAC' + SUBSTR(m0comp,1,2) TO artracf
- ENDIF
- LOCATE FOR UPPER(sysid) = 'PO' + SUBSTR(m0comp,1,2) .AND. ;
- SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- STORE .t. TO mpo
- STORE TRIM(SUBSTR(drive,61,30)) TO m0podr
- IF LEN(TRIM(m0vendr)) = 0
- STORE m0podr TO m0vendr
- ENDIF
- IF LEN(TRIM(m0invdr)) = 0
- STORE m0podr TO m0invdr
- ENDIF
- STORE m0podr + 'POMAST' + SUBSTR(m0comp,1,2) TO pomastf
- STORE m0podr + 'POMASV' + SUBSTR(m0comp,1,2) TO pomasvf
- STORE m0podr + 'PORECP' + SUBSTR(m0comp,1,2) TO porecpf
- IF .NOT. map
- STORE m0vendr + 'APVEND' + SUBSTR(m0comp,1,2) TO povendf
- ELSE
- STORE apvendf TO povendf
- ENDIF
- IF .NOT. mar
- STORE m0invdr + 'ARINVT' + SUBSTR(m0comp,1,2) TO poinvtf
- ELSE
- STORE arinvtf TO poinvtf
- ENDIF
- STORE m0podr + 'POTRAN' + SUBSTR(m0comp,1,2) TO potranf
- ENDIF
- LOCATE FOR UPPER(sysid) = 'SO' + SUBSTR(m0comp,1,2) .AND. ;
- SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- STORE .t. TO mso
- IF SUBSTR(drive, 198, 3) = '635'
- STORE .t. TO mso635
- ENDIF
- STORE TRIM(SUBSTR(drive,61,30)) TO m0sodr
- IF LEN(TRIM(m0cusdr)) = 0
- STORE m0sodr TO m0cusdr
- ENDIF
- IF LEN(TRIM(m0invdr)) = 0
- STORE m0sodr TO m0invdr
- ENDIF
- STORE m0sodr + 'SOMAST' + SUBSTR(m0comp,1,2) TO somastf
- STORE m0sodr + 'SOMASC' + SUBSTR(m0comp,1,2) TO somascf
- STORE m0sodr + 'SOSHIP' + SUBSTR(m0comp,1,2) TO soshipf
- STORE m0sodr + 'SOTRAN' + SUBSTR(m0comp,1,2) TO sotranf
- IF .NOT. mar
- STORE m0cusdr + 'ARCUST' + SUBSTR(m0comp,1,2) TO socustf
- ELSE
- STORE arcustf TO socustf
- ENDIF
- DO CASE
- CASE .NOT. mar .AND. .NOT. mpo
- STORE m0invdr + 'ARINVT' + SUBSTR(m0comp,1,2) TO soinvtf
- CASE mar
- STORE arinvtf TO soinvtf
- CASE mpo
- STORE poinvtf TO soinvtf
- ENDCASE
- ENDIF
- LOCATE FOR UPPER(sysid) = 'MA' + SUBSTR(m0comp,1,2) .AND. ;
- SUBSTR(a->pass2,1,1) <> 'D'
- IF .NOT. EOF()
- STORE .t. TO mma
- STORE TRIM(SUBSTR(drive,61,30)) TO m0madr
- IF LEN(TRIM(m0invdr)) = 0
- STORE m0madr TO m0invdr
- ENDIF
- STORE m0madr + 'MATRAN' + SUBSTR(m0comp,1,2) TO matranf
- STORE m0madr + 'MATINV' + SUBSTR(m0comp,1,2) TO matinvf
- DO CASE
- CASE .NOT. mar .AND. .NOT. mpo .AND. .NOT. mso
- STORE m0invdr + 'ARINVT' + SUBSTR(m0comp,1,2) TO mainvtf
- CASE mar
- STORE arinvtf TO mainvtf
- CASE mpo
- STORE poinvtf TO mainvtf
- CASE mso
- STORE soinvtf TO mainvtf
- ENDCASE
- ENDIF
- USE
- STORE 0.00 TO arbal, arptdbill, arptdcash, arptddisc, arinvtbal, arinvtrec, ;
- arptdnon, arinvtshp, arptdtax, apbal, apptdpay, apptdpaid, apptddisc, ;
- appapprov, apdapprov, soopen, soptdord, soptdship, poopen, poptdord, poptdrecp
- @ 6,0 CLEAR
- @ 6,1 SAY 'Step 1. Accounts Payable'
- @ 8,1 SAY 'Step 2. Accounts Receivable'
- @ 10,1 SAY 'Step 3. Purchase Orders'
- @ 12,1 SAY 'Step 4. Sales Orders'
- @ 14,1 SAY 'Step 5. Update System File'
- SET ESCAPE OFF
- IF .NOT. map
- @ 6,35 SAY SUBSTR(m0border,173,3) + ' Cancelled'
- ELSE
- @ 6,35 SAY SUBSTR(m0border,173,3) + ' Working'
- IF FILE('&apmastf..dbf')
- USE &apmastf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating Current AP Balance *****'
- SUM puramt - paidamt - disamt - adjamt TO apbal FOR ;
- apstat <> 'V' .AND. .NOT. DELETED()
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD AP Payables *****'
- SUM puramt TO apptdpay FOR current = ' ' .AND. ;
- apstat <> 'V' .AND. .NOT. DELETED()
- @ 22,0
- @ 22,1 SAY '***** Calculating AP Approved to Pay *****'
- SUM aprpay, aprdis + apradj TO appapprov, apdapprov FOR apstat ;
- <> 'V' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&apchckf..dbf')
- USE &apchckf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD AP Payments *****'
- SUM aprpay TO apptdpaid FOR ckstat <> 'V' .AND. .NOT. ppriority $ ;
- 'AD' .AND. .NOT. DELETED()
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD AP Discounts/Adjustments *****'
- SUM aprpay TO apptddisc FOR ckstat <> 'V' .AND. ppriority $ ;
- 'AD' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&apmastf..dbf') .AND. FILE('&apvendf..dbf') .AND. ;
- FILE('&apvendf..ndx')
- USE &apmastf
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- INDEX ON vendno TO &m0dbfdr.&m0tmpf1..ndx
- TOTAL ON vendno TO &m0dbfdr.&m0tmpf1 FIELDS puramt, paidamt, ;
- disamt, adjamt, aprpay FOR apstat <> 'V' .AND. .NOT. DELETED()
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- SELECT b
- USE &apvendf INDEX &apvendf..ndx
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Updating Balance in Vendor File *****'
- REPLACE ALL balance WITH 0.00, aprpay WITH 0.00
- SELECT a
- DO WHILE .NOT. EOF()
- SELECT b
- SEEK a->vendno
- IF .NOT. EOF()
- REPLACE balance WITH balance + a->puramt - a->paidamt - ;
- a->disamt - a->adjamt, aprpay WITH aprpay + a->aprpay
- ENDIF
- SELECT a
- SKIP
- ENDDO
- ENDIF
- CLOSE DATABASES
- SELECT a
- ENDIF
- @ 6,35 SAY SUBSTR(m0border,173,3) + ' Completed'
- ENDIF && .NOT. map
- IF .NOT. mar
- @ 8,35 SAY SUBSTR(m0border,173,3) + ' Cancelled'
- ELSE
- @ 8,35 SAY SUBSTR(m0border,173,3) + ' Working'
- IF FILE('&armastf..dbf') .AND. FILE('&armastf..ndx')
- @ 22,0
- @ 22,1 SAY '***** Calculating Current AR Balance *****'
- CLOSE DATABASES
- SELECT a
- * ' Re-initialize AR balances
- USE &armastf
- SET FILTER TO arstat <> 'V' .AND. .NOT. DELETED()
- DO p0flockn
- SUM balance TO arbal
- *\ SYSBCA02 01 06/12/90 AV Exclude tax only CMs from AR totals
- SUM invamt, tax TO arptdbill, arptdtax FOR current = ' ' .AND. ;
- .NOT. artype $ 'RT'
- GO TOP
- * ' Update customer file
- SELECT b
- USE &arcustf INDEX &arcustf..ndx
- DO p0flockd
- IF lockedf
- IF mar635
- REPLACE ALL balance WITH 0.00, credit WITH 0.00, forward WITH 0.00
- ELSE
- REPLACE ALL balance WITH 0.00, credit WITH 0.00
- ENDIF
- SELECT a
- DO WHILE .NOT. EOF()
- STORE a->custno TO mcust
- SELECT b
- SEEK mcust
- IF .NOT. EOF()
- REPLACE balance WITH balance + a->balance
- * ' Update balance forward field with invoices that were in file
- * ' at start of period
- IF a->current = 'X' .AND. mar635
- REPLACE forward WITH forward + a->balance
- * ' Increase balance forward by amount of payments applied
- * ' to previous period invoices in current period
- SELECT c
- *\ SYSBCA01 01 06/08/90 LA Added ..ndx to index
- USE &arcashf INDEX &arcashf..ndx
- SEEK a->custno + a->invno
- DO WHILE custno = a->custno .AND. invno = a->invno .AND. ;
- .NOT. EOF()
- IF invno = '_RECEIPT' .AND. refno <> a->refno
- * ' _RECEIPT records need to have their refno matched
- SKIP
- LOOP
- ENDIF
- SELECT b
- REPLACE forward WITH forward + c->paidamt + c->disamt
- SELECT c
- SKIP
- ENDDO
- USE
- SELECT b
- ENDIF
- IF a->artype $ 'CR'
- REPLACE credit WITH credit - a->balance
- ENDIF
- ENDIF && .NOT. EOF()
- SELECT a
- SKIP
- ENDDO
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF && FILE('&armastf..dbf') .AND. FILE('&armastf..ndx')
- IF FILE('&arcashf..dbf')
- USE &arcashf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD Cash Receipts *****'
- SUM paidamt TO arptdcash FOR artype $ ' ' .AND. .NOT. DELETED()
- SUM disamt TO arptddisc FOR artype $ ' R' .AND. .NOT. DELETED()
- * ' Handle Non-AR receipts separately.
- IF mar635
- SUM paidamt TO arptdnon FOR artype $ 'N' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- ENDIF
- IF FILE('&arinvtf..dbf')
- USE &arinvtf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating Inventory Value *****'
- SUM onhand * cost TO arinvtbal FOR stkcode = 'Y' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&artranf..dbf')
- USE &artranf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD AR COGS *****'
- SUM 0 - qtyshp * cost TO arinvtshp FOR arstat <> 'V' ;
- .AND. current = ' ' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&aritrnf..dbf')
- USE &aritrnf
- DO p0flockd
- IF lockedf
- SUM cost * qty TO arinvtrec FOR .NOT. DELETED() .AND. CODE = 'R'
- ENDIF
- ENDIF
- USE
- @ 8,35 SAY SUBSTR(m0border,173,3) + ' Completed '
- ENDIF && .NOT. mar
- IF .NOT. mpo
- @ 10,35 SAY SUBSTR(m0border,173,3) + ' Cancelled'
- ELSE
- @ 10,35 SAY SUBSTR(m0border,173,3) + ' Working'
- @ 22,0
- * ' Move update of master from detail to top of PO
- IF FILE('&pomastf..dbf') .AND. FILE('&potranf..dbf') .AND. ;
- FILE('&potranf..ndx')
- @ 22,0
- @ 22,1 SAY '***** Updating PO Totals from Detail Records *****'
- SELECT a
- USE &pomastf
- SET FILTER TO postat <> 'V' .AND. potype <> 'B' .AND. .NOT. DELETED()
- DO p0flockd
- IF lockedf
- SELECT b
- USE &potranf INDEX &potranf..ndx
- SET FILTER TO postat <> 'V' .AND. potype <> 'B' .AND. .NOT. DELETED()
- DO p0flockd
- IF lockedf
- SELECT a
- GO TOP
- DO WHILE .NOT. EOF()
- STORE 0.00 TO mpuramt, mrecamt
- SELECT b
- SEEK a->purno
- DO WHILE b->purno = a->purno .AND. .NOT. EOF()
- IF (b->qtyord - b->qtyrec) * b->cost * (100 - b->disc) < 0
- REPLACE extcost WITH .01 * INT((b->qtyord - b->qtyrec) * ;
- b->cost * (100 - b->disc) - .5), exttax WITH .01 * ;
- INT(b->extcost * b->taxrate - .5)
- STORE mpuramt + .01 * INT(b->qtyord * b->cost * (100 - ;
- b->disc) - .5) + .0001 * INT(b->taxrate * (b->qtyord * ;
- b->cost * (100 - b->disc)) - .5) TO mpuramt
- STORE mrecamt + .01 * INT(b->qtyrec * b->cost * (100 - ;
- b->disc) - .5) + .0001 * INT(b->taxrate * (b->qtyrec * ;
- b->cost * (100 - b->disc)) - .5) TO mrecamt
- ELSE
- REPLACE extcost WITH .01 * INT((b->qtyord - b->qtyrec) * ;
- b->cost * (100 - b->disc) + .5), exttax WITH .01 * ;
- INT(b->extcost * b->taxrate + .5)
- STORE mpuramt + .01 * INT(b->qtyord * b->cost * (100 - ;
- b->disc) + .5) + .0001 * INT(b->taxrate * (b->qtyord * ;
- b->cost * (100 - b->disc)) + .5) TO mpuramt
- STORE mrecamt + .01 * INT(b->qtyrec * b->cost * (100 - ;
- b->disc) + .5) + .0001 * INT(b->taxrate * (b->qtyrec * ;
- b->cost * (100 - b->disc)) + .5) TO mrecamt
- ENDIF
- SKIP
- ENDDO && WHILE b->purno = a->purno .AND. .NOT. EOF()
- SELECT a
- REPLACE puramt WITH mpuramt, recamt WITH mrecamt
- SKIP
- ENDDO && WHILE .NOT. EOF()
- ENDIF && lockedf
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF && FILE('&pomastf..dbf') .AND. FILE('&potranf..dbf') .AND. etc.
- IF FILE('&pomastf..dbf')
- USE &pomastf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD PO Orders *****'
- SUM puramt TO poptdord FOR current = ' ' ;
- .AND. postat <> 'V' .AND. potype <> 'B' .AND. .NOT. DELETED()
- @ 22,0
- @ 22,1 SAY '***** Calculating Open Purchase Orders *****'
- SUM puramt - recamt TO poopen FOR postat <> 'V' .AND. ;
- potype <> 'B'.AND. .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&porecpf..dbf')
- USE &porecpf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD PO Receipts *****'
- SUM cost * qtyrec TO poptdrecp FOR .NOT. DELETED()
- ENDIF
- ENDIF
- * ' Move update of master from detail to top of PO
- IF FILE('&pomastf..dbf') .AND. FILE('&povendf..dbf') .AND. ;
- FILE('&povendf..ndx')
- USE &pomastf
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- INDEX ON vendno TO &m0dbfdr.&m0tmpf1..ndx
- TOTAL ON vendno TO &m0dbfdr.&m0tmpf1 FIELDS puramt, recamt FOR ;
- postat <> 'V' .AND. potype <> 'B' .AND. .NOT. DELETED()
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- SELECT b
- USE &povendf INDEX &povendf..ndx
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Updating Open PO Balance in Vendor File *****'
- REPLACE ALL openpo WITH 0.00
- SELECT a
- DO WHILE .NOT. EOF()
- SELECT b
- SEEK a->vendno
- IF .NOT. EOF()
- REPLACE openpo WITH openpo + a->puramt - a->recamt
- ENDIF
- SELECT a
- SKIP
- ENDDO
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF
- IF FILE('&potranf..dbf') .AND. FILE('&poinvtf..dbf') .AND. ;
- FILE('&poinvtf..ndx')
- USE &potranf
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- INDEX ON item TO &m0dbfdr.&m0tmpf1..ndx
- TOTAL ON item TO &m0dbfdr.&m0tmpf1 FIELDS qtyord, qtyrec FOR ;
- postat <> 'V' .AND. potype <> 'B' .AND. .NOT. DELETED()
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- SELECT b
- USE &poinvtf INDEX &poinvtf..ndx
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Updating On Order in Inventory File *****'
- REPLACE ALL onorder WITH 0.000
- SELECT a
- DO WHILE .NOT. EOF()
- SELECT b
- SEEK a->item
- IF .NOT. EOF()
- REPLACE onorder WITH onorder + a->qtyord - a->qtyrec
- ENDIF
- SELECT a
- SKIP
- ENDDO
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF
- IF .NOT. mar .AND. .NOT. mso .AND. FILE('&poinvtf..dbf')
- USE &poinvtf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating Inventory Value *****'
- SUM onhand * cost TO arinvtbal FOR stkcode = 'Y' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- @ 10,35 SAY SUBSTR(m0border,173,3) + ' Completed'
- ENDIF && .NOT. mpo
- IF .NOT. mso
- @ 12,35 SAY SUBSTR(m0border,173,3) + ' Cancelled'
- ELSE
- @ 12,35 SAY SUBSTR(m0border,173,3) + ' Working'
- IF FILE('&somastf..dbf')
- USE &somastf
- SET FILTER TO sostat <> 'V' .AND. sotype <> 'B' .AND. .NOT. DELETED()
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD SO Orders *****'
- DO p0flockd
- IF lockedf
- SUM ordamt + shpamt TO soptdord FOR current = ' '
- @ 22,0
- @ 22,1 SAY '***** Calculating Open Sales Orders *****'
- SUM ordamt TO soopen
- IF FILE('&socustf..dbf') .AND. FILE('&socustf..ndx') .AND. ;
- FILE('&somastf..ndx')
- USE &somastf
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- INDEX ON custno TO &m0dbfdr.&m0tmpf1..ndx
- TOTAL ON custno TO &m0dbfdr.&m0tmpf1 FIELDS ordamt FOR ;
- sostat <> 'V' .AND. sotype <> 'B' .AND. .NOT. DELETED()
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- SELECT b
- USE &socustf INDEX &socustf..ndx
- DO p0flockd
- IF lockedf
- REPLACE ALL onorder WITH 0.00
- SELECT a
- DO WHILE .NOT. EOF()
- SELECT b
- SEEK a->custno
- IF .NOT. EOF()
- REPLACE onorder WITH onorder + a->ordamt
- ENDIF
- SELECT a
- SKIP
- ENDDO
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF
- ENDIF && lockedf
- ENDIF && FILE('&somastf..dbf')
- IF FILE('&soshipf..dbf')
- @ 22,0
- @ 22,1 SAY '***** Calculating PTD SO Shipments *****'
- USE &soshipf
- DO p0flockd
- IF lockedf
- * ' Include tax calculated on item by item basis in PTD shipments
- * ' matches calculation in soshpp
- * ' (its a management report, not an accounting report)
- SUM extprice + (.01 * INT(taxrate * extprice + ;
- IIF(taxrate * extprice < 0, -.5, .5))) TO soptdship FOR .NOT. DELETED()
- ENDIF
- ENDIF
- IF FILE('&soinvtf..dbf') .AND. FILE('&soinvtf..ndx')
- SELECT b
- USE &soinvtf INDEX &soinvtf..ndx
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Clearing Allocated Inventory to Recalculate *****'
- REPLACE ALL aloc WITH 0.00
- IF FILE('&sotranf..dbf')
- SELECT a
- USE &sotranf
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- INDEX ON item TO &m0dbfdr.&m0tmpf1..ndx
- TOTAL ON item TO &m0dbfdr.&m0tmpf1 FIELDS qtyord FOR ;
- sostat <> 'V' .AND. sotype <> 'B' .AND. .NOT. DELETED()
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- @ 22,0
- @ 22,1 SAY '***** Updating Allocated Inventory from Sales Orders *****'
- SELECT a
- DO WHILE .NOT. EOF()
- SELECT b
- SEEK a->item
- IF a->qtyord > 0.000 .AND. .NOT. EOF()
- REPLACE aloc WITH aloc + a->qtyord
- ENDIF
- SELECT a
- SKIP
- ENDDO
- SELECT a
- USE
- ENDIF
- IF mma .AND. FILE('&matranf..dbf') .AND. FILE('&matinvf..ndx')
- @ 22,0
- @ 22,1 SAY '***** Updating Allocated Inventory ' + ;
- 'from Manufacturing *****'
- SELECT c
- USE &matranf INDEX &matinvf..ndx
- COPY STRUCTURE TO &m0dbfdr.&m0tmpf1
- SET FILTER TO level > 1 .AND. ;
- SUBSTR(process,8,1) = 'Y' .AND. .NOT. DELETED()
- GO TOP
- TOTAL ON item TO &m0dbfdr.&m0tmpf1 FIELDS oqty FOR .NOT. DELETED()
- SELECT a
- USE &m0dbfdr.&m0tmpf1 EXCLUSIVE
- INDEX ON item TO &m0dbfdr.&m0tmpf1..ndx
- DO WHILE .NOT. EOF()
- STORE 0 TO mfqty
- SELECT c
- SEEK a->item
- DO WHILE item = a->item .AND. .NOT. EOF()
- IF SUBSTR(process,6,1) = 'Y'
- STORE fqty + mfqty TO mfqty
- ENDIF
- SKIP
- ENDDO
- SELECT b
- SEEK a->item
- IF .NOT. EOF()
- REPLACE aloc WITH aloc + a->oqty + mfqty
- ENDIF
- SELECT a
- SKIP
- ENDDO
- ENDIF && mma .AND. FILE('&matranf..dbf') .AND. FILE('&matinvf..ndx')
- ENDIF && lockedf
- CLOSE DATABASES
- SELECT a
- ENDIF
- IF .NOT. mar .AND. FILE('&soinvtf..dbf')
- USE &soinvtf
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Calculating Inventory Value *****'
- SUM onhand * cost TO arinvtbal FOR stkcode = 'Y' .AND. .NOT. DELETED()
- ENDIF
- ENDIF
- @ 12,35 SAY SUBSTR(m0border,173,3) + ' Completed'
- ENDIF && .NOT. mso
- @ 14,35 SAY SUBSTR(m0border,173,3) + ' Working'
- USE &m0sysdr.sysdata
- DO p0flockd
- IF lockedf
- @ 22,0
- @ 22,1 SAY '***** Updating Business Status Fields in System File *****'
- IF map
- LOCATE FOR UPPER(sysid) = 'AP' + SUBSTR(m0comp,1,2)
- REPLACE num1 WITH apbal, num2 WITH apptdpay, num3 WITH apptdpaid, ;
- num4 WITH appapprov, num6 WITH apptddisc, num7 WITH apdapprov
- ENDIF
- IF mar
- LOCATE FOR UPPER(sysid) = 'AR' + SUBSTR(m0comp,1,2)
- REPLACE num1 WITH arbal, num2 WITH arptdbill, num3 WITH arptdcash, ;
- num4 WITH arinvtbal, num5 WITH arinvtrec, num6 WITH arinvtshp
- REPLACE num7 WITH arptdtax, num8 WITH arptddisc, num9 WITH arptdnon
- ENDIF
- IF mpo
- LOCATE FOR UPPER(sysid) = 'PO' + SUBSTR(m0comp,1,2)
- REPLACE num1 WITH poopen, num2 WITH poptdord, num3 WITH poptdrecp
- IF .NOT. mar
- REPLACE num4 WITH arinvtbal, num5 WITH arinvtrec
- ELSE
- * ' Set to zero if AR set to new value
- REPLACE num4 WITH 0, num5 WITH 0
- ENDIF
- ENDIF
- IF mso
- LOCATE FOR UPPER(sysid) = 'SO' + SUBSTR(m0comp,1,2)
- REPLACE num1 WITH soopen, num2 WITH soptdord, num3 WITH soptdship
- IF .NOT. mar .AND. .NOT. mpo
- REPLACE num4 WITH arinvtbal, num5 WITH arinvtrec
- ELSE
- * ' Set to zero if AR set to new value
- REPLACE num4 WITH 0, num5 WITH 0
- ENDIF
- ENDIF
- IF mma
- * ' Set to zero if AR sets new value/locate just if mma
- LOCATE FOR UPPER(sysid) = 'MA' + SUBSTR(m0comp,1,2)
- IF .NOT. mar .AND. .NOT. mpo .AND. .NOT. mso
- REPLACE num4 WITH arinvtbal, num5 WITH arinvtrec
- ELSE
- REPLACE num4 WITH 0, num5 WITH 0
- ENDIF
- ENDIF
- ENDIF && lockedf
- USE
- IF FILE('&m0dbfdr.&m0tmpf1..dbf')
- DELETE FILE &m0dbfdr.&m0tmpf1..dbf
- ENDIF
- IF FILE('&m0dbfdr.&m0tmpf1..ndx')
- DELETE FILE &m0dbfdr.&m0tmpf1..ndx
- ENDIF
- @ 22,0
- @ 14,35 SAY SUBSTR(m0border,173,3) + ' Completed'
- SET ESCAPE ON
- IF .NOT. m0single
- DO p0sysmnt WITH .f.
- ENDIF
- RETURN
- *
- * ' $Revision: 1.31 $
- * ' $Date: 18 Jun 1990 10:18:08 $
- ***********************
- *** ' SYSBCAL.PRG ' ***
- *** ' 711 Lines ' ***
- ***********************