Overview (FAQ1 ) -

Quick FAQ dump of things we've not had time to create standard helpdesk tickets for. Generally all bugs will be corrected by code, however, sometimes there'll be a kludge or a manual record fix. Users do not have access to make these corrections, which are generally kludge until a programatic correction is developed (if ever).


We have the following versions of Powerforce:

  • BASELINE
  • RAWS
  • EDMEN
  • MCORP
  • DEVEL10_SQL ( Baseline version )
  • DEVEL10
  • GEO (SQL)
  • SNP


To program the tabbing under generic baseline, place the following code into the <S> of the "TAB" widget

declare subroutine Set_Property
Page = Get_Property(CtrlEntId, 'VALUE')
Set_Property(@WINDOW,'VPOSITION', Page)

RETURN 0


SWB (Scheduling Workbench)

  1. [T] CLIENT_CONTRACTS <cc_cas_payclass> <<69>> the new payclass based upon Grade XLATE from <cc_cas_grade> <<87>.

  2. [S] validate_payclass : does the compare of payclass against CLIENT_CONTRACTS to see if flicking class based on CASUAL / PPT. On [W] CLIENT_OPERATIONS settings. Called principally from [S] TIME_SCHEDULER_SUB

  3. [S] time_bookings_sub - srtn which has logic for costing shifts. Has check for client override rates.
    [S] time_scheduler_calc - looks like calc relating to employee only
    [S] time_bookings_costings_sub -

  4. [S] time_scheduler_sub - calls [W] time_bookings or [W] time_bookings_roster on an edit of the shift
  5. [S]

  6. [S] TIME_BOOKINGS_SUB - called with 'CALC_POST_TIME' when lostfocus on post_time field.

  7. SWB - on a recost, the classification code cannot ever be changed.
    You can change things within the classification, and the shift will re-calc using the new values.
    Things like site specific classifications cause this to not allow changes.
    The (EDMEN) system though - you can do anything.

Top of Page

SWB (Issues)

  • Case of shift costings not working at all. Charges were set up correctly. After a lot of searching the scheduling code 'N' did not have onCharge checked.
  • Std Schedules workbench - the data on display is driven by the "Last Rotation W/E Date" value +/- rotation cycle (in days). [T] MASTER_ROTATION_SCHEDULE / [DATE_LAST_CYCLE]

Top of Page

Programming Tricks

  • OLE: about.blank, shell.explorer

  • Check to see if .ocx / .dll is registered:

    // Check if the ocx controls were registered

    registry_key= 'VSPRINTER7.VSPRINTER.1'
    oleObj = OleCreateInstance(registry_key)
    status = OleStatus()


    Status is -2147221005 if un-registered, else 0.

  • Open a window from another - then send actions into newly started window.


    Declare Function set_Property, start_Window

    atWindow = Start_Window("TABLE_BROWSER", @Window)
    objxArray = atWindow : ".TABLENAME"
    propArray = "DEFPROP"
    dataArray = "AVERY_LABELS"

    dataArray = set_Property( objxArray, propArray, dataArray )

    Call send_Event(atWindow : ".BTN_LOAD", "CLICK")


  • I have seen when save.list, and the activate.list - code which reads the actual saved list as follows:

    KeyList = Xlate("SYSLISTS", ListName, '', "X")



    The <1> entry is actually a header, and hence the actual keys that were saved away start at <2>.

  • Instances of CREATE event not working when window is called from another. You have to code the [Script] on the CREATE event of the called window to be like this:

    /* this is the script code on the window Create event */

    call send_message(@WINDOW:".RESULTS", "OLE.Navigate2","about:blank")
    call nv_licence("")
    RETURN 0

    & then I've seen this in another

    CLIENT_CONTRACT_DETAILS_SUB ('CREATE', CreateParam)
    RETURN 1

  • Sequence to start dialog window & get reply back

    stat = Dialog_Box("CLIENT_CONTACTS", @Window,"FRED") - 'FRED" will pass in as the CreateParam via a script of the called window



    end_dialog(@WINDOW, reply_1 :@FM: reply_2)
    RETURN 0

    The return 0 has to be included
  • Apparently there's a means to do the same using Q-events. That is to code, the call params as "@PARAM1" - which will pass the passed params into the subroutine.

  • retval = popup(@window,"","CONTACTS")
    SET_PROPERTY(@window:".ID", retval)
    send_event(@window:".ID", "LOSTFOCUS")

  • // TODO clear out cut/paste buffer (from Excel)
    void = set_property('CLIPBOARD', 'TEXT',"")
    void = OleCallMethod(objWorkBook , 'Close')

Top of Page

Dashboard

  • The display says Date/Time Actioned - is actually working against the key 'call_taken_date', 'call_taken_time'. The headers & SQL data are mis-aligned, but we will change this at some future stage. dashboard.

    And this runs of " where source = 'EDHEAL'
    order by call_taken_date, call_taken_time "
  • When debugging the dashboard, nv_dashboard works on the shift date being GE today()
  • RTIM<160>, <161>, <162> are cust_confirmed_shift, cust_confirmed_by, cust_confirmed_timedate() & the basis of display logic on the dashboard
  • Pressing the clock, asks for confirm with customer, employee - which calls [S] time_scheduler_confirm_sub -> confirm_shifts_sub -> audit_roster_update_sub. Confirm_shifts does the <160>..<162> setting.

