Differences between revisions 16 and 17
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:
  IST / Status
  ------------
  
  - if "Create New Document" with the following IST-status sensitive
    combinations, I get the following results after "Save Selected":
  
    - no Ist(AT), Wer(AU): -- OK
    - Ist(AT) set to [today,future,past], no Wer(AU): -- OK
    - Ist(AT) set to [today,future,past], Wer(AU): --OK
SOLL-IST-WER combinations
-------------------------

The following tests show if expected results are met (i.e. if database
saves are correct), when Soll(AS), Ist(AT) and Wer(AU) are set/unset:

- no Soll(AS), Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL | 2011-10-07 | 303 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), no Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | 2011-09-10 | NULL | 104 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), Ist(AT), no Wer(AU): (no save) -- OK

- no Soll(AS), no Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL | NULL | 303 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), no Ist(AT), no Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+---------------------+--------------------+
  | 2011-09-10 | NULL | NULL |
  +----------------+--------------------+---------------------+
  -- OK
  
- no Soll(AS), Ist(AT), no Wer(AU): (no save) -- OK

- no Soll(AS), no Ist(AT), no Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL | NULL | NULL |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+---------------------+--------------------+
  | 2011-09-10 | 2011-10-07 | 230 |
  +----------------+---------------------+--------------------+
  -- OK
  

IST / Status
------------

