1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 
<?php

/* --------------------------------------------------------------
   InvoiceListGeneratorInterface.inc.php 2016-10-06
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2016 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

/**
 * Interface InvoiceListGeneratorInterface
 *
 * @category   System
 * @package    Invoice
 * @subpackage Interfaces
 */
interface InvoiceListGeneratorInterface
{
    /**
     * Returns an invoice list item collection by the given conditions.
     * The other arguments helps to control fetched data.
     *
     * @param array           $conditions (Optional) Conditions for tht where clause.
     * @param IntType|null    $startIndex (Optional) Start index for the limit clause.
     * @param IntType|null    $maxCount   (Optional) Max count for the limit clause.
     * @param StringType|null $orderBy    (Optional) Sort order of fetched data.
     *
     * @return InvoiceListItemCollection
     */
    public function getInvoiceListByConditions(array $conditions = [],
                                               IntType $startIndex = null,
                                               IntType $maxCount = null,
                                               StringType $orderBy = null);
    
    
    /**
     * Filter invoice list items by the provided parameters.
     *
     * The following slug names need to be used:
     *
     *   - invoiceNumber => invoices.invoice_number
     *   - invoiceDate => invoices.invoice_date
     *   - sum => invoices.total_sum
     *   - customer => invoices.billing_firstname invoices.billing_lastname
     *   - group => invoices.customer_status_name
     *   - countryIsoCode => invoices.billing_country_iso_code_2
     *   - orderNumber => invoices.order_id
     *   - orderDate => invoices.order_date_purchased
     *   - paymentMethod => invoices.payment_class
     *   - status => orders_status.orders_status_name
     *
     * @param array           $filterParameters Contains the column slug-names and their values.
     * @param IntType|null    $startIndex       The start index of the wanted array to be returned (default = null).
     * @param IntType|null    $maxCount         Maximum amount of items which should be returned (default = null).
     * @param StringType|null $orderBy          A string which defines how the items should be ordered (default = null).
     *
     * @return InvoiceListItemCollection
     *
     * @throws BadMethodCallException
     * @throws InvalidArgumentException
     */
    public function filterInvoiceList(array $filterParameters,
                                      IntType $startIndex = null,
                                      IntType $maxCount = null,
                                      StringType $orderBy = null);
    
    
    /**
     * Get the filtered invoice count.
     *
     * This number is useful for pagination functionality where the app needs to know the number of the filtered rows.
     *
     * @param array $filterParameters
     *
     * @return int
     *
     * @throws BadMethodCallException
     */
    public function filterInvoiceListCount(array $filterParameters);
}