A.I.

The elements involved in creating an award:

  • TIMEZONE
  • EMPLOYMENT_TYPE
  • CLASSIFICATION_CODES
  • CLASSIFICATION_CODES_HIST
  • PAY_CLASS
  • AWARD_SCHEDULES
  • LINK_CODES

Check the writeup pay/pharmacy award for worked example.

Top of Page

SQL

  • [S] wwa_mfs --> [T] wwa_log.
    <0> datetime() * tableName * id.
    <1> 3 = WRITE, 4 = DELETE are the control records.
  • SQL version needs 9.3 as a min. We have a 3 user "M" licence.
  • Random SQL: where category = 51 and id LIKE 'MENU%'
  • a
  • b
  • c

Top of Page

ACS

  • [S] mpd_import_acs_openbal
  • [S] mpd_import_acs_emps
  • Issue with labour to sales report - turned out to be (1) no invoice*co control batch record, and then the scheudling code "N" had show on P&L report option un-checked.

Billing

  1. The charge rates for clients and D1 codes etc are held on [F] CHARGE_RATES

  2. P/O numbers not printint out on invoices - quick patch: SERVICE_INVOICES/<x>, <83,1> will print into the header area of the invoice.

  3. Emailing invoices automatically requires data setup as follows:

    CNA <37> - find EMAIL_INV, set CLIENT_CONTRACTS<109>="EMAIL"
    // Even though clients may have email addresses, you still have to set the send invoice via email flag.


  4. [T] SERVICE_INVOICES / GEN_NO : RTC / INVOICE_XREF

  5. To clear a GEN, <15> = 0

Top of Page

EDMEN

  1. Case of 'employee in another payrun". The error reports have been enhanced to print out more meaningful messages, however what had happened was that a "PAYRUN" record of .null. was created and hence the message was correct, but didn't make sense. Deleting the null record removed the error. Cause is probably a debug break by users when processing a payrun.

  2. Super reports & EPS to Super companies was stuffed up because EDMEN have a non-std way of processing SUPER. Whilst PF processes super on the calendar month, they process it last week of previous to 2nd to last of current. The way to do this is to select the payruns for which you want to run the process - which then gives a value of 2 to Jan Super. To overcome this had to change supernnuation_sub - last line to say x = false$, and superannuation_reports - to force the month into '2' where it checks processing month vs super month. Then re-create the SUPER for the whole period spanning two months - all reports worked.

    The Superannuation_report uses the start date to pick off its MONTH field. Might change this to be the End Date.

    I'm trying setting PAYRUN/SUPER_PROCESSED to "", and then re-process the pays.

    To allow the system to manually select pays- reset PAYRUN <43> "super_processed" to .null., which then allows the pay into a dropdown for selection.


  3. Invoices print incorrect address on consolidated invoices. [T] SERVICE_INVOICES<14> has site. Change <14,1> to be the address that you want to print. Print option uses <14,1>.

Top of Page

Miscellaneous

  1. Setting up Micropay for ACS type processing (link). Note the control records to be set up & rephr010 is the report which dumps out what the Micropay export will look like.

  2. ACS - Micropay 2 records in [SYSTEM_CONTROLS] "SYSTEM*MICROPAY_INTERFACE*<<COMPANY>>" &
    "SYSTEM*INTERFACE*<<CO>>"
  3. (If the system*micropay_interface record is not present for a company, the Micropay button does not appear on the GUI).


    which has following layout:

     <1> 
    <2>
    <3>
    <4>
    <5>
    <6>
    <7>
    <8>
    <9>
    <10>
    <11>
    <12>
    1 
    1
    1
    0
    0
    0
    0
    1
    0
    1
    MICROPAY
    MICROPAY_EXPORT_ACS


  4. To clear the SYSLISTS table



    RUN ALIAS_TABLE "REVBOOT","GLOBAL","SYSLISTS","QF"
    RUN CLEAR_TABLE QF


    Remote deskton on console (admin mode)

    mstsc /v: lpspayroll - invokes remote desktop in admin mode (@ console of remote host)


    To have the new nice nvzn logo come up, [T] SYSTEM_CONTROLS / INTERFACE_CONTROLS has to be as follows:

     <1> 
    <2>
    <3>
    <4>
    <5>
    <6>
    <7>
    <8>
    <9>
    <10>
    gallery\pf9.jpg 
    PRO
    .\bmps

    .\bmps



    gallery\pf9.jpg
    PRO

    The trick is that the record id, has no *<company> suffix to this stage. The call / image is setup in [S] mms_init.
  5. Coding client specific once of routines: mpd_<<customer_code>>_*

  6. xcopy sub-dirs :

    start xcopy *.ov c:\temp\mpd /s/y
    start command /c xcopy *.lk c:\temp\mpd /s/y

  7. Payroll problems such as broken links - or why shifts won't load into PWB.
    The select against RTC is generally PAY_XREF <37> & UNPAID_STATUS <44>

The quirk of how invoice # are stored in RTC:

Invoice_Ref 	= Arg<RTIM_INVOICE_XREF>	; // <97?
 
Case Invoice_Ref Ne ''
            If Index(Invoice_Ref,'*',1) Then
            Invoice_No = Xlate('SERVICE_INV_WRK',Invoice_Ref,'INV_XREF','X')
            End Else
            Invoice_No = Invoice_Ref
            End

assa