.. /* * This file is part of the SavaPage project . * Copyright (c) 2026 Datraverse B.V. * Author: Rijk Ravestein. * * SPDX-FileCopyrightText: (c) 2020 Datraverse B.V. * SPDX-License-Identifier: CC-BY-SA-4.0 * * For more information, please contact Datraverse B.V. at this * address: info@datraverse.com */ .. _app-proxyprint-scenarios-delegated: |DELEGATEDPRINT| Scenarios -------------------------- .. contents:: |RST_TABLE_OF_CONTENTS| :depth: 2 :local: The scenarios in this section elaborate situations where users act as :ref:`Print Job Delegate ` for other users (Delegators) or entities (:ref:`Shared Accounts `). .. note:: A Personal Job Ticket Print is handled as Delegated Print, where the Job Ticket Creator has role Delegate and Delegator at the same time. .. _app-proxyprint-scenario-delegated-standard: |DELEGATEDPRINT| - (Non) Secure & Job Ticket Scenarios ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: |DELEGATEDPRINT| - (Non) Secure & Job Ticket Scenarios :width: 100% :header-rows: 0 * - **User Story** - - As a **Delegate**, I can print for other users (delegators) and entities, so that costs are charged to individual delegators, delegator groups and shared accounts. |br| |br| - As a **Print Job Creator**, I can act as **Delegate** for another entity, so that costs are charged to a shared account. |br| |br| - As a **Job Ticket Creator**, I can create a |PERSONALPRINT|, and act as **Delegate** and Delegator at the same time. |br| |br| - As a **Job Ticket Operator**, I can release or cancel the Job Ticket. |br| |br| - As an **Operator**, I can cancel a pending Print Job in CUPS. * - **Preconditions** - - :ref:`Delegated Print ` is *enabled*. - |DELEGATEDPRINT| with :ref:`PaperCut ` is *disabled*. - Job is printed as *Job Ticket*, or in *Non-secure* or *Authenticated* (Hold or Direct) Print Mode. * - **Process** - 1. **Delegate** creates |DELEGATEDPRINT| Job. |br| |br| 2. **Delegate** prints the job. * - **Scenario 1** - **Non-secure** Print |br| |br| *Given* the Delegate printed to a non-secure |PROXYPRINTER|, *Then*: |br| |br| - The job is send to the printer. |br| - Print-out document for Delegate is created. - SavaPage Account Transactions are created and linked. |br| - Transactions are for personal delegators, delegator groups, and shared accounts involved. - Printing costs are pro-rata divided over the Account Transactions. - Transactions are displayed as Printer Usage with the pro-rata amount. - Transactions Summary with cost data is displayed with the Print-out document. - The actual print status from “Pending”, “Processing” (“Held”, “Stopped”) to end state “Completed”, “Canceled” or “Aborted” is displayed in the Print-out document and each transaction involved. * - **Scenario 2** - **Non-secure** Print Canceled or Aborted |br| |br| *Given* the Delegate printed to a non-secure |PROXYPRINTER|, *And* the print job is canceled or aborted by an Operator in CUPS, *Then*: |br| |br| - Print status “Canceled” or “Aborted” is displayed in the Print-out document and each transaction involved. |br| |br| - A Reverse button is available for the :ref:`Print-out document ` in the Admin Web App for administrators with :ref:`Editor permission for Accounts ` to reverse print counters and cost transactions as created in “Scenario 1”. * - **Scenario 3** - **Authenticated** Print Release |br| |br| *Given* the Delegate printed to a Hold or Direct Mode |PROXYPRINTER|, *And* released the job by NFC Authentication, *Then*: |br| |br| - The Print-out document is created as in “Scenario 1”. * - **Scenario 4** - **Job Ticket** Released |br| |br| *Given* the Delegate printed a Job Ticket, *And* the ticket is released by a Job Ticket Operator, *Then*: |br| |br| - The Print-out document is created as in “Scenario 1”, using *Job Ticket Cost* as printing cost. * - **Scenario 5** - **Job Ticket** Canceled |br| |br| *Given* the Delegate printed a Job Ticket, *And* the ticket is canceled by the Delegate or an Operator (in SavaPage or CUPS), *Then*: |br| |br| - The Job Ticket is just removed. * - References - - :ref:`Delegated Print ` - :ref:`Proxy Print Authentication ` - :ref:`Job Ticket Print ` .. _app-proxyprint-scenario-delegated-jobticket-papercut: |DELEGATEDPRINT| - Job Ticket - PaperCut - Scenario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: |DELEGATEDPRINT| - Job Ticket - PaperCut Scenario :width: 100% :header-rows: 0 * - **User Story** - - As a **Delegate**, I can create a SavaPage Job Ticket for other users (delegators) and entities, so that costs are charged to individual delegators, delegator groups and entities in PaperCut. |br| |br| - As a Job Ticket Creator, I can create a |PERSONALPRINT|, and act as **Delegate** and Delegator at the same time. |br| |br| - As a **Job Ticket Operator**, I can release or cancel the Job Ticket. |br| |br| - As an **Operator**, I can release or cancel a pending Print Job in PaperCut or CUPS. * - **Preconditions** - - :ref:`PaperCut Integration ` is *enabled*. - :ref:`Delegated Print with PaperCut ` is *enabled*. *Charging costs to PaperCut entities is unconditional. Balance and overdraft preconditions are not checked for restricted PaperCut accounts. This can result in an overdraft beyond what is allowed by PaperCut printing rules.* |br| |br| * - **Process** - 1. **Delegate** creates |DELEGATEDPRINT| Job. |br| |br| 2. **Delegate** prints job as *Job Ticket*. |br| |br| 3. **Job Ticket Operator** releases the ticket to a PaperCut managed printer. |br| |br| 4. Print-out document for Delegate is created with status **Pending (external)**. |br| |br| Shadow SavaPage Account Transactions are created and linked. - Transactions are for personal delegators, delegator groups, and shared accounts involved. - Transactions act as template for transactions created in PaperCut after the print is completed. - Transactions are displayed as Printer Usage with zero amount and status **Pending (external)**. - Transactions Summary without cost data is displayed with the Print-out document. 5. PaperCut print status is **monitored** till end state is reached. |br| - Status is monitored for a maximum number of minutes, after which the Print-out document gets status **Error**, and the ticket can be closed. See :ref:`PaperCut Print Log Monitoring `. * - **Scenario 1** - Print **Completed** |br| |br| *Given* the printer is a PaperCut Hold/Release queue *And* the **Operator** Released the job (in PaperCut), *Or* the job was printed directly, *Then*: |br| |br| - Print-out document gets status **Completed**. |br| |br| - *SavaPage Job Ticket Cost* is pro-rata divided over the Shadow SavaPage Account Transactions. |br| - Transactions are displayed as Printer Usage with the pro-rata amount and status **Completed**. - Transactions Summary *with* cost data is now displayed with the Print-out document. - PaperCut Account Transactions are created according to the Shadow Accounts template. * - **Scenario 2** - Print **Canceled** or **Timed out** |br| |br| *Given* the printer is a PaperCut Hold/Release queue *And* the **Operator** Canceled the job (in PaperCut or CUPS) or the job Expired (in PaperCut), *Then*: |br| |br| - Print-out document gets status **Canceled**. - Transactions *continue* to be displayed as Printer Usage with zero amount but have status **Canceled**. - Transactions Summary without cost data *continues* to be displayed at the Print-in document. * - References - - :ref:`Delegated Print ` - :ref:`Job Ticket Print ` - :ref:`Delegated Print to PaperCut ` .. _app-proxyprint-scenario-delegated-papercut: |DELEGATEDPRINT| - PaperCut Scenario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: |DELEGATEDPRINT| - PaperCut Scenario :width: 100% :header-rows: 0 * - **User Story** - - As a **Delegate**, I can print for other users (delegators) and entities, so that costs are charged to individual delegators, delegator groups and entities in PaperCut. |br| |br| - As a Print Job Creator, I can act as **Delegate** for another entity, so that costs are charged to this entity in PaperCut. |br| |br| - As a Print Job Creator, I can create a |PERSONALPRINT|, and act as **Delegate** and Delegator at the same time. |br| |br| - As an **Operator**, I can release or cancel a pending Print Job in PaperCut or CUPS. * - **Preconditions** - - :ref:`PaperCut Integration ` is *enabled*. - :ref:`Delegated Print with PaperCut ` is *enabled*. - |PROXYPRINTER| used for printing is managed by PaperCut. - |PROXYPRINTER| used for printing is *non-secure*. - If Hold/Release printing is required it must be handled in PaperCut. * - **Process** - 1. **Delegate** creates |DELEGATEDPRINT| Job. |br| |br| 2. **Delegate** prints job to PaperCut Managed printer. |br| |br| 3. Print-out document for Delegate is created with status **Pending (external)** |br| - Shadow SavaPage Account Transactions are created and linked. |br| - Transactions are for personal delegators, delegator groups and entities involved. - Transactions act as template for transactions created in PaperCut after the print is completed. - Transactions are displayed as Printer Usage with zero amount and status **Pending (external)**. - Transactions Summary without cost data is displayed with the Print-out document. 4. PaperCut print status is **monitored** till end state is reached. |br| - Status is monitored for a maximum number ofminutes, after which the Print-out document gets status **Error**, and the ticket can be closed. See :ref:`PaperCut Print Log Monitoring `. * - **Scenario 1** - Print **Completed** |br| |br| *Given* the printer is a PaperCut Hold/Release queue *And* the **Operator** Released the job (in PaperCut), *Or* the job was printed directly, *Then*: |br| |br| - Print-out document gets status **Completed**. |br| |br| - *PaperCut Printing Cost* is pro-rata divided over the Shadow SavaPage Account Transactions. |br| - Transactions are displayed as Printer Usage with the pro-rata amount and status **Completed**. - Transactions Summary *with* cost data is now displayed with the Print-out document. - PaperCut Account Transactions are created according to the Shadow Accounts template. * - **Scenario 2** - Print is **Canceled** or **Timed out** |br| |br| *Given* the printer is a PaperCut Hold/Release queue *And* the **Operator** Canceled the job (in PaperCut or CUPS) or the job Expired (in PaperCut) , *Then*: |br| |br| - Print-out document gets status **Canceled**. - Transactions *continue* to be displayed as Printer Usage with zero amount but have status **Canceled**. - Transactions Summary without cost data *continues* to be displayed at the Print-in document. * - References - - :ref:`Delegated Print ` - :ref:`Delegated Print to PaperCut `