- if "Create New Document" with the following IST-status sensitive
  combinations, I get the following results after "Save Selected":

  - no Ist(AT), Wer(AU): -- OK
  - Ist(AT) set to [today,future,past], no Wer(AU): -- OK
  - Ist(AT) set to [today,future,past], Wer(AU): --OK
  
  - Ist(AY) set to [today,future,past], no Wer(AZ), no Status(BA):
    - alert is wrapped in XML -- FAILED
  - no Ist (AY), Wer (AZ), no Status(BA): -- OK
  - no Ist (AY), no Wer (AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
  - Ist(AY) set to [today,future,past], Wer(AZ), no Status(BA):
    - alert is wrapped in XML -- FAILED
  - no Ist (AY), Wer (AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
  - Ist(AY) set to [today,future,past], Wer(AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
Line 28: Line 99:
    - Ist(AY) set to [today,future,past], no Wer(AZ), no Status(BA):
      - alert is wrapped in XML -- FAILED
    - no Ist (AY), Wer (AZ), no Status(BA): -- OK
    - no Ist (AY), no Wer (AZ), Status(BA):
      - alert is wrapped in XML -- FAILED
    - Ist(AY) set to [today,future,past], Wer(AZ), no Status(BA):
      - alert is wrapped in XML -- FAILED
    - no Ist (AY), Wer (AZ), Status(BA):
      - alert is wrapped in XML -- FAILED
    - Ist(AY) set to [today,future,past], Wer(AZ), Status(BA):
      - alert is wrapped in XML -- FAILED
      
    - Ist(BE) set to [today,future,past], no Wer(BF), no Status(BG):
      - alert is wrapped in XML -- FAILED
    - no Ist (BE), Wer (BF), no Status(BG): -- OK
    - no Ist (BE), no Wer (BF), Status(BG): -- OK
    - Ist(BE) set to [today,future,past], Wer(BF), no Status(BG):
      - alert is wrapped in XML -- FAILED
    - no Ist (BE), Wer (BF), Status(BG): -- OK
    - Ist(BE) set to [today,future,past], Wer(BF), Status(BG):
      - alert is wrapped in XML -- FAILED
      
    - no Ist(BL), Wer(BM): -- OK
    - Ist(BL) set to [today,future,past], no Wer(BM): -- OK
    - Ist(BL) set to [today,future,past], Wer(BM): -- OK

    - Ist(BR) set to [today,future,past], no Wer(BS), no Status(BT):
      - alert is wrapped in XML -- FAILED
    - no Ist(BR), Wer(BS), no Status(BT): -- OK
    - no Ist(BR), no Wer(BS), Status(BT):
      - alert is wrapped in XML -- FAILED
    - Ist(BR) set to [today,future,past], Wer(BS), no Status(BT):
      - alert is wrapped in XML -- FAILED
    - no Ist(BR), Wer(BS), Status(BT):
      - alert is wrapped in XML -- FAILED
    - Ist(BR) set to [today,future,past], Wer(BS), Status(BT):
      - alert is wrapped in XML -- FAILED

    - Ist(BY) set to [today,future,past], no Wer(BZ), no Status(CA):
      - alert is wrapped in XML -- FAILED
    - no Ist (BY), Wer (BZ), no Status(CA): -- OK
    - no Ist (BY), no Wer (BZ), Status(CA): -- OK
    - Ist(BY) set to [today,future,past], Wer(BZ), no Status(CA):
      - alert is wrapped in XML -- FAILED
    - no Ist(BY), Wer (BZ), Status(CA): -- OK
    - Ist(BY) set to [today,future,past], Wer(BZ), Status(CA):
      - alert is wrapped in XML -- FAILED
  - Ist(BE) set to [today,future,past], no Wer(BF), no Status(BG):
    - alert is wrapped in XML -- FAILED
  - no Ist (BE), Wer (BF), no Status(BG): -- OK
  - no Ist (BE), no Wer (BF), Status(BG): -- OK
  - Ist(BE) set to [today,future,past], Wer(BF), no Status(BG):
    - alert is wrapped in XML -- FAILED
  - no Ist (BE), Wer (BF), Status(BG): -- OK
  - Ist(BE) set to [today,future,past], Wer(BF), Status(BG):
    - alert is wrapped in XML -- FAILED
Line 76: Line 109:
    - no Ist(CF), Wer(CG): -- OK
    - Ist(CF) set to [today,future,past], no Wer(CG) or ...
    - Ist(CF) set to [today,future,past], Wer(CG)
   - if the document was successfully saved before, IST can be set to
        ANY valid date, I receive an error saying "Invalid Date"
        -- FAILED
      - if the document was not saved before, and if IST >
   today, I receive an error saying "keep your fingers crossed"
        -- FAILED
      - if the document was not saved before, if IST < today, I receive
   no error -- FAILED

    - Ist(CH) set to [today,future,past], no Wer(CI), no Status(CJ):
   - alert is wrapped in XML -- FAILED
    - no Ist (CH), Wer (CI), no Status(CJ): -- OK
    - no Ist (CH), no Wer (CI), Status(CJ):
   - alert is wrapped in XML -- FAILED
    - Ist(CH) set to [today,future,past], Wer(CI), no Status(CJ):
   - alert is wrapped in XML -- FAILED
    - no Ist (CH), Wer (CI), Status(CJ):
   - alert is wrapped in XML -- FAILED
    - Ist(CH) set to [today,future,past], Wer(CI), Status(CJ): -- OK

    - Ist(CN) set to [today,future,past], no Wer(CO), no Status(CP):
   - alert is wrapped in XML -- FAILED
    - no Ist (CN), Wer (CO), no Status(CP): -- OK
    - no Ist (CN), no Wer (CO), Status(CP): -- OK
    - Ist(CN) set to [today,future,past], Wer(CO), no Status(CP):
   - alert is wrapped in XML -- FAILED
    - no Ist (CN), Wer (CO), Status(CP): -- OK
    - Ist(CN) set to [today,future,past], Wer(CO), Status(CP):
   - alert is wrapped in XML -- FAILED
        Vorabzug Flag handling / RevC Revision Type menu handling
  ---------------------------------------------------------
  
  
onChange RecC Revision type behavior (CD):
  - gut zur Ausführung: sets to keyRefCTypeId = 15 -- OK
  - Freigegeben: sets to keyRefCTypeId = 13 -- OK

  onChange Vorabzug behavior (AP):
  - ja:
  - no Ist(BL), Wer(BM): -- OK
  - Ist(BL) set to [today,future,past], no Wer(BM): -- OK
  - Ist(BL) set to [today,future,past], Wer(BM): -- OK

  - Ist(BR) set to [today,future,past], no Wer(BS), no Status(BT):
    - alert is wrapped in XML -- FAILED
  - no Ist(BR), Wer(BS), no Status(BT): -- OK
  - no Ist(BR), no Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED
  - Ist(BR) set to [today,future,past], Wer(BS), no Status(BT):
    - alert is wrapped in XML -- FAILED
  - no Ist(BR), Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED
  - Ist(BR) set to [today,future,past], Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED

  - Ist(BY) set to [today,future,past], no Wer(BZ), no Status(CA):
    - alert is wrapped in XML -- FAILED
  - no Ist (BY), Wer (BZ), no Status(CA): -- OK
  - no Ist (BY), no Wer (BZ), Status(CA): -- OK
  - Ist(BY) set to [today,future,past], Wer(BZ), no Status(CA):
    - alert is wrapped in XML -- FAILED
  - no Ist(BY), Wer (BZ), Status(CA): -- OK
  - Ist(BY) set to [today,future,past], Wer(BZ), Status(CA):
    - alert is wrapped in XML -- FAILED
  
  - no Ist(CF), Wer(CG): -- OK
- Ist(CF) set to [today,future,past], no Wer(CG) or ...
  - Ist(CF) set to [today,future,past], Wer(CG)
    - if the document was successfully saved before, IST can be set to
      ANY valid date, I receive an error saying "Invalid Date"
      -- FAILED
    - if the document was not saved before, and if IST >
      today, I receive an error saying "keep your fingers crossed"
      -- FAILED
    - if the document was not saved before, if IST < today, I receive
      no error -- FAILED

  - Ist(CH) set to [today,future,past], no Wer(CI), no Status(CJ):
    - alert is wrapped in XML -- FAILED
  - no Ist (CH), Wer (CI), no Status(CJ): -- OK
  - no Ist (CH), no Wer (CI), Status(CJ):
    - alert is wrapped in XML -- FAILED
  - Ist(CH) set to [today,future,past], Wer(CI), no Status(CJ):
    - alert is wrapped in XML -- FAILED
  - no Ist (CH), Wer (CI), Status(CJ):
    - alert is wrapped in XML -- FAILED
  - Ist(CH) set to [today,future,past], Wer(CI), Status(CJ): -- OK

  - Ist(CN) set to [today,future,past], no Wer(CO), no Status(CP):
    - alert is wrapped in XML -- FAILED
  - no Ist (CN), Wer (CO), no Status(CP): -- OK
  - no Ist (CN), no Wer (CO), Status(CP): -- OK
  - Ist(CN) set to [today,future,past], Wer(CO), no Status(CP):
    - alert is wrapped in XML -- FAILED
  - no Ist (CN), Wer (CO), Status(CP): -- OK
  - Ist(CN) set to [today,future,past], Wer(CO), Status(CP):
    - alert is wrapped in XML -- FAILED
  

Vorabzug Flag handling / RevC Revision Type menu handling
---------------------------------------------------------

onChange RecC Revision type behavior (CD):
- gut zur Ausführung: sets to keyRefCTypeId = 15 -- OK
- Freigegeben: sets to keyRefCTypeId = 13 -- OK

onChange Vorabzug behavior (AP):
- ja:
  - Vorabzug fields are locked -- FAILED
  - after save:
    - revBVorabzugFlag => 1 -- OK
    - menu static: -- FAILED
Line 120: Line 183:
    - after save:
      - revBVorabzugFlag => 1 -- OK
      - menu static: -- FAILED
      - Vorabzug fields are locked -- FAILED
    - revision code changed: -- FAILED
  
  - nein:
    - Vorabzug fields are unlocked -- OK
    - after save:
      - menu static: -- FAILED
      - revBVorabzugFlag => 0 -- OK
      - Vorabzug fields are locked -- FAILED
    - revision code changed: -- FAILED
    
  COMMENT: When Vorabzug fields are 'locked', it's still possible to
  enter data and select from select menues. Also, if I change the
  Vorabzug flag, the revision code is not changed.
  
  
  Create New Document
  -------------------
  
  'Create New Document' inserts after selected row:
  - selected row = none: alert appears "Unable to create document in
    header area" -- OK
  - selected row = contains document: new document is placed after last
    document row -- OK
    
  COMMENT: When "Create New Document", it is not possible to complete
  all fields for all revisions because publish files (Ausgabedatei) are
  required in order to complete next fields and cannot be uploaded using
  Excel. Therefore, I never tested the scenario below:

  - if "Create New Document" with title="Excel-Test-MySQL",
    Zugriff="I-[...]", Projektphase="4-[...]", Fachbereich="03-[...]",
    Objekt="000-[...]", Kontakt="105-[...]", Dokumenttyp="02-[...]",
    Laufnr.="0001", title="Excel-Test-MySQL", ∆0="24-12-11"; click "Save
    Selected". Generates the following data in Revisions table:

    mysql> select revisionId, title0 from Revisions where title0 =
    'Excel-Test-MySQL';
    +------------+------------------+
    | revisionId | title0 |
    +------------+------------------+
    | 26733 | Excel-Test-MySQL |
    | 26734 | Excel-Test-MySQL |
    | 26735 | Excel-Test-MySQL |
    +------------+------------------+

    mysql> select * from Revisions where revisionId IN (26733, 26734,
    26735) \G
    *************************** 1. row ***************************
                revisionId: 26733
            updateCountRev: 0
                 drawingId: 32719
            revisionTypeId: 8
              revisionCode: v01
                revisionNo: 1
            workFlowTypeId: 32
     displayWorkFlowTypeId: 105
              layoutTypeId: 2
                lockedFlag: 0
            supersededFlag: 0
                matureFlag: 0
            restrictedFlag: 0
              revisionDate: NULL
         workFlowCommentId: NULL
       designPlanStartDate: NULL
            designPlanDate: NULL
        designCompleteDate: NULL
              designEffort: NULL
       designResponsibleId: NULL
        draftPlanStartDate: NULL
               draftEffort: NULL
      drafterResponsibleId: NULL
        checkPlanStartDate: NULL
             checkPlanDate: NULL
         checkCompleteDate: NULL
               checkEffort: 14
        checkResponsibleId: NULL
             checkStatusId: 10201
        checkCommentNoteId: NULL
      receivePlanStartDate: NULL
           receivePlanDate: NULL
       receiveCompleteDate: NULL
             receiveEffort: NULL
                receiverId: NULL
     approve1PlanStartDate: NULL
          approve1PlanDate: NULL
      approve1CompleteDate: NULL
            approve1Effort: NULL
               approver1Id: NULL
         approval1StatusId: NULL
    approval1CommentNoteId: NULL
     approve2PlanStartDate: NULL
          approve2PlanDate: NULL
      approve2CompleteDate: NULL
            approve2Effort: NULL
               approver2Id: NULL
         approval2StatusId: NULL
    approval2CommentNoteId: NULL
     approve3PlanStartDate: NULL
          approve3PlanDate: NULL
      approve3CompleteDate: NULL
            approve3Effort: NULL
               approver3Id: NULL
         approval3StatusId: NULL
    approval3CommentNoteId: NULL
     approve4PlanStartDate: NULL
          approve4PlanDate: NULL
      approve4CompleteDate: NULL
            approve4Effort: NULL
               approver4Id: NULL
         approval4StatusId: NULL
    approval4CommentNoteId: NULL
      releasePlanStartDate: NULL
           releasePlanDate: NULL
       releaseCompleteDate: NULL
             releaseEffort: 14
                releaserId: NULL
           releaseStatusId: 10301
      releaseCommentNoteId: NULL
            submitPlanDate: NULL
        submitCompleteDate: NULL
               submitterId: NULL
               submittalId: NULL
             submittalCode: NULL
                  title0Id: NULL
                    title0: Excel-Test-MySQL
                    title1: Tiel-2
                    title2: NULL
                    title3: NULL
                    author: NULL
                  abstract: NULL
                     scale: NULL
                    sizeId: NULL
             orientationId: NULL
               description: NULL
            reasonForIssue: NULL
           requesterUserId: NULL
        requestorCompanyId: NULL
            sourceFilename: NULL
          sourceFileTypeId: NULL
            sourceFilesize: NULL
           publishFilename: NULL
         publishFileTypeId: NULL
           publishFilesize: NULL
            externalKeyRev: NULL
         userDefinedFields: a:6:{s:11:"verteilerPl";s:1:"0";s:11:"verteilerPi";s:1:"0";s:13:"verteilerOebl";s:1:"0";s:11:"verteilerUn";s:1:"0";s:12:"verteilerExt";s:1:"0";s:15:"verteilerAblage";s:1:"0";}
    *************************** 2. row ***************************
                revisionId: 26734
            updateCountRev: 0
                 drawingId: 32719
            revisionTypeId: 14
              revisionCode: v02
                revisionNo: 2
            workFlowTypeId: 32
     displayWorkFlowTypeId: 106
              layoutTypeId: 2
                lockedFlag: 0
            supersededFlag: 0
                matureFlag: 0
            restrictedFlag: 0
              revisionDate: NULL
         workFlowCommentId: NULL
       designPlanStartDate: NULL
            designPlanDate: NULL
        designCompleteDate: NULL
              designEffort: 7
       designResponsibleId: NULL
        draftPlanStartDate: NULL
               draftEffort: NULL
      drafterResponsibleId: NULL
        checkPlanStartDate: NULL
             checkPlanDate: NULL
         checkCompleteDate: NULL
               checkEffort: 35
        checkResponsibleId: NULL
             checkStatusId: 10401
        checkCommentNoteId: NULL
      receivePlanStartDate: NULL
           receivePlanDate: NULL
       receiveCompleteDate: NULL
             receiveEffort: NULL
                receiverId: NULL
     approve1PlanStartDate: NULL
          approve1PlanDate: NULL
      approve1CompleteDate: NULL
            approve1Effort: NULL
               approver1Id: NULL
         approval1StatusId: NULL
    approval1CommentNoteId: NULL
     approve2PlanStartDate: NULL
          approve2PlanDate: NULL
      approve2CompleteDate: NULL
            approve2Effort: NULL
               approver2Id: NULL
         approval2StatusId: NULL
    approval2CommentNoteId: NULL
     approve3PlanStartDate: NULL
          approve3PlanDate: NULL
      approve3CompleteDate: NULL
            approve3Effort: NULL
               approver3Id: NULL
         approval3StatusId: NULL
    approval3CommentNoteId: NULL
     approve4PlanStartDate: NULL
          approve4PlanDate: NULL
      approve4CompleteDate: NULL
            approve4Effort: NULL
               approver4Id: NULL
         approval4StatusId: NULL
    approval4CommentNoteId: NULL
      releasePlanStartDate: NULL
           releasePlanDate: NULL
       releaseCompleteDate: NULL
             releaseEffort: 0
                releaserId: NULL
           releaseStatusId: 10501
      releaseCommentNoteId: NULL
            submitPlanDate: NULL
        submitCompleteDate: NULL
               submitterId: NULL
               submittalId: NULL
             submittalCode: NULL
                  title0Id: NULL
                    title0: Excel-Test-MySQL
                    title1: Tiel-2
                    title2: NULL
                    title3: NULL
                    author: NULL
                  abstract: NULL
                     scale: NULL
                    sizeId: NULL
             orientationId: NULL
               description: NULL
            reasonForIssue: NULL
           requesterUserId: NULL
        requestorCompanyId: NULL
            sourceFilename: NULL
          sourceFileTypeId: NULL
            sourceFilesize: NULL
           publishFilename: NULL
         publishFileTypeId: NULL
           publishFilesize: NULL
            externalKeyRev: NULL
         userDefinedFields: a:12:{s:16:"revBVorabzugFlag";s:1:"1";s:11:"verteilerPl";s:1:"0";s:11:"verteilerPi";s:1:"0";s:13:"verteilerOebl";s:1:"0";s:11:"verteilerUn";s:1:"0";s:12:"verteilerExt";s:1:"0";s:15:"verteilerAblage";s:1:"0";s:15:"resourcePlanCad";s:1:"0";s:14:"resourcePlanPi";s:1:"0";s:14:"resourcePlanPl";s:1:"0";s:14:"resourcePlAxpo";s:1:"0";s:15:"resourcePlPruef";s:1:"0";}
    *************************** 3. row ***************************
                revisionId: 26735
            updateCountRev: 0
                 drawingId: 32719
            revisionTypeId: 13
              revisionCode: v03
                revisionNo: 3
            workFlowTypeId: 32
     displayWorkFlowTypeId: 107
              layoutTypeId: 2
                lockedFlag: 0
            supersededFlag: 0
                matureFlag: 0
            restrictedFlag: 0
              revisionDate: NULL
         workFlowCommentId: NULL
       designPlanStartDate: NULL
            designPlanDate: NULL
        designCompleteDate: NULL
              designEffort: NULL
       designResponsibleId: NULL
        draftPlanStartDate: NULL
               draftEffort: NULL
      drafterResponsibleId: NULL
        checkPlanStartDate: NULL
             checkPlanDate: NULL
         checkCompleteDate: NULL
               checkEffort: NULL
        checkResponsibleId: NULL
             checkStatusId: 10601
        checkCommentNoteId: NULL
      receivePlanStartDate: NULL
           receivePlanDate: NULL
       receiveCompleteDate: NULL
             receiveEffort: NULL
                receiverId: NULL
     approve1PlanStartDate: NULL
          approve1PlanDate: NULL
      approve1CompleteDate: NULL
            approve1Effort: NULL
               approver1Id: NULL
         approval1StatusId: NULL
    approval1CommentNoteId: NULL
     approve2PlanStartDate: NULL
          approve2PlanDate: NULL
      approve2CompleteDate: NULL
            approve2Effort: NULL
               approver2Id: NULL
         approval2StatusId: NULL
    approval2CommentNoteId: NULL
     approve3PlanStartDate: NULL
          approve3PlanDate: NULL
      approve3CompleteDate: NULL
            approve3Effort: NULL
               approver3Id: NULL
         approval3StatusId: NULL
    approval3CommentNoteId: NULL
     approve4PlanStartDate: NULL
          approve4PlanDate: NULL
      approve4CompleteDate: NULL
            approve4Effort: NULL
               approver4Id: NULL
         approval4StatusId: NULL
    approval4CommentNoteId: NULL
      releasePlanStartDate: NULL
           releasePlanDate: NULL
       releaseCompleteDate: NULL
             releaseEffort: 7
                releaserId: NULL
           releaseStatusId: 10701
      releaseCommentNoteId: NULL
            submitPlanDate: NULL
        submitCompleteDate: NULL
               submitterId: NULL
               submittalId: NULL
             submittalCode: NULL
                  title0Id: NULL
                    title0: Excel-Test-MySQL
                    title1: Tiel-2
                    title2: NULL
                    title3: NULL
                    author: NULL
                  abstract: NULL
                     scale: NULL
                    sizeId: NULL
             orientationId: NULL
               description: NULL
            reasonForIssue: NULL
           requesterUserId: NULL
        requestorCompanyId: NULL
            sourceFilename: NULL
          sourceFileTypeId: NULL
            sourceFilesize: NULL
           publishFilename: NULL
         publishFileTypeId: NULL
           publishFilesize: NULL
            externalKeyRev: NULL
         userDefinedFields: a:7:{s:11:"verteilerPl";s:1:"0";s:11:"verteilerPi";s:1:"0";s:13:"verteilerOebl";s:1:"0";s:11:"verteilerUn";s:1:"0";s:12:"verteilerExt";s:1:"0";s:15:"verteilerAblage";s:1:"0";s:6:"delta1";s:2:"28";}
         3 rows in set (0.01 sec)

    Plan dates are missing -- FAILED
  
  
  Duplicate Selected
  ------------------
  
  - when blank row selected -- OK
  - when non-blank row selected -- OK
  
  
  Check for Duplicates
  --------------------
  
  Correctly highlights found duplicates -- OK
  
  
  Delta calculations
  ------------------
  
  The rules are ...
  
  Soll TGZA (CM) = T0 (CS) - ∆1 (CR)
  Soll TF (BX) = Soll TGZA (CM) - ∆2 (CL)
  PrüfSoll (BQ) = Soll TF (BX) - ∆3 (BW)
  Soll TZF (BK) = PrüfSoll (BQ) - ∆4 (BO)
  BrSoll (BD) = Soll TZF (BK) - ∆5 (BJ)
  StnSoll (AX) = BrSoll (BD) - ∆6 (BC)
  Soll TV (AS) = StnSoll (AX) - ∆7 (AV)

  ... or the other way around ...

  Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
  StnSoll (AX) + ∆6 (BC) = BrSoll (BD)
  BrSoll (BD) + ∆5 (BJ) = Soll TZF (BK)
  Soll TZF (BK) + ∆4 (BO) = PrüfSoll (BQ)
  PrüfSoll (BQ) + ∆3 (BW) = Soll TF (BX)
  Soll TF (BX) + ∆2 (CL) = Soll TGZA (CM)
  Soll TGZA (CM) + ∆1 (CR) = T0 (CS)

  ... simplyfied ...

  Soll TV (AS) + ∆7 (AV) + ∆6 (BC)
  + ∆5 (BJ) + ∆4 (BO) + ∆3 (BW) + ∆2 (CL)
  + ∆1 (CR) = T0 (CS)
  
  Therefore ...
  
  If I set ∆0 to a date in the future, and enter expression
  "=AS23+(AV23+BC23+BJ23+BO23+BW23+CL23+CR23)" in an Excel cell [adding
  the sum of deltas except ∆0 to Soll TV (AS23)], and change random
  deltas except for ∆0, the result always equals to ∆0 (CS23) -- OK

  Also, I added cells right below Soll date cells to proof, that ...
  
  Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
  [...]
  
  ... and changed random deltas again, and compared these cells with all
  the soll dates. There are no differences -- OK
  
  
  Umlauts
  -------

  Umlaut characters created from the Web GUI in text fields (e.g. titles
  and other text fields), and then displayed in the Web GUI. -- OK
  
  Umlaut characters created in Excel in text fields, and then displayed
  in Excel. -- OK
  
  New document created in Excel with umlauts in titles (1-4), and then
  saved to server. Display in web-interface -- OK
  
  New document in web-interface (title "Excel-Test-Umlauts-From-Server
  (äöü)") with all required versions for VA, ZF, FR created and saved;
  Afterwards, "Search Documents" in Excel with Rapport "Bau", Bereich
  "LC1" and Titel "Excel-Test-Umlaut": -- OK
  
  HTTP response 200 Response text:
  
  <?xml version='1.0' encoding='UTF-8'?> <record id='26696'
  type='Revisions' key='revisionId'> [...]
  <title0>Excel-Test-Umlauts-From-Server (äöü)</title0> [...] </record>
  
  Update existing but changed document with updated titles (v2/ZF
  revision only) in Excel with "Refresh Selected": -- OK


  Search Documents
  ----------------
  
  Dok. Nr.:
  - with valid revision code: -- OK
  - with invalid revision code (e.g. 'blabla', '1df3'): -- FAILED
  
  Bereich:
  - with valid selection: -- OK
  - with invalid data (e.g. 'blabla', '1df3'): -- FAILED
  
  QUESTION: Can I test other 'Bereiche' than 'LC1'?
  
  Zugriff, Projektphase, Fachbereich, Objekt, Kontakt, Dokumenttyp,
  Gruppe, Archiv, Lage:
  - with valid selection: -- OK
  - with invalid data (e.g. 'blabla', '1df3'): -- FAILED

  COMMENT: Entering invalid data also leads to funny results being
  placed in the worksheet.

  AMENDMENT: In selects, it should not be possible to enter custom data.

  Laufnummer (von - bis):
  - with valid data: -- OK
  - with invalid data (e.g. 'abcde', '1df3'): -- OK

  Place results in new worksheet -- OK

  Titel -- OK
  
  Ext. Ref.:
  - with valid value: -- OK
  - with invalid value (e.g. 'abcde', '1df3'): -- FAILED
  
  COMMENT: If a document has 'Ext. Ref.' = 'abcde', and I search for
  'Ext. Ref.' = 'abcde', the search returns the desired result.
  
  QUESTION: What is a valid value for 'Ext. Ref.'?
  
  Versionsdatum (von - bis) -- ???
  QUESTION: How can I test this?
  
  'Search' button: -- OK
  
  AMENDMENT: If nothing is entered, and 'Search' is clicked, a confusing
  alert message appears: 'Eingabe Fehler / Test Case: Feld
  erforderlich'.
  
  
  Basic Tests
  -----------
  
  1. Check reading and updating of all fields:
  --------------------------------------------
  
    From Excel to server:
    - Bereich (static) -- ???
    - Gruppe (ignored?) -- FAILED
    - Archiv -- OK
    - Berechtigung Server (Z) -- OK
    - Klassifizierung Projektphase (Ph) -- OK
    - Klassifizierung Fachbereich (FB) -- OK
    - Objekt (O) -- OK
    - Kontakt (K) -- OK
    - Dokumenttyp (DT) -- OK
      QUESTION: Dokumenttyp 03.1/03.2 etc that exist in Excel are not
      existing in my system yet.
    - Laufnummer -- OK
    - Dokumenttitel 1 -- OK
    - Dokumenttitel 2 -- OK
    - Dokumenttitel 3 -- OK
    - Dokumenttitel 4 -- OK
    - Massstab -- FAILED
    - Format -- FAILED
    - Version (static) -- OK

    Vorabzug:
    - Erstellen Soll (static) -- OK
    - Erstellen Ist -- OK
    - Erstellen Wer -- OK
    - Stellungnahme erstellt Status -- OK
    - Stellungnahme erstellt Soll (static) -- OK
    - Stellungnahme erstellt Ist -- OK
    - Stellungnahme erstellt Wer -- OK
    - bereinigt Status -- OK
    - bereinigt Soll -- OK
    - bereinigt Ist -- OK
    - bereinigt Wer -- OK
    
    zur Freigabe:
    - Erstellen Soll (static) -- OK
    - Erstellen Ist -- OK
    - Erstellen Wer -- OK
    - Prüfbericht erstellt Status -- OK
    - Prüfbericht erstellt Soll (static) -- OK
    - Prüfbericht erstellt Ist -- OK
    - Prüfbericht erstellt Wer -- OK
    - Freigabe Status -- OK
    - Freigabe Soll (static) -- OK
    - Freigabe Ist -- OK
    - Freigabe Wer -- OK
    
    Gut zur Ausführung:
    - versendet an BL Ist -- OK
    - versendet an BL Wer -- OK
    - erhalten von BL Status -- OK
    - erhalten von BL Ist -- OK
    - erhalten von BL Wer -- OK
    - übergeben an UN Status -- OK
    - übergeben an UN Soll (static) -- OK
    - übergeben an UN Ist -- OK
    - übergeben an UN Wer -- OK
  - revision code changed: -- FAILED

- nein:
  - Vorabzug fields are unlocked -- OK
  - after save:
    - menu static: -- FAILED
    - revBVorabzugFlag => 0 -- OK
    - Vorabzug fields are locked -- FAILED
  - revision code changed: -- FAILED
  
COMMENT: When Vorabzug fields are 'locked', it's still possible to
enter data and select from select menues. Also, if I change the
Vorabzug flag, the revision code is not changed.


Create New Document
-------------------

'Create New Document' inserts after selected row:
- selected row = none: alert appears "Unable to create document in
  header area" -- OK
- selected row = contains document: new document is placed after last
  document row -- OK
  
- if "Create New Document" with title={any title}, Zugriff="E-[...]",
  Projektphase="1-[...]", Fachbereich="12.1-[...]",
  Objekt="101-[...]", Kontakt="111-[...]", Dokumenttyp="03-[...]",
  Laufnr.="0001", ∆0="24-12-11"; click "Save Selected".
  
    The following error is returned:

    <?xml version=\'1.0\' encoding=\'UTF-8\'?>
    <response type=\'Drawings\' key=\'drawingId\' id=\'\' ref=\'Doc\'>
    <error>Feld \'Dok. Nr.\' \'Objekt\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Kontakt\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Dokumenttyp\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Laufnummer\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' ist ung?ltig.</error>
    </response>
  
  - the alert is meaningless & wrapped in XML -- FAILED


When "Create New Document", it is not possible to complete all fields
for all revisions because publish files (Ausgabedatei) are required in
order to complete next fields and cannot be uploaded using Excel.
Therefore, the scenario below was not tested before:

- if "Create New Document" with title="Excel-Test-MySQL",
  Zugriff="I-[...]", Projektphase="4-[...]", Fachbereich="03-[...]",
  Objekt="000-[...]", Kontakt="105-[...]", Dokumenttyp="02-[...]",
  Laufnr.="0001", T0="24-12-11"; click "Save
  Selected". -- OK

Duplicate Selected
------------------

- when blank row selected -- OK
- when non-blank row selected -- OK


Check for Duplicates
--------------------

Correctly highlights found duplicates -- OK


Delta calculations
------------------

The rules are ...

Soll TGZA (CM) = T0 (CS) - ∆1 (CR)
Soll TF (BX) = Soll TGZA (CM) - ∆2 (CL)
PrüfSoll (BQ) = Soll TF (BX) - ∆3 (BW)
Soll TZF (BK) = PrüfSoll (BQ) - ∆4 (BO)
BrSoll (BD) = Soll TZF (BK) - ∆5 (BJ)
StnSoll (AX) = BrSoll (BD) - ∆6 (BC)
Soll TV (AS) = StnSoll (AX) - ∆7 (AV)

... or the other way around ...

Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
StnSoll (AX) + ∆6 (BC) = BrSoll (BD)
BrSoll (BD) + ∆5 (BJ) = Soll TZF (BK)
Soll TZF (BK) + ∆4 (BO) = PrüfSoll (BQ)
PrüfSoll (BQ) + ∆3 (BW) = Soll TF (BX)
Soll TF (BX) + ∆2 (CL) = Soll TGZA (CM)
Soll TGZA (CM) + ∆1 (CR) = T0 (CS)

... simplyfied ...

Soll TV (AS) + ∆7 (AV) + ∆6 (BC)
+ ∆5 (BJ) + ∆4 (BO) + ∆3 (BW) + ∆2 (CL)
+ ∆1 (CR) = T0 (CS)

Therefore ...

If I set ∆0 to a date in the future, and enter expression
"=AS23+(AV23+BC23+BJ23+BO23+BW23+CL23+CR23)" in an Excel cell [adding
the sum of deltas except ∆0 to Soll TV (AS23)], and change random
deltas except for ∆0, the result always equals to ∆0 (CS23) -- OK

Also, I added cells right below Soll date cells to proof, that ...

Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
[...]

... and changed random deltas again, and compared these cells with all
the soll dates. There are no differences -- OK


Umlauts
-------

Umlaut characters created from the Web GUI in text fields (e.g. titles
and other text fields), and then displayed in the Web GUI. -- OK

Umlaut characters created in Excel in text fields, and then displayed
in Excel. -- OK

New document created in Excel with umlauts in titles (1-4), and then
saved to server. Display in web-interface -- OK

New document in web-interface (title "Excel-Test-Umlauts-From-Server
(äöü)") with all required versions for VA, ZF, FR created and saved;
Afterwards, "Search Documents" in Excel with Rapport "Bau", Bereich
"LC1" and Titel "Excel-Test-Umlaut": -- OK

HTTP response 200 Response text:

<?xml version='1.0' encoding='UTF-8'?> <record id='26696'
type='Revisions' key='revisionId'> [...]
<title0>Excel-Test-Umlauts-From-Server (äöü)</title0> [...] </record>

Update existing but changed document with updated titles (v2/ZF
revision only) in Excel with "Refresh Selected": -- OK


Search Documents
----------------

Dok. Nr.:
- with valid revision code: -- OK
- with invalid revision code (e.g. 'blabla', '1df3'): -- FAILED

Bereich:
- with valid selection: -- OK
- with invalid data (e.g. 'blabla', '1df3'): -- FAILED

QUESTION: Can I test other 'Bereiche' than 'LC1'?

Zugriff, Projektphase, Fachbereich, Objekt, Kontakt, Dokumenttyp,
Gruppe, Archiv, Lage:
- with valid selection: -- OK
- with invalid data (e.g. 'blabla', '1df3'): -- FAILED

COMMENT: Entering invalid data also leads to funny results being
placed in the worksheet.

AMENDMENT: In selects, it should not be possible to enter custom data.

Laufnummer (von - bis):
- with valid data: -- OK
- with invalid data (e.g. 'abcde', '1df3'): -- OK

Place results in new worksheet -- OK

Titel -- OK

Ext. Ref.:
- with valid value: -- OK
- with invalid value (e.g. 'abcde', '1df3'): -- FAILED

COMMENT: If a document has 'Ext. Ref.' = 'abcde', and I search for
'Ext. Ref.' = 'abcde', the search returns the desired result.

QUESTION: What is a valid value for 'Ext. Ref.'?

Versionsdatum (von - bis) -- ???
QUESTION: How can I test this?

'Search' button: -- OK

AMENDMENT: If nothing is entered, and 'Search' is clicked, a confusing
alert message appears: 'Eingabe Fehler / Test Case: Feld
erforderlich'.


Basic Tests
-----------

1. Check reading and updating of all fields:
--------------------------------------------

  From Excel to server:
  - Bereich (static) -- ???
  - Gruppe (ignored?) -- FAILED
  - Archiv -- OK
  - Berechtigung Server (Z) -- OK
  - Klassifizierung Projektphase (Ph) -- OK
  - Klassifizierung Fachbereich (FB) -- OK
  - Objekt (O) -- OK
  - Kontakt (K) -- OK
  - Dokumenttyp (DT) -- OK
    QUESTION: Dokumenttyp 03.1/03.2 etc that exist in Excel are not
    existing in my system yet.
  - Laufnummer -- OK
  - Dokumenttitel 1 -- OK
  - Dokumenttitel 2 -- OK
  - Dokumenttitel 3 -- OK
  - Dokumenttitel 4 -- OK
  - Massstab -- FAILED
  - Format -- FAILED
  - Version (static) -- OK

  Vorabzug:
  - Erstellen Soll (static) -- OK
  - Erstellen Ist -- OK
  - Erstellen Wer -- OK
  - Stellungnahme erstellt Status -- OK
  - Stellungnahme erstellt Soll (static) -- OK
  - Stellungnahme erstellt Ist -- OK
  - Stellungnahme erstellt Wer -- OK
  - bereinigt Status -- OK
  - bereinigt Soll -- OK
  - bereinigt Ist -- OK
  - bereinigt Wer -- OK
  
  zur Freigabe:
  - Erstellen Soll (static) -- OK
  - Erstellen Ist -- OK
  - Erstellen Wer -- OK
  - Prüfbericht erstellt Status -- OK
  - Prüfbericht erstellt Soll (static) -- OK
  - Prüfbericht erstellt Ist -- OK
  - Prüfbericht erstellt Wer -- OK
  - Freigabe Status -- OK
  - Freigabe Soll (static) -- OK
  - Freigabe Ist -- OK
  - Freigabe Wer -- OK
  
  Gut zur Ausführung:
  - versendet an BL Ist -- OK
  - versendet an BL Wer -- OK
  - erhalten von BL Status -- OK
  - erhalten von BL Ist -- OK
  - erhalten von BL Wer -- OK
  - übergeben an UN Status -- OK
  - übergeben an UN Soll (static) -- OK
  - übergeben an UN Ist -- OK
  - übergeben an UN Wer -- OK
Line 674: Line 441:
  Internals
  ---------
  1. CRITICAL Implement cell locking helper functions that make cells
  read-only/non-read-only
  - Implementation initial implementation that just sets field's
    background color to indicate that the field is locked. -- OK
Internals
---------
1. CRITICAL Implement cell locking helper functions that make cells
read-only/non-read-only
- Implementation initial implementation that just sets field's
  background color to indicate that the field is locked. -- OK
  
2. TEST Fix handling/display of progress messages:
- Convert display of Record count to Revision count in search --
  (check lower right msg in Excel -- not critical now)
- All (most?) menu items should clear display area when operation
  completes -- OK
  
7. Fix checkDuplicates to check both the drawingCode and drawingId
fields -- OK
  - Set cell note and highlighting when duplicates found -- OK

8. Review/improve cell note set/clear functions: isCellDifference and
setCellDifferenceComment -- FAILED
  - Fix bug when comparing date fields -- FAILED
  - Do not set cell comments in key set area -- (to be tested)
  
  (check title, dates for changes after 'Refresh Selected')
  make sure, that hidden red fields NEVER have cell comment
  
  Note: Date fields should only have a comment after a 'Refresh
  Selected', if an update on the server side changed dates.
  
  If T0 Arbeits-BP (CS) is set, the calculated SOLL dates are not
  saved on the server -- FAILED
  
  If changed in web-interface and 'Refresh Selected' in Excel:
  - VA Erstellen: Soll, Ist, Wer
    - Ist -- OK
    - Wer -- OK
  - VA Stellungnahme
    - Ist -- OK
    - Wer -- OK
  - VA Bereinigung
    - Ist -- OK
    - Wer -- OK

  
Search
------

7. Implement checking for duplicate worksheet names -- OK

  After manually creating new worksheet named 'Bau-23', I 'Search
  Documents' with 'Place results in new worksheet', and received a new
  worksheet named 'Bau-24' -- OK
      
Edit
----

3. CRITICAL (AH) Implement Vorabzug ja/nein flag
- Lock and grey-out all Vorabzug fields if Vorabzug flag set to 0 --
  test later
- Disable plan date formulas when Vorabzug set to false -- test later

5. TEST GA/Freigegeben menu:
- Sets the RevC revisionTypeId -- OK
  (CA-CF select -> show; should give you RevC value)
  
- Menu with two choices: freigegeben (13) and gut zur Ausführung (15)
  -- OK

COMMENT: revisionTypeId changes in cell CE, when switching from
'freigegeben' to 'gut zur Ausführung' and vice-versa, but changes
are not saved on the server after 'Save Selected'. -- FAILED


Validation
----------

1. TEST Client-side field validation
- Implement Ist field validation.-- OK
- Formulas generated from Perl script. -- (to be tested)
  - See axpo-integration/data/genValidation.pl -- (to be tested)
  
  MEANING: Test Analog workflow wizard validation (except Soll)!
Line 681: Line 523:
  2. TEST Fix handling/display of progress messages:
  - Convert display of Record count to Revision count in search --
    (check lower right msg in Excel -- not critical now)
  - All (most?) menu items should clear display area when operation
    completes -- OK
   Save/Update
-----------

1. TEST Save handling of Vorabzug menu and GA/Freigegeben menus
- Vorabzug flag -- ?
  (AP, if already "ja", it should be locked. Check specs)
- GA/Freigegeben menu -- ?
  (After it was set, it should be locked.)

  NOT YET IMPLEMENTED: Basically, after save, both menues are to be
  locked.
  
  MEANING: Both menues determine document codes. Check specs 5.2.1
  Axpo Revision Sequence, 5.2.2 Sub-Revision Coding System, and test
  against them.

2. TEST Implement field locking after save. Fields:
- Bereich menu -- OK
- Vorabzug flag -- OK
- GA/Freigegeben menu (RevC type) -- OK
Line 687: Line 545:
  7. Fix checkDuplicates to check both the drawingCode and drawingId
  fields -- OK
    - Set cell note and highlighting when duplicates found -- OK

  8. Review/improve cell note set/clear functions: isCellDifference and
  setCellDifferenceComment -- FAILED
    - Fix bug when comparing date fields -- FAILED
    - Do not set cell comments in key set area -- (to be tested)
3. Generate client-side error on update/insert when drawing code not
complete -- FAILED

- Sometimes, client-side errors still are wrapped in XML tags

- After "New document" with title only set to "Excel-Test-2", I
  correctly receive an error ...

  saveRow: Internal error: Invalid XML Response. HTTP response: 400
  Response text: <?xml version='1.0' encoding='UTF-8'?>
  <response type='Drawings' key='drawingId' id='' ref='Doc'>
  <error>Feld 'Dok. Nr.'-'Laufnummer' ist ung?ltig.</error>
  <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
  </response>
  64
  
  -- FAILED
  
  AMENDMENT: The error should not be wrapped in XML tags.

- After "New document" with title 'Excel-Test-2', Laufnummer '0001'
  I correctly receive an error -- OK

- After "New document" with title '', Laufnummer '0001'
  I correctly receive an error -- OK
  
- After "New document" with title 'Excel-Test-4', Berechtigung Server
  (Z) "E-Extern", Klassifizierung Projektphase (Ph) "0 -
  phasenunabhängig", Klassifizierung Fachbereich (FB) "01.3 -
  Management - Versicherung", Objekt (O) "101 - Bestehende Anlagen -
  Stauanlage Limmernsee", Kontakt (K) "102 - Unternehmer und
  Lieferanten - ALSTOM Hydro Schweiz AG", Dokumenttyp (DT) "03.1 -
  Protokoll - Sitzungsprotokoll" and Laufnummer "0001", I correctly
  receive an error, but the error is rather confusing ...

  saveRow: Internal error: Invalid XML Response. HTTP response: 400
  Response text: <?xml version='1.0' encoding='UTF-8'?>
  <response type='Drawings' key='drawingId' id='' ref='Doc'>
  <error>Feld 'Dok. Nr.' 'Objekt' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Kontakt' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Dokumenttyp' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Laufnummer' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
  </response>
  64
  
  -- FAILED

  AMENDMENT: The error should not be wrapped in XML tags.
  
4. Implement checking of record serial numbers on update -- FAILED

Changed title of document in Excel (without saving), then changed
title of same document (type 'v2/ZF/zur Freigabe') in web-interface
with saving. 'Save Selected' in Excel shows expected error message:

  Update/Save error: Record: zur Freigabe
  • BOBaseUpdate (Revisions): simultaneous update (update counter
    mismatch:1 != 0)
Line 696: Line 605:
    (check title, dates for changes after 'Refresh Selected')
    make sure, that hidden red fields NEVER have cell comment
    
    Note: Date fields should only have a comment after a 'Refresh
    Selected', if an update on the server side changed dates.
    
    If T0 Arbeits-BP (CS) is set, the calculated SOLL dates are not
    saved on the server -- FAILED
    
    If changed in web-interface and 'Refresh Selected' in Excel:
    - VA Erstellen: Soll, Ist, Wer
      - Ist -- OK
      - Wer -- OK
    - VA Stellungnahme
      - Ist -- OK
      - Wer -- OK
    - VA Bereinigung
      - Ist -- OK
      - Wer -- OK

    
  Search
  ------
  
  7. Implement checking for duplicate worksheet names -- OK
  
    After manually creating new worksheet named 'Bau-23', I 'Search
    Documents' with 'Place results in new worksheet', and received a new
    worksheet named 'Bau-24' -- OK
        
  Edit
  ----
  
  3. CRITICAL (AH) Implement Vorabzug ja/nein flag
  - Lock and grey-out all Vorabzug fields if Vorabzug flag set to 0 --
    test later
  - Disable plan date formulas when Vorabzug set to false -- test later

  5. TEST GA/Freigegeben menu:
  - Sets the RevC revisionTypeId -- OK
    (CA-CF select -> show; should give you RevC value)
    
  - Menu with two choices: freigegeben (13) and gut zur Ausführung (15)
    -- OK
  
  COMMENT: revisionTypeId changes in cell CE, when switching from
  'freigegeben' to 'gut zur Ausführung' and vice-versa, but changes
  are not saved on the server after 'Save Selected'. -- FAILED


  Validation
  ----------
  
  1. TEST Client-side field validation
  - Implement Ist field validation.-- OK
  - Formulas generated from Perl script. -- (to be tested)
    - See axpo-integration/data/genValidation.pl -- (to be tested)
    
    MEANING: Test Analog workflow wizard validation (except Soll)!
-- OK

- If you change title, B4 should increment value on the row of actual
  document. -- FAILED
Line 756: Line 610:
       Save/Update
  -----------
  
  1. TEST Save handling of Vorabzug menu and GA/Freigegeben menus
  - Vorabzug flag -- ?
    (AP, if already "ja", it should be locked. Check specs)
  - GA/Freigegeben menu -- ?
    (After it was set, it should be locked.)

    NOT YET IMPLEMENTED: Basically, after save, both menues are to be
    locked.
    
    MEANING: Both menues determine document codes. Check specs 5.2.1
    Axpo Revision Sequence, 5.2.2 Sub-Revision Coding System, and test
    against them.
  
  2. TEST Implement field locking after save. Fields:
  - Bereich menu -- OK
  - Vorabzug flag -- OK
  - GA/Freigegeben menu (RevC type) -- OK
- updateCount mismatch: update doc in web-interface, then try to save
  same document in excel, should give error -- OK


5. Save all/selected should set record update counts -- FAILED

- Test that a second save results in state with correct record update
  counts -- (to be tested)
Line 778: Line 619:
  3. Generate client-side error on update/insert when drawing code not
  complete -- FAILED
  
  - Sometimes, client-side errors still are wrapped in XML tags
  
  - After "New document" with title only set to "Excel-Test-2", I
    correctly receive an error ...
  
    saveRow: Internal error: Invalid XML Response. HTTP response: 400
    Response text: <?xml version='1.0' encoding='UTF-8'?>
    <response type='Drawings' key='drawingId' id='' ref='Doc'>
    <error>Feld 'Dok. Nr.'-'Laufnummer' ist ung?ltig.</error>
    <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
    </response>
    64
    
    -- FAILED
    
    AMENDMENT: The error should not be wrapped in XML tags.

  - After "New document" with title 'Excel-Test-2', Laufnummer '0001'
    I correctly receive an error -- OK
  
  - After "New document" with title '', Laufnummer '0001'
    I correctly receive an error -- OK
    
  - After "New document" with title 'Excel-Test-4', Berechtigung Server
    (Z) "E-Extern", Klassifizierung Projektphase (Ph) "0 -
    phasenunabhängig", Klassifizierung Fachbereich (FB) "01.3 -
    Management - Versicherung", Objekt (O) "101 - Bestehende Anlagen -
    Stauanlage Limmernsee", Kontakt (K) "102 - Unternehmer und
    Lieferanten - ALSTOM Hydro Schweiz AG", Dokumenttyp (DT) "03.1 -
    Protokoll - Sitzungsprotokoll" and Laufnummer "0001", I correctly
    receive an error, but the error is rather confusing ...

    saveRow: Internal error: Invalid XML Response. HTTP response: 400
    Response text: <?xml version='1.0' encoding='UTF-8'?>
    <response type='Drawings' key='drawingId' id='' ref='Doc'>
    <error>Feld 'Dok. Nr.' 'Objekt' muss angegeben werden.</error>
    <error>Feld 'Dok. Nr.' 'Kontakt' muss angegeben werden.</error>
    <error>Feld 'Dok. Nr.' 'Dokumenttyp' muss angegeben werden.</error>
    <error>Feld 'Dok. Nr.' 'Laufnummer' muss angegeben werden.</error>
    <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
    </response>
    64
    
    -- FAILED

    AMENDMENT: The error should not be wrapped in XML tags.
    
  4. Implement checking of record serial numbers on update -- FAILED
  
  Changed title of document in Excel (without saving), then changed
  title of same document (type 'v2/ZF/zur Freigabe') in web-interface
  with saving. 'Save Selected' in Excel shows expected error message:
  
    Update/Save error: Record: zur Freigabe
    • BOBaseUpdate (Revisions): simultaneous update (update counter
      mismatch:1 != 0)
      
  -- OK

  - If you change title, B4 should increment value on the row of actual
    document. -- FAILED
        
  - updateCount mismatch: update doc in web-interface, then try to save
    same document in excel, should give error -- OK
  
  
  5. Save all/selected should set record update counts -- FAILED
  
  - Test that a second save results in state with correct record update
    counts -- (to be tested)
        
  QUESTION: Under what condition should keyDocUpdateCountDoc (Excel
  cell:B{n}) increment its value?

  6. Duplicate row detection before:
  - search / test cases -- ?
  - save all / save selected -- ?
  - refresh all / refresh selected -- ?
  
  MEANING: Check specs for it and test against.
  
  TODO Attributes
  ----------
  
  2. Get feedback from JS re: recent changes to m_attributeRowCount
  global variable -- ?
  - Make sure that handling of m_attributeRowCount global variable is OK
    -- ?
  
  MEANING: Test 'Refresh Attributes' get all metadata from server.
    
QUESTION: Under what condition should keyDocUpdateCountDoc (Excel
cell:B{n}) increment its value?

6. Duplicate row detection before:
- search / test cases -- ?
- save all / save selected -- ?
- refresh all / refresh selected -- ?

MEANING: Check specs for it and test against.

TODO Attributes
----------

2. Get feedback from JS re: recent changes to m_attributeRowCount
global variable -- ?
- Make sure that handling of m_attributeRowCount global variable is OK
  -- ?

MEANING: Test 'Refresh Attributes' get all metadata from server.
  
Line 876: Line 643:
  6. TEST Performance:
  - Disable screen update during record list processing -- ?
  - Investigate to see if bubble sort is really needed. Debug prints? --
    ?
       MEANING: create many records. User Search and measure how long it
  takes.

  13. Implement new columns to display record status and DrawMGT id
  values (design needed) -- (to be tested)
  MEANING: Cell R, if gelb = change, pink = error, white = ok
     14. Design for record status fields
  - May not be needed if the above highlighting is implemented -- ?
     MEANING: Same as above.

  
6. TEST Performance:
- Disable screen update during record list processing -- ?
- Investigate to see if bubble sort is really needed. Debug prints? --
  ?
  
MEANING: create many records. User Search and measure how long it
takes.

13. Implement new columns to display record status and DrawMGT id
values (design needed) -- (to be tested)
MEANING: Cell R, if gelb = change, pink = error, white = ok

14. Design for record status fields
- May not be needed if the above highlighting is implemented -- ?

MEANING: Same as above.
Line 898: Line 665:
  containing already-defined document and revision metadata -- OK
  
containing already-defined document and revision metadata -- OK
Line 901: Line 668:
  custom Excel menu item, using their normal DrawMGT login name and
  password. -- OK
custom Excel menu item, using their normal DrawMGT login name and
password. -- OK
Line 905: Line 672:
  DrawMGT server -- OK
  
DrawMGT server -- OK
Line 908: Line 675:
  perform operations that do not require access to the DrawMGT server
  -- OK
perform operations that do not require access to the DrawMGT server
-- OK
Line 915: Line 682:
  - The user can download metadata from the DrawMGT server using a
    search operation -- OK
- The user can download metadata from the DrawMGT server using a
  search operation -- OK
  
- It is possible to search by: document title, code and classification
  attributes -- OK
  
- In the search screen, the drop down menus of classification
  attributes can be shortened by eliminating attributes not relevant
  to the planning process. -- (ignore for now)
  
- Search results are processed as followed:
  - Search results are merged with an existing worksheet. Existing
    records in the worksheet are updated with the latest server data,
    new records are added to the worksheet -- OK
Line 918: Line 697:
  - It is possible to search by: document title, code and classification
    attributes -- OK
    
  - In the search screen, the drop down menus of classification
    attributes can be shortened by eliminating attributes not relevant
    to the planning process. -- (ignore for now)
    
  - Search results are processed as followed:
    - Search results are merged with an existing worksheet. Existing
      records in the worksheet are updated with the latest server data,
      new records are added to the worksheet -- OK
      
  
- The DrawMGT server checks the user’s roles and only downloads
   metadata that the user has rights to view -- FAILED

   COMMENT: If a user has Dok-beschr.Viewer role only and it is
    searched for a document that is not completed yet, the document gets
   still placed in Excel.
        AMENDMENT: Even if Dok-beschr.Viewer allows to see completed
    documents, cells still can be changed for a completed document. In
    my personal opinion, it would be less confusing to have the cells
    locked in that case.
        QUESTION: If a user has Dok-beschr.Viewer, shouldn't he be
    allowed to have a new document being placed in the worksheet
   after he clicked 'Create New Document' ?
        ANSWER: User should not be able to do that.
       - A warning is given if a search will return a large number of
   records, and allow the user to cancel the search -- OK
- The DrawMGT server checks the user’s roles and only downloads
  metadata that the user has rights to view -- FAILED

  COMMENT: If a user has Dok-beschr.Viewer role only and it is
  searched for a document that is not completed yet, the document gets
  still placed in Excel.
  
AMENDMENT: Even if Dok-beschr.Viewer allows to see completed
  documents, cells still can be changed for a completed document. In
  my personal opinion, it would be less confusing to have the cells
  locked in that case.
  
QUESTION: If a user has Dok-beschr.Viewer, shouldn't he be
  allowed to have a new document being placed in the worksheet
  after he clicked 'Create New Document' ?
  
ANSWER: User should not be able to do that.
  
- A warning is given if a search will return a large number of
  records, and allow the user to cancel the search -- OK
Line 955: Line 722:
  - New metadata can be created in the planning workbook using Excel’s
    normal copy/paste and fill operations -- OK
       - Metadata for new documents and revisions can be saved to the DrawMGT
    server -- OK
       - The Excel planning spreadsheet cannot be used to delete document and
   revision records from the DrawMGT server -- OK
- New metadata can be created in the planning workbook using Excel’s
  normal copy/paste and fill operations -- OK
  
- Metadata for new documents and revisions can be saved to the DrawMGT
  server -- OK
  
- The Excel planning spreadsheet cannot be used to delete document and
  revision records from the DrawMGT server -- OK
Line 968: Line 735:
  - The document rows in the planning worksheet can be synchronized with
    latest metadata from DrawMGT server -- OK
- The document rows in the planning worksheet can be synchronized with
  latest metadata from DrawMGT server -- OK
  
- The planning spreadsheet is able to detect conflicting updates and,
  the event of a conflict, reports the before/after field values in
  the worksheet to the user for possible manual inspection and
  correction --
  
  AMENDMENT: The error message 'Sie sind für diese Transaktion nicht
  authorisiert.' shown inside an XML wrapper
  
- Unsaved data, including new records that have never been saved, are
  highlighted to alert the user -- OK
  
  The highlight on column R{n} says:
  
  - "Row changed", when an existing document was changed but not yet
    saved -- OK
Line 971: Line 754:
  - The planning spreadsheet is able to detect conflicting updates and,
    the event of a conflict, reports the before/after field values in
    the worksheet to the user for possible manual inspection and
    correction --
    
    AMENDMENT: The error message 'Sie sind für diese Transaktion nicht
    authorisiert.' shown inside an XML wrapper
    
  - Unsaved data, including new records that have never been saved, are
    highlighted to alert the user -- OK
    
    The highlight on column R{n} says:
    
    - "Row changed", when an existing document was changed but not yet
      saved -- OK
      
    - "Not saved", when a new document was changed but not yet saved
      -- OK
  - "Not saved", when a new document was changed but not yet saved
    -- OK
Line 994: Line 761:
  - Management of workflow steps associated with the Vorabzug, zur
    Freigabe and Gut zur Ausführung / Freigegeben workflows. Includes
    person responsible, planned/actual complete dates and status (for
   workflow steps with a status field):
    - Erstellen --OK
    - Stellungnahme and Prüfberichte -- OK
    - Freigabe -- OK
       - Display of appropriate workflow step names in the DrawMGT
    web-interface (e.g. ‘Bereinigung’ instead of ‘Freigabe’ for Vorabzug
    revisions) -- OK
        COMMENT: 'bereinigt' is shown instead of 'Bereinigung'.
       - Calculate revision workflow step plan-dates using standard date
   calculation formulas -- OK
     - Override the standard workflow date formulas on an individual
   document and revision basis -- OK
           - The DrawMGT server performs validation before saving data
    - The user’s roles are checked and enforced -- (to be tested)
   - Data values are validated -- OK
- Management of workflow steps associated with the Vorabzug, zur
  Freigabe and Gut zur Ausführung / Freigegeben workflows. Includes
  person responsible, planned/actual complete dates and status (for
  workflow steps with a status field):
  - Erstellen --OK
  - Stellungnahme and Prüfberichte -- OK
  - Freigabe -- OK
  
- Display of appropriate workflow step names in the DrawMGT
  web-interface (e.g. ‘Bereinigung’ instead of ‘Freigabe’ for Vorabzug
  revisions) -- OK
  
COMMENT: 'bereinigt' is shown instead of 'Bereinigung'.
  
- Calculate revision workflow step plan-dates using standard date
  calculation formulas -- OK

- Override the standard workflow date formulas on an individual
  document and revision basis -- OK
      
- The DrawMGT server performs validation before saving data
  - The user’s roles are checked and enforced -- (to be tested)
  - Data values are validated -- OK
Line 1022: Line 789:
  - Reports Dokumentlieferungplan ('Create Report 02F1') and
   Resourcenplan ('Create Report 02F1') can be generated from the
    planning worksheet -- (to be tested)
- Reports Dokumentlieferungplan ('Create Report 02F1') and
  Resourcenplan ('Create Report 02F1') can be generated from the
  planning worksheet -- (to be tested)
Line 1030: Line 797:
  - The user can save one or more selected rows -- (to be tested)
     - The save operation checks each record for conflicting updates on the
   DrawMGT server -- (to be tested)
       - All records where a conflict (or error) is detected are highlighted.
    Both the local and server field values are available, so that the
    user can manually correct the record. -- (to be tested)
       - All records that can be saved without conflicts are saved and
    de-highlighted -- (to be tested)
- The user can save one or more selected rows -- (to be tested)

- The save operation checks each record for conflicting updates on the
  DrawMGT server -- (to be tested)
  
- All records where a conflict (or error) is detected are highlighted.
  Both the local and server field values are available, so that the
  user can manually correct the record. -- (to be tested)
  
- All records that can be saved without conflicts are saved and
  de-highlighted -- (to be tested)
Line 1046: Line 813:
  - If there are any unsaved records and the user attempts to exit
    Excel, a warning is displayed and the user is given the option to
   abort the exit -- FAILED
        COMMENT: If "Create New Document" witout saving or I change an
    existing document without saving, and exit Excel, I only receive
   Excel's Standard Exit Alert: "Do you want to save the changes you
   made to 'LinthalDrawmgt-Planning-1.xlsm"
    
- If there are any unsaved records and the user attempts to exit
  Excel, a warning is displayed and the user is given the option to
  abort the exit -- FAILED
  
COMMENT: If "Create New Document" witout saving or I change an
  existing document without saving, and exit Excel, I only receive
  Excel's Standard Exit Alert: "Do you want to save the changes you
  made to 'LinthalDrawmgt-Planning-1.xlsm"
  
Line 1059: Line 826:
  - Ability to create sub-revisions in order to capture the history of
    rejected and internally reviewed revisions. -- (to be tested)
- Ability to create sub-revisions in order to capture the history of
  rejected and internally reviewed revisions. -- (to be tested)
   - Ability to link documents to other documents, including:
  - Linking a document to a document, without specifying which
    revision -- (to be tested)
Line 1062: Line 833:
  - Ability to link documents to other documents, including:
    - Linking a document to a document, without
specifying which
      revision
-- (to be tested)
           - Linking a document to a specific revision or the latest revision
      -- (to be tested)

  
- New document types:
    - Prüfbericht -- OK
    - Stellungnahme -- OK
     - Ability to set a ‘revision date’ to all revisions of a document,
    independent of the dates associated with the revision’s workflow --
    (to be tested)
       - Removal of planned titles from document records (requires that every
    document have revision defined, which will contain the title) -- (to
    be tested)
       - Ability to assign a serial number and prefix (e.g. ‘PBR-LA2-0001’)
    to a document as a classification attribute. The serial numbers
   should assigned sequentially and be unique for a given prefix. -- OK
  - Linking a document to a specific revision or the latest revision
   
-- (to be tested)

- New document types:
  - Prüfbericht -- OK
  - Stellungnahme -- OK

- Ability to set a ‘revision date’ to all revisions of a document,
  independent of the dates associated with the revision’s workflow --
  (to be tested)
  
- Removal of planned titles from document records (requires that every
  document have revision defined, which will contain the title) -- (to
  be tested)
  
- Ability to assign a serial number and prefix (e.g. ‘PBR-LA2-0001’)
  to a document as a classification attribute. The serial numbers
  should assigned sequentially and be unique for a given prefix. -- OK
Line 1089: Line 856:
  - User can provide 'Benutzername', 'Passwort', select from a list of
   servers, and log-in -- OK

    Start-Up Procedure
    ------------------
    
  
If the user successfully logs into the DrawMGT server then a
    procedure is initiated which downloads the following into the
    spreadsheet:
        1. The latest VBA code for the spreadsheet -- (to be tested)
        2. Attribute lists -- (to be tested)
        3. User lists -- FAILED
   COMMENT: When I set user 'Hans Muster' on loki test-server, and
       'Refresh Selected' in Excel, the user displayed is 'Albert
       Franz'.
           4. User role lists -- (to be tested)
- User can provide 'Benutzername', 'Passwort', select from a list of
  servers, and log-in -- OK

  Start-Up Procedure
  ------------------
  
If the user successfully logs into the DrawMGT server then a
  procedure is initiated which downloads the following into the
  spreadsheet:
  
1. The latest VBA code for the spreadsheet -- (to be tested)
  
2. Attribute lists -- (to be tested)
  
3. User lists -- FAILED
     COMMENT: When I set user 'Hans Muster' on loki test-server, and
     'Refresh Selected' in Excel, the user displayed is 'Albert
     Franz'.
     
4. User role lists -- (to be tested)
Line 1114: Line 881:
  - click menu ribbon 'Create New Document', cells are filled with
   template data -- OK
       AMENDMENTS:
  - Dokumenttitel 2 should be 'Titel-2'
  - it should not be possible to enter chars in Lauf-/ Teilnummer cells
- click menu ribbon 'Create New Document', cells are filled with
  template data -- OK
  
AMENDMENTS:
- Dokumenttitel 2 should be 'Titel-2'
- it should not be possible to enter chars in Lauf-/ Teilnummer cells
Line 1125: Line 892:
  After change in web-interface
     - update document code -- OK
  - update title -- FAILED
     - update VA Erstellen (Ist, Wer) -- OK
  - update VA Stellungnahme (Ist, Wer, Status)
    Ist -- OK
  
Wer -- FAILED (is 'Abert Franz' should be 'Muster Hans')
   COMMENT: 'Muster Hans' is not found in worksheet 'Users'. Therefore,
    I guess the misassignment happens because the users list is updated
    from a source other than loki?
        Status -- OK
  - update VA Bereinigung (Ist, Wer, Status) -- OK
     - update ZF Erstellen (Ist, Wer) -- OK
  - update ZF Prüfbericht (Ist, Wer, Status) -- OK
  - update ZF Freigabe (Ist, Wer, Status) -- OK
     - update GA Versand (Ist, Wer) -- OK
  - update GA erhalten von BL (Ist, Wer, Status) -- OK
  - update GA übergeben an UN (Ist, Wer, Status) -- OK
     
After change in web-interface

- update document code -- OK
- update title -- FAILED

- update VA Erstellen (Ist, Wer) -- OK
- update VA Stellungnahme (Ist, Wer, Status)
  Ist -- OK
Wer -- FAILED (is 'Abert Franz' should be 'Muster Hans')
  COMMENT: 'Muster Hans' is not found in worksheet 'Users'. Therefore,
  I guess the misassignment happens because the users list is updated
  from a source other than loki?
  
Status -- OK
- update VA Bereinigung (Ist, Wer, Status) -- OK

- update ZF Erstellen (Ist, Wer) -- OK
- update ZF Prüfbericht (Ist, Wer, Status) -- OK
- update ZF Freigabe (Ist, Wer, Status) -- OK

- update GA Versand (Ist, Wer) -- OK
- update GA erhalten von BL (Ist, Wer, Status) -- OK
- update GA übergeben an UN (Ist, Wer, Status) -- OK

Line 1153: Line 920:
  - update document code -- OK
  - update title (with Umlauts) -- OK
     - update VA Erstellen Soll -- OK
  - update VA Stellungnahme Status -- OK
  - update VA Stellungnahme Dauer -- OK
  - update VA Stellungnahme Soll -- OK
  - update VA Bereinigung Status -- OK
  - update VA Bereinigung Dauer -- OK
  - update VA Bereinigung Soll -- OK
     - update ZF Erstellen Dauer -- OK
  - update ZF Erstellen Soll -- OK
  - update ZF Prüfbericht Status -- OK
  - update ZF Prüfbericht Dauer -- OK
  - update ZF Prüfbericht Soll -- OK
  - update ZF Freigabe Status -- OK
  - update ZF Freigabe Dauer -- OK
  - update ZF Freigabe Soll -- OK
     - update GA erhalten von BL Status -- OK
  - update GA erhalten von BL Dauer -- OK
  - update GA übergeben an UN Status -- OK
  - update GA übergeben an UN Dauer -- OK
  - update GA übergeben an UN Soll -- OK
- update document code -- OK
- update title (with Umlauts) -- OK

- update VA Erstellen Soll -- OK
- update VA Stellungnahme Status -- OK
- update VA Stellungnahme Dauer -- OK
- update VA Stellungnahme Soll -- OK
- update VA Bereinigung Status -- OK
- update VA Bereinigung Dauer -- OK
- update VA Bereinigung Soll -- OK

- update ZF Erstellen Dauer -- OK
- update ZF Erstellen Soll -- OK
- update ZF Prüfbericht Status -- OK
- update ZF Prüfbericht Dauer -- OK
- update ZF Prüfbericht Soll -- OK
- update ZF Freigabe Status -- OK
- update ZF Freigabe Dauer -- OK
- update ZF Freigabe Soll -- OK

- update GA erhalten von BL Status -- OK
- update GA erhalten von BL Dauer -- OK
- update GA übergeben an UN Status -- OK
- update GA übergeben an UN Dauer -- OK
- update GA übergeben an UN Soll -- OK
Line 1182: Line 949:
  -- OK -- OK
Line 1186: Line 953:
  -- OK -- OK
Line 1190: Line 957:
  -- OK -- OK

Excel Integration - Testing Notes

Test against ...

  • requirements given in DrawMGT-AxpoExcelIntegration-15.pdf (Chapter 2)

  • client-side implementation in DrawMGT-AxpoExcelIntegration-15.pdf (Chapter 4)

  • use cases given in DrawMGT-AxpoExcelIntegration-15.pdf (Appendix A)

  • Test notes at ExcelIntegrationToDoList#Testing

All tests against DrawMGT-AxpoExcelIntegration-15.pdf are performed with ExcelIntegrationAxpoDemoNotes in mind!

Every tested feature is protocolled below.

SOLL-IST-WER combinations
-------------------------

The following tests show if expected results are met (i.e. if database
saves are correct), when Soll(AS), Ist(AT) and Wer(AU) are set/unset:

- no Soll(AS), Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL           |        2011-10-07  | 303                 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), no Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | 2011-09-10     |               NULL | 104                 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), Ist(AT), no Wer(AU): (no save) -- OK

- no Soll(AS), no Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL           |               NULL | 303                 |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), no Ist(AT), no Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+---------------------+--------------------+
  | 2011-09-10     |                NULL | NULL               |
  +----------------+--------------------+---------------------+
  -- OK
  
- no Soll(AS), Ist(AT), no Wer(AU): (no save) -- OK

- no Soll(AS), no Ist(AT), no Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+--------------------+---------------------+
  | NULL           | NULL               |                NULL |
  +----------------+--------------------+---------------------+
  -- OK
  
- Soll(AS), Ist(AT), Wer(AU):
  +----------------+--------------------+---------------------+
  | designPlanDate | designCompleteDate | designResponsibleId |
  +----------------+---------------------+--------------------+
  | 2011-09-10     | 2011-10-07          |                230 |
  +----------------+---------------------+--------------------+
  -- OK
  

IST / Status
------------

- if "Create New Document" with the following IST-status sensitive
  combinations, I get the following results after "Save Selected":

  - no Ist(AT), Wer(AU): -- OK
  - Ist(AT) set to [today,future,past], no Wer(AU): -- OK
  - Ist(AT) set to [today,future,past], Wer(AU): --OK
  
  - Ist(AY) set to [today,future,past], no Wer(AZ), no Status(BA):
    - alert is wrapped in XML -- FAILED
  - no Ist (AY), Wer (AZ), no Status(BA): -- OK
  - no Ist (AY), no Wer (AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
  - Ist(AY) set to [today,future,past], Wer(AZ), no Status(BA):
    - alert is wrapped in XML -- FAILED
  - no Ist (AY), Wer (AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
  - Ist(AY) set to [today,future,past], Wer(AZ), Status(BA):
    - alert is wrapped in XML -- FAILED
    
  - Ist(BE) set to [today,future,past], no Wer(BF), no Status(BG):
    - alert is wrapped in XML -- FAILED
  - no Ist (BE), Wer (BF), no Status(BG): -- OK
  - no Ist (BE), no Wer (BF), Status(BG): -- OK
  - Ist(BE) set to [today,future,past], Wer(BF), no Status(BG):
    - alert is wrapped in XML -- FAILED
  - no Ist (BE), Wer (BF), Status(BG): -- OK
  - Ist(BE) set to [today,future,past], Wer(BF), Status(BG):
    - alert is wrapped in XML -- FAILED
    
  - no Ist(BL), Wer(BM): -- OK
  - Ist(BL) set to [today,future,past], no Wer(BM): -- OK
  - Ist(BL) set to [today,future,past], Wer(BM): -- OK

  - Ist(BR) set to [today,future,past], no Wer(BS), no Status(BT):
    - alert is wrapped in XML -- FAILED
  - no Ist(BR), Wer(BS), no Status(BT): -- OK
  - no Ist(BR), no Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED
  - Ist(BR) set to [today,future,past], Wer(BS), no Status(BT):
    - alert is wrapped in XML -- FAILED
  - no Ist(BR), Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED
  - Ist(BR) set to [today,future,past], Wer(BS), Status(BT):
    - alert is wrapped in XML -- FAILED

  - Ist(BY) set to [today,future,past], no Wer(BZ), no Status(CA):
    - alert is wrapped in XML -- FAILED
  - no Ist (BY), Wer (BZ), no Status(CA): -- OK
  - no Ist (BY), no Wer (BZ), Status(CA): -- OK
  - Ist(BY) set to [today,future,past], Wer(BZ), no Status(CA):
    - alert is wrapped in XML -- FAILED
  - no Ist(BY), Wer (BZ), Status(CA): -- OK
  - Ist(BY) set to [today,future,past], Wer(BZ), Status(CA):
    - alert is wrapped in XML -- FAILED
  
  - no Ist(CF), Wer(CG): -- OK
  - Ist(CF) set to [today,future,past], no Wer(CG) or ...
  - Ist(CF) set to [today,future,past], Wer(CG)
    - if the document was successfully saved before, IST can be set to
      ANY valid date, I receive an error saying "Invalid Date"
      -- FAILED
    - if the document was not saved before, and if IST >
      today, I receive an error saying "keep your fingers crossed"
      -- FAILED
    - if the document was not saved before, if IST < today, I receive
      no error -- FAILED

  - Ist(CH) set to [today,future,past], no Wer(CI), no Status(CJ):
    - alert is wrapped in XML -- FAILED
  - no Ist (CH), Wer (CI), no Status(CJ): -- OK
  - no Ist (CH), no Wer (CI), Status(CJ): 
    - alert is wrapped in XML -- FAILED
  - Ist(CH) set to [today,future,past], Wer(CI), no Status(CJ):
    - alert is wrapped in XML -- FAILED
  - no Ist (CH), Wer (CI), Status(CJ):
    - alert is wrapped in XML -- FAILED
  - Ist(CH) set to [today,future,past], Wer(CI), Status(CJ): -- OK

  - Ist(CN) set to [today,future,past], no Wer(CO), no Status(CP):
    - alert is wrapped in XML -- FAILED
  - no Ist (CN), Wer (CO), no Status(CP): -- OK
  - no Ist (CN), no Wer (CO), Status(CP): -- OK
  - Ist(CN) set to [today,future,past], Wer(CO), no Status(CP):
    - alert is wrapped in XML -- FAILED
  - no Ist (CN), Wer (CO), Status(CP): -- OK
  - Ist(CN) set to [today,future,past], Wer(CO), Status(CP):
    - alert is wrapped in XML -- FAILED
  

Vorabzug Flag handling / RevC Revision Type menu handling
---------------------------------------------------------

onChange RecC Revision type behavior (CD):
- gut zur Ausführung: sets to keyRefCTypeId = 15 -- OK
- Freigegeben: sets to keyRefCTypeId = 13 -- OK

onChange Vorabzug behavior (AP):
- ja:
  - Vorabzug fields are locked -- FAILED
  - after save:
    - revBVorabzugFlag => 1 -- OK
    - menu static: -- FAILED
    - Vorabzug fields are locked -- FAILED
  - revision code changed: -- FAILED

- nein:
  - Vorabzug fields are unlocked -- OK
  - after save:
    - menu static: -- FAILED
    - revBVorabzugFlag => 0 -- OK
    - Vorabzug fields are locked -- FAILED
  - revision code changed: -- FAILED
  
COMMENT: When Vorabzug fields are 'locked', it's still possible to
enter data and select from select menues. Also, if I change the
Vorabzug flag, the revision code is not changed.


Create New Document
-------------------

'Create New Document' inserts after selected row:
- selected row = none: alert appears "Unable to create document in
  header area" -- OK
- selected row = contains document: new document is placed after last
  document row -- OK
  
- if "Create New Document" with title={any title}, Zugriff="E-[...]",
  Projektphase="1-[...]", Fachbereich="12.1-[...]",
  Objekt="101-[...]", Kontakt="111-[...]", Dokumenttyp="03-[...]",
  Laufnr.="0001", ∆0="24-12-11"; click "Save Selected".
  
    The following error is returned:

    <?xml version=\'1.0\' encoding=\'UTF-8\'?>
    <response type=\'Drawings\' key=\'drawingId\' id=\'\' ref=\'Doc\'>
    <error>Feld \'Dok. Nr.\' \'Objekt\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Kontakt\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Dokumenttyp\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' \'Laufnummer\' muss angegeben werden.</error>
    <error>Feld \'Dok. Nr.\' ist ung?ltig.</error>
    </response>
  
  - the alert is meaningless & wrapped in XML -- FAILED


When "Create New Document", it is not possible to complete all fields
for all revisions because publish files (Ausgabedatei) are required in
order to complete next fields and cannot be uploaded using Excel.
Therefore, the scenario below was not tested before:

- if "Create New Document" with title="Excel-Test-MySQL",
  Zugriff="I-[...]", Projektphase="4-[...]", Fachbereich="03-[...]",
  Objekt="000-[...]", Kontakt="105-[...]", Dokumenttyp="02-[...]",
  Laufnr.="0001", T0="24-12-11"; click "Save
  Selected". -- OK

Duplicate Selected
------------------

- when blank row selected -- OK
- when non-blank row selected -- OK


Check for Duplicates
--------------------

Correctly highlights found duplicates -- OK


Delta calculations
------------------

The rules are ...

Soll TGZA (CM) = T0 (CS) - ∆1 (CR)
Soll TF (BX) = Soll TGZA (CM) - ∆2 (CL)
PrüfSoll (BQ) = Soll TF (BX) - ∆3 (BW)
Soll TZF (BK) = PrüfSoll (BQ) - ∆4 (BO)
BrSoll (BD) = Soll TZF (BK) - ∆5 (BJ)
StnSoll (AX) = BrSoll (BD) - ∆6 (BC)
Soll TV (AS) = StnSoll (AX) - ∆7 (AV)

... or the other way around ...

Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
StnSoll (AX) + ∆6 (BC) = BrSoll (BD)
BrSoll (BD) + ∆5 (BJ) = Soll TZF (BK)
Soll TZF (BK) + ∆4 (BO) = PrüfSoll (BQ)
PrüfSoll (BQ) + ∆3 (BW) = Soll TF (BX)
Soll TF (BX) + ∆2 (CL) = Soll TGZA (CM)
Soll TGZA (CM) + ∆1 (CR) = T0 (CS)

... simplyfied ...

Soll TV (AS) + ∆7 (AV) + ∆6 (BC)
+ ∆5 (BJ) + ∆4 (BO) + ∆3 (BW) + ∆2 (CL)
+ ∆1 (CR) = T0 (CS)

Therefore ...

If I set ∆0 to a date in the future, and enter expression
"=AS23+(AV23+BC23+BJ23+BO23+BW23+CL23+CR23)" in an Excel cell [adding
the sum of deltas except ∆0 to Soll TV (AS23)], and change random
deltas except for ∆0, the result always equals to ∆0 (CS23) -- OK

Also, I added cells right below Soll date cells to proof, that ...

Soll TV (AS) + ∆7 (AV) = StnSoll (AX)
[...]

... and changed random deltas again, and compared these cells with all
the soll dates. There are no differences -- OK


Umlauts
-------

Umlaut characters created from the Web GUI in text fields (e.g. titles
and other text fields), and then displayed in the Web GUI. -- OK

Umlaut characters created in Excel in text fields, and then displayed
in Excel. -- OK

New document created in Excel with umlauts in titles (1-4), and then
saved to server. Display in web-interface -- OK

New document in web-interface (title "Excel-Test-Umlauts-From-Server
(äöü)") with all required versions for VA, ZF, FR created and saved;
Afterwards, "Search Documents" in Excel with Rapport "Bau", Bereich
"LC1" and Titel "Excel-Test-Umlaut": -- OK

HTTP response 200 Response text:

<?xml version='1.0' encoding='UTF-8'?> <record id='26696'
type='Revisions' key='revisionId'> [...]
<title0>Excel-Test-Umlauts-From-Server (äöü)</title0> [...] </record>

Update existing but changed document with updated titles (v2/ZF
revision only) in Excel with "Refresh Selected": -- OK


Search Documents
----------------

Dok. Nr.:
- with valid revision code: -- OK
- with invalid revision code (e.g. 'blabla', '1df3'): -- FAILED

Bereich: 
- with valid selection: -- OK
- with invalid data (e.g. 'blabla', '1df3'): -- FAILED

QUESTION: Can I test other 'Bereiche' than 'LC1'?

Zugriff, Projektphase, Fachbereich, Objekt, Kontakt, Dokumenttyp,
Gruppe, Archiv, Lage:
- with valid selection: -- OK
- with invalid data (e.g. 'blabla', '1df3'): -- FAILED

COMMENT: Entering invalid data also leads to funny results being
placed in the worksheet.

AMENDMENT: In selects, it should not be possible to enter custom data.

Laufnummer (von - bis):
- with valid data: -- OK
- with invalid data (e.g. 'abcde', '1df3'): -- OK

Place results in new worksheet -- OK

Titel -- OK

Ext. Ref.:
- with valid value: -- OK
- with invalid value (e.g. 'abcde', '1df3'): -- FAILED

COMMENT: If a document has 'Ext. Ref.' = 'abcde', and I search for
'Ext. Ref.' = 'abcde', the search returns the desired result.

QUESTION: What is a valid value for 'Ext. Ref.'?

Versionsdatum (von - bis) -- ???
QUESTION: How can I test this?

'Search' button: -- OK

AMENDMENT: If nothing is entered, and 'Search' is clicked, a confusing
alert message appears: 'Eingabe Fehler / Test Case: Feld
erforderlich'.


Basic Tests
-----------

1. Check reading and updating of all fields:
--------------------------------------------

  From Excel to server:
  - Bereich (static) -- ???
  - Gruppe (ignored?) -- FAILED
  - Archiv -- OK
  - Berechtigung Server (Z) -- OK 
  - Klassifizierung Projektphase (Ph) -- OK
  - Klassifizierung Fachbereich (FB) -- OK
  - Objekt (O) -- OK
  - Kontakt (K) -- OK
  - Dokumenttyp (DT) -- OK
    QUESTION: Dokumenttyp 03.1/03.2 etc that exist in Excel are not
    existing in my system yet.
  - Laufnummer -- OK
  - Dokumenttitel 1 -- OK
  - Dokumenttitel 2 -- OK
  - Dokumenttitel 3 -- OK
  - Dokumenttitel 4 -- OK
  - Massstab -- FAILED
  - Format -- FAILED
  - Version (static) -- OK

  Vorabzug:
  - Erstellen Soll (static) -- OK
  - Erstellen Ist -- OK
  - Erstellen Wer -- OK
  - Stellungnahme erstellt Status -- OK
  - Stellungnahme erstellt Soll (static) -- OK
  - Stellungnahme erstellt Ist -- OK
  - Stellungnahme erstellt Wer -- OK
  - bereinigt Status -- OK
  - bereinigt Soll -- OK
  - bereinigt Ist -- OK
  - bereinigt Wer -- OK
  
  zur Freigabe:
  - Erstellen Soll (static) -- OK
  - Erstellen Ist -- OK
  - Erstellen Wer -- OK
  - Prüfbericht erstellt Status -- OK
  - Prüfbericht erstellt Soll (static) -- OK
  - Prüfbericht erstellt Ist -- OK
  - Prüfbericht erstellt Wer -- OK
  - Freigabe Status -- OK
  - Freigabe Soll (static) -- OK
  - Freigabe Ist -- OK
  - Freigabe Wer -- OK
  
  Gut zur Ausführung:
  - versendet an BL Ist -- OK
  - versendet an BL Wer -- OK
  - erhalten von BL Status -- OK
  - erhalten von BL Ist -- OK
  - erhalten von BL Wer -- OK
  - übergeben an UN Status -- OK
  - übergeben an UN Soll (static) -- OK
  - übergeben an UN Ist -- OK
  - übergeben an UN Wer -- OK

***

High-Priority Items
-------------------

Internals
---------
1. CRITICAL Implement cell locking helper functions that make cells
read-only/non-read-only
- Implementation initial implementation that just sets field's
  background color to indicate that the field is locked. -- OK
  
2. TEST Fix handling/display of progress messages:
- Convert display of Record count to Revision count in search -- 
  (check lower right msg in Excel -- not critical now)
- All (most?) menu items should clear display area when operation
  completes -- OK
  
7. Fix checkDuplicates to check both the drawingCode and drawingId
fields -- OK
  - Set cell note and highlighting when duplicates found -- OK    

8. Review/improve cell note set/clear functions: isCellDifference and
setCellDifferenceComment -- FAILED
  - Fix bug when comparing date fields -- FAILED
  - Do not set cell comments in key set area -- (to be tested)
  
  (check title, dates for changes after 'Refresh Selected')
  make sure, that hidden red fields NEVER have cell comment
  
  Note: Date fields should only have a comment after a 'Refresh
  Selected', if an update on the server side changed dates.
  
  If T0 Arbeits-BP (CS) is set, the calculated SOLL dates are not
  saved on the server -- FAILED
  
  If changed in web-interface and 'Refresh Selected' in Excel:
  - VA Erstellen: Soll, Ist, Wer
    - Ist -- OK
    - Wer -- OK
  - VA Stellungnahme
    - Ist -- OK
    - Wer -- OK
  - VA Bereinigung
    - Ist -- OK
    - Wer -- OK

  
Search
------

7. Implement checking for duplicate worksheet names -- OK 

  After manually creating new worksheet named 'Bau-23', I 'Search
  Documents' with 'Place results in new worksheet', and received a new
  worksheet named 'Bau-24' -- OK
      
Edit
----

3. CRITICAL (AH) Implement Vorabzug ja/nein flag
- Lock and grey-out all Vorabzug fields if Vorabzug flag set to 0 --
  test later
- Disable plan date formulas when Vorabzug set to false -- test later

5. TEST GA/Freigegeben menu:
- Sets the RevC revisionTypeId -- OK
  (CA-CF select -> show; should give you RevC value)
  
- Menu with two choices: freigegeben (13) and gut zur Ausführung (15)
  -- OK

COMMENT: revisionTypeId changes in cell CE, when switching from
'freigegeben' to 'gut zur Ausführung' and vice-versa, but changes
are not saved on the server after 'Save Selected'. -- FAILED


Validation
----------

1. TEST Client-side field validation
- Implement Ist field validation.-- OK
- Formulas generated from Perl script. -- (to be tested)
  - See axpo-integration/data/genValidation.pl -- (to be tested)
  
  MEANING: Test Analog workflow wizard validation (except Soll)!
    
  
Save/Update
-----------

1. TEST Save handling of Vorabzug menu and GA/Freigegeben menus
- Vorabzug flag  -- ?
  (AP, if already "ja", it should be locked. Check specs)
- GA/Freigegeben menu  -- ?
  (After it was set, it should be locked.)

  NOT YET IMPLEMENTED: Basically, after save, both menues are to be
  locked.
  
  MEANING: Both menues determine document codes. Check specs 5.2.1
  Axpo Revision Sequence, 5.2.2 Sub-Revision Coding System, and test
  against them.

2. TEST Implement field locking after save. Fields:
- Bereich menu -- OK
- Vorabzug flag -- OK
- GA/Freigegeben menu (RevC type) -- OK
    
3. Generate client-side error on update/insert when drawing code not
complete -- FAILED

- Sometimes, client-side errors still are wrapped in XML tags

- After "New document" with title only set to "Excel-Test-2", I
  correctly receive an error ...

  saveRow: Internal error: Invalid XML Response. HTTP response: 400
  Response text: <?xml version='1.0' encoding='UTF-8'?>
  <response type='Drawings' key='drawingId' id='' ref='Doc'>
  <error>Feld 'Dok. Nr.'-'Laufnummer' ist ung?ltig.</error>
  <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
  </response>
  64
  
  -- FAILED
  
  AMENDMENT: The error should not be wrapped in XML tags.

- After "New document" with title 'Excel-Test-2', Laufnummer '0001'
  I correctly receive an error -- OK

- After "New document" with title '', Laufnummer '0001'
  I correctly receive an error -- OK
  
- After "New document" with title 'Excel-Test-4', Berechtigung Server
  (Z) "E-Extern", Klassifizierung Projektphase (Ph) "0 -
  phasenunabhängig", Klassifizierung Fachbereich (FB) "01.3 -
  Management - Versicherung", Objekt (O) "101 - Bestehende Anlagen -
  Stauanlage Limmernsee", Kontakt (K) "102 - Unternehmer und
  Lieferanten - ALSTOM Hydro Schweiz AG", Dokumenttyp (DT) "03.1 -
  Protokoll - Sitzungsprotokoll" and Laufnummer "0001", I correctly
  receive an error, but the error is rather confusing ...

  saveRow: Internal error: Invalid XML Response. HTTP response: 400
  Response text: <?xml version='1.0' encoding='UTF-8'?>
  <response type='Drawings' key='drawingId' id='' ref='Doc'>
  <error>Feld 'Dok. Nr.' 'Objekt' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Kontakt' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Dokumenttyp' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' 'Laufnummer' muss angegeben werden.</error>
  <error>Feld 'Dok. Nr.' ist ung?ltig.</error>
  </response>
  64
  
  -- FAILED

  AMENDMENT: The error should not be wrapped in XML tags.
  
4. Implement checking of record serial numbers on update -- FAILED

Changed title of document in Excel (without saving), then changed
title of same document (type 'v2/ZF/zur Freigabe') in web-interface
with saving. 'Save Selected' in Excel shows expected error message:

  Update/Save error: Record: zur Freigabe
  • BOBaseUpdate (Revisions): simultaneous update (update counter
    mismatch:1 != 0)
    
-- OK

- If you change title, B4 should increment value on the row of actual
  document. -- FAILED
      
- updateCount mismatch: update doc in web-interface, then try to save
  same document in excel, should give error -- OK


5. Save all/selected should set record update counts -- FAILED

- Test that a second save results in state with correct record update
  counts -- (to be tested)
      
QUESTION: Under what condition should keyDocUpdateCountDoc (Excel
cell:B{n}) increment its value?

6. Duplicate row detection before:
- search / test cases -- ?
- save all / save selected -- ?
- refresh all / refresh selected -- ?

MEANING: Check specs for it and test against.

TODO Attributes
----------

2. Get feedback from JS re: recent changes to m_attributeRowCount
global variable -- ?
- Make sure that handling of m_attributeRowCount global variable is OK
  -- ?

MEANING: Test 'Refresh Attributes' get all metadata from server.
  

Medium-Priority Items
---------------------

6. TEST Performance:
- Disable screen update during record list processing -- ?
- Investigate to see if bubble sort is really needed. Debug prints? --
  ?
  
MEANING: create many records. User Search and measure how long it
takes. 

13. Implement new columns to display record status and DrawMGT id
values (design needed) -- (to be tested)
MEANING: Cell R, if gelb = change, pink = error, white = ok

14. Design for record status fields
- May not be needed if the above highlighting is implemented -- ?

MEANING: Same as above.


Excel Start-Up
--------------

- User can start Excel with an empty planning spreadsheet or a workbook
containing already-defined document and revision metadata -- OK

- To access metadata in the DrawMGT server, the user must login, using a
custom Excel menu item, using their normal DrawMGT login name and
password. -- OK

- After logging in, spreadsheet data can be downloaded and saved in the
DrawMGT server -- OK

- If the user does not login, he is still able to work off-line, e.g.
perform operations that do not require access to the DrawMGT server
-- OK


Downloading Metadata
--------------------

- The user can download metadata from the DrawMGT server using a
  search operation -- OK
  
- It is possible to search by: document title, code and classification
  attributes -- OK
  
- In the search screen, the drop down menus of classification
  attributes can be shortened by eliminating attributes not relevant
  to the planning process. -- (ignore for now)
  
- Search results are processed as followed: 
  - Search results are merged with an existing worksheet. Existing
    records in the worksheet are updated with the latest server data,
    new records are added to the worksheet -- OK
    
- The DrawMGT server checks the user’s roles and only downloads
  metadata that the user has rights to view -- FAILED

  COMMENT: If a user has Dok-beschr.Viewer role only and it is
  searched for a document that is not completed yet, the document gets
  still placed in Excel.
  
  AMENDMENT: Even if Dok-beschr.Viewer allows to see completed
  documents, cells still can be changed for a completed document. In
  my personal opinion, it would be less confusing to have the cells
  locked in that case.
  
  QUESTION: If a user has Dok-beschr.Viewer, shouldn't he be
  allowed to have a new document being placed in the worksheet
  after he clicked 'Create New Document' ?
  
  ANSWER: User should not be able to do that.
  
- A warning is given if a search will return a large number of
  records, and allow the user to cancel the search -- OK


Creating New Metadata
---------------------

- New metadata can be created in the planning workbook using Excel’s
  normal copy/paste and fill operations -- OK
  
- Metadata for new documents and revisions can be saved to the DrawMGT
  server -- OK
  
- The Excel planning spreadsheet cannot be used to delete document and
  revision records from the DrawMGT server -- OK


Synchronizing Spreadsheet Metadata
----------------------------------

- The document rows in the planning worksheet can be synchronized with
  latest metadata from DrawMGT server -- OK
  
- The planning spreadsheet is able to detect conflicting updates and,
  the event of a conflict, reports the before/after field values in
  the worksheet to the user for possible manual inspection and
  correction -- 
  
  AMENDMENT: The error message 'Sie sind für diese Transaktion nicht
  authorisiert.' shown inside an XML wrapper
  
- Unsaved data, including new records that have never been saved, are
  highlighted to alert the user -- OK
  
  The highlight on column R{n} says:
  
  - "Row changed", when an existing document was changed but not yet
    saved -- OK
    
  - "Not saved", when a new document was changed but not yet saved
    -- OK


Document and Revision Workflows
-------------------------------

- Management of workflow steps associated with the Vorabzug, zur
  Freigabe and Gut zur Ausführung / Freigegeben workflows. Includes
  person responsible, planned/actual complete dates and status (for
  workflow steps with a status field):
  - Erstellen --OK
  - Stellungnahme and Prüfberichte -- OK
  - Freigabe -- OK
  
- Display of appropriate workflow step names in the DrawMGT
  web-interface (e.g. ‘Bereinigung’ instead of ‘Freigabe’ for Vorabzug
  revisions) -- OK
  
  COMMENT: 'bereinigt' is shown instead of 'Bereinigung'.
  
- Calculate revision workflow step plan-dates using standard date
  calculation formulas -- OK

- Override the standard workflow date formulas on an individual
  document and revision basis -- OK
      
- The DrawMGT server performs validation before saving data 
  - The user’s roles are checked and enforced -- (to be tested)
  - Data values are validated -- OK


Reports
-------

- Reports Dokumentlieferungplan ('Create Report 02F1') and
  Resourcenplan ('Create Report 02F1') can be generated from the
  planning worksheet -- (to be tested)


Saving Metadata
---------------

- The user can save one or more selected rows -- (to be tested)

- The save operation checks each record for conflicting updates on the
  DrawMGT server -- (to be tested)
  
- All records where a conflict (or error) is detected are highlighted.
  Both the local and server field values are available, so that the
  user can manually correct the record. -- (to be tested)
  
- All records that can be saved without conflicts are saved and
  de-highlighted -- (to be tested)


Exiting Excel
-------------

- If there are any unsaved records and the user attempts to exit
  Excel, a warning is displayed and the user is given the option to
  abort the exit -- FAILED
  
  COMMENT: If "Create New Document" witout saving or I change an
  existing document without saving, and exit Excel, I only receive
  Excel's Standard Exit Alert: "Do you want to save the changes you
  made to 'LinthalDrawmgt-Planning-1.xlsm"
  

Document and Revision Process Operations
----------------------------------------

- Ability to create sub-revisions in order to capture the history of
  rejected and internally reviewed revisions. -- (to be tested)
  
- Ability to link documents to other documents, including: 
  - Linking a document to a document, without specifying which
    revision -- (to be tested)
    
  - Linking a document to a specific revision or the latest revision
    -- (to be tested)

- New document types: 
  - Prüfbericht -- OK
  - Stellungnahme -- OK

- Ability to set a ‘revision date’ to all revisions of a document,
  independent of the dates associated with the revision’s workflow --
  (to be tested)
  
- Removal of planned titles from document records (requires that every
  document have revision defined, which will contain the title) -- (to
  be tested)
  
- Ability to assign a serial number and prefix (e.g. ‘PBR-LA2-0001’)
  to a document as a classification attribute. The serial numbers
  should assigned sequentially and be unique for a given prefix. -- OK


Login, Start-Up and Exit
------------------------

- User can provide 'Benutzername', 'Passwort', select from a list of
  servers, and log-in -- OK

  Start-Up Procedure
  ------------------
  
  If the user successfully logs into the DrawMGT server then a
  procedure is initiated which downloads the following into the
  spreadsheet:
  
  1. The latest VBA code for the spreadsheet -- (to be tested)
  
  2. Attribute lists -- (to be tested)
  
  3. User lists -- FAILED
     COMMENT: When I set user 'Hans Muster' on loki test-server, and
     'Refresh Selected' in Excel, the user displayed is 'Albert
     Franz'.
     
  4. User role lists -- (to be tested)


Create New Document
-------------------

- click menu ribbon 'Create New Document', cells are filled with
  template data -- OK
  
AMENDMENTS:
- Dokumenttitel 2 should be 'Titel-2'
- it should not be possible to enter chars in Lauf-/ Teilnummer cells


Refresh Selected
----------------

After change in web-interface

- update document code  -- OK
- update title -- FAILED

- update VA Erstellen (Ist, Wer) -- OK
- update VA Stellungnahme (Ist, Wer, Status)
  Ist -- OK
  Wer -- FAILED (is 'Abert Franz' should be 'Muster Hans')
  COMMENT: 'Muster Hans' is not found in worksheet 'Users'. Therefore,
  I guess the misassignment happens because the users list is updated
  from a source other than loki?
  
  Status -- OK
- update VA Bereinigung (Ist, Wer, Status) -- OK

- update ZF Erstellen (Ist, Wer) -- OK
- update ZF Prüfbericht (Ist, Wer, Status) -- OK
- update ZF Freigabe (Ist, Wer, Status) -- OK

- update GA Versand (Ist, Wer) -- OK
- update GA erhalten von BL (Ist, Wer, Status) -- OK
- update GA übergeben an UN (Ist, Wer, Status) -- OK


Save Selected
-------------

- update document code -- OK
- update title (with Umlauts) -- OK

- update VA Erstellen Soll -- OK
- update VA Stellungnahme Status -- OK
- update VA Stellungnahme Dauer -- OK
- update VA Stellungnahme Soll -- OK
- update VA Bereinigung Status -- OK
- update VA Bereinigung Dauer -- OK
- update VA Bereinigung Soll -- OK

- update ZF Erstellen Dauer -- OK
- update ZF Erstellen Soll -- OK
- update ZF Prüfbericht Status -- OK
- update ZF Prüfbericht Dauer -- OK
- update ZF Prüfbericht Soll -- OK
- update ZF Freigabe Status -- OK
- update ZF Freigabe Dauer -- OK
- update ZF Freigabe Soll -- OK

- update GA erhalten von BL Status -- OK
- update GA erhalten von BL Dauer -- OK
- update GA übergeben an UN Status -- OK
- update GA übergeben an UN Dauer -- OK
- update GA übergeben an UN Soll -- OK


Check for Duplicates
--------------------
-- OK

Duplicate Selected
------------------
-- OK

Get Next Sequence
-----------------
-- OK

ExcelIntegrationTesting (last edited 2011-10-28 19:07:59 by 77-58-103-157)

Copyright 2008-2014, SoftXS GmbH, Switzerland