openapi: 3.1.0
info:
  title: DealPOS API
  description: >-
    ## Welcome Developer


    This page lists the reference documentation for DealPOS APIs. For guides and
    tutorials.
  contact:
    name: Customer Support
    url: https://www.dealpos.com
    email: info@dealpos.com
  license:
    name: ''
  version: 3.1.0
servers:
  - url: https://{subdomain}/api/v3
    description: Production Server
    variables:
      subdomain:
        default: subdomain.dealpos.net
        description: Your DealPOS Subdomain
security:
  - OAuth2_clientCredentials: []
tags:
  - name: ''
    description: description
  - name: Token
    description: Operations related to authentication tokens
  - name: Category
    description: Operations related to category, including create, get, etc
  - name: Product
    description: Operations related to product, including create, get, etc
  - name: Variant
    description: Operations related to variant, including create, get, etc
  - name: Serial
    description: Operation related to Serial product type
  - name: Estimate
    description: Operations related to estimate, including create, get, etc
  - name: Sales Order
    description: Operations related to sales order, including create, get, etc
  - name: Invoice
    description: Operations related to invoice, including create, get, etc
  - name: Shift
    description: Operation related to shift, including create, get, etc
  - name: Report
    description: Operations related to report page, including create, get, etc
  - name: Customer
    description: Operations related to customer data, including create, get, etc
  - name: Comment
    description: >-
      Operations related to comment (Contact Feedback), including create, get,
      etc
  - name: Supplier
    description: Operations related to supplier data, including create, get, etc
  - name: Invoice Payment
    description: Operations related to invoice payment, including create, get, etc
  - name: Bill Payment
    description: Operations related to bill payment, including create, get, etc
  - name: Invoice Write Off
    description: Operations related to invoice write off, including create, get, etc
  - name: Inventory
    description: Operations related to inventory, including create, get, etc
  - name: Inventory Log
    description: Operations related to inventory log, including create, get, etc
  - name: Inventory Adjustment
    description: Operations related to inventory adjustment, including create, get, etc
  - name: Bill
    description: Operations related to bill, including create, get, etc
  - name: OutboundLogistic
    description: Operations related to outbound logistic, including create, get, etc
  - name: InboundLogistic
    description: Operations related to inbound logistic, including create, get, etc
  - name: TransferOrder
    description: Operations related to transfer order, including create, get, etc
  - name: Fulfillment
    description: Operations related to fulfillment, including create, get, etc
  - name: Prepaid Package
    description: Operations related to prepaid package, including create, get, etc
  - name: Promotion Coupon
    description: Operations related to promotion coupon, including create, get, etc
  - name: Promotion Event
    description: Operations related to promotion event, including create, get, etc
  - name: Outlet
    description: Operations related to outlet, including create, get, etc
  - name: Outlet Price
    description: Operations related to outlet price, including create, get, etc
  - name: Loyalty Point
    description: Operations related to loyalty point, including create, get, etc
  - name: Notification
    description: Operations related to notification, including create, get, etc
  - name: Payment Method
    description: Operations related to payment method, including create, get, etc
  - name: Invoice Write Off Option
    description: Operations related to invoice write off option, including create, get, etc
  - name: Tax
    description: Operations related to tax, including create, get, etc
  - name: Logistics Service
    description: Operations related to logistics service, including create, get, etc
  - name: Midtrans Payment Gateway
    description: Operations related to Midtrans Payment Gateway, including create, get, etc
  - name: Apps
    description: Operations related to Apps, including create, get, etc
  - name: Barcode
    description: Operations related to barcode, including create, get, etc
  - name: Client Secret
    description: Operations related to client secret, including create, get, etc
  - name: Rate Limit
    description: Operations related to rate limit, including create, get, etc
paths:
  /WriteOff/Invoice/Number:
    get:
      tags:
        - Invoice Write Off
      operationId: getWriteOffInvoiceByNumber
      summary: Get WriteOff Invoice by Number
      description: Get detail of Write Off Invoice by Number
      parameters:
        - name: Outlet
          in: query
          description: Outlet Name
          required: true
          schema:
            type: string
        - name: Number
          in: query
          description: Number of invoice which want to cancel write off
          required: true
          schema:
            type: string
        - name: OutletID
          in: query
          description: Guid of Outlet ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Number:
                    type: string
                    description: Number of Invoice
                  Outlet:
                    type: string
                    description: Outlet Name
                  Created:
                    type: string
                    description: Write off time created
                  CreatedBy:
                    type: string
                    description: User that write off the invoice
                  Amount:
                    type: integer
                    description: Amount of write off payment
                  Tag:
                    type: string
                    description: Reason of WriteOff Invoice
                example:
                  Number: OLT1/22/12/0058
                  Outlet: Outlet1
                  Created: '2023-01-04T11:13:21.33'
                  CreatedBy: dealpos
                  Amount: 2000
                  Reason: Logistics
            Example:
              example:
                Number: OLT1/22/12/0058
                Outlet: Outlet1
                Created: '2023-01-04T11:13:21.33'
                CreatedBy: dealpos
                Amount: 2000
                Tag: Logistics
      x-codegen-request-body-name: body
  /WriteOff/Invoice:
    get:
      tags:
        - Invoice Write Off
      operationId: listWriteOffInvoices
      summary: List WriteOff Invoice
      description: List of WriteOff Invoice can filter by date and outlet
      parameters:
        - name: From
          in: query
          description: 'From Date (format: yyyy/mm/dd)'
          required: true
          schema:
            type: string
            format: date
          example: '2023-01-01'
        - name: To
          in: query
          description: 'To Date (format: yyyy/mm/dd)'
          schema:
            type: string
            format: date
          example: '2023-01-01'
        - name: Outlet
          in: query
          description: Outlet Name
          schema:
            type: string
            example: Outlet1
        - name: OutletID
          in: query
          description: Guid of Outlet ID
          schema:
            type: string
            format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Number:
                      type: string
                      description: Number of Invoice
                    Outlet:
                      type: string
                      description: Outlet Name
                    Customer:
                      type: string
                      description: Customer's Name
                    Created:
                      type: string
                      description: Write off time created
                    CreatedBy:
                      type: string
                      description: User that write off the invoice
                    Amount:
                      type: integer
                      description: Amount of write off payment
                    Tag:
                      type: string
                      description: Reason of WriteOff Invoice
                example:
                  - Number: OLT1/22/12/0059
                    Outlet: Outlet1
                    Customer: John
                    Created: '2023-01-04T11:13:21.33'
                    CreatedBy: dealpos
                    Amount: 5000
                    Type: Logistics
                  - Number: OLT1/22/12/0058
                    Outlet: Outlet1
                    Customer: Jane
                    Created: '2023-01-04T11:13:21.33'
                    CreatedBy: dealpos
                    Amount: 10000
                    Type: BadDebt
    put:
      tags:
        - Invoice Write Off
      summary: Update Write Off
      description: "UpdateWrite Off Payment in Invoice.\r\nYou must have \"ADD\" role in \"Payment\" Module"
      operationId: put-WriteOff-Invoice
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                    - Tag
                  type: object
                  properties:
                    Date:
                      type: string
                      description: >-
                        Write Off date created (yyyy/mm/dd), if value is null it
                        will be set to today
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Number:
                      type: string
                      description: Invoice number to be writed off
                    Tag:
                      type: string
                      description: Get from Write off list option
                    Note:
                      type: string
                      description: Reason of write off
                  example:
                    date: 2024/02/28
                    Outlet: Outlet1
                    Number: OLT1.02.01.23.004
                    Type: logistic
                    Note: not paid
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                    - Tag
                  type: object
                  properties:
                    Date:
                      type: string
                      description: >-
                        Write Off date created (yyyy/mm/dd), if value is null it
                        will be set to today
                      x-stoplight:
                        id: 5ltemcn7bgqbu
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                    Number:
                      type: string
                      description: Invoice number to be writed off
                    Tag:
                      type: string
                      description: Get from Write off list option
                    Note:
                      type: string
                      description: Reason of write off
                  example:
                    date: 2024/02/28
                    OutletID: 123e4567-e89b-12d3-a456-426614174000
                    Number: OLT1.02.01.23.004
                    Type: logistic
                    Note: not paid
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Your Invoice has been successfully Write Off
      x-stoplight:
        id: 5xf1g393ybyfq
      x-codegen-request-body-name: body
    post:
      tags:
        - Invoice Write Off
      summary: Add Write Off
      description: >-
        Write Off Payment in Invoice. This API still backwards compatibility
        with Endpoint **api/v3/Payment/Invoice/WriteOff**.


        You must have "ADD" role in "Payment" Module
      operationId: post-WriteOff-Invoice
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                    - Tag
                  type: object
                  properties:
                    Date:
                      type: string
                      description: >-
                        Write Off date created (yyyy/mm/dd), if value is null it
                        will be set to today
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Number:
                      type: string
                      description: Invoice number to be writed off
                    Tag:
                      type: string
                      description: Get from Write off list option
                    Note:
                      type: string
                      description: Reason of write off
                  example:
                    date: 2024/02/28
                    Outlet: Outlet1
                    Number: OLT1.02.01.23.004
                    Type: logistic
                    Note: not paid
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                    - Tag
                  type: object
                  properties:
                    Date:
                      type: string
                      description: >-
                        Write Off date created (yyyy/mm/dd), if value is null it
                        will be set to today
                      x-stoplight:
                        id: 5ltemcn7bgqbu
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                    Number:
                      type: string
                      description: Invoice number to be writed off
                    Tag:
                      type: string
                      description: Get from Write off list option
                    Note:
                      type: string
                      description: Reason of write off
                  example:
                    date: 2024/02/28
                    OutletID: 123e4567-e89b-12d3-a456-426614174000
                    Number: OLT1.02.01.23.004
                    Type: logistic
                    Note: not paid
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Your Invoice has been successfully Write Off
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: >-
                    Cannot Write off, cause Invoice OLT1.02.01.23.004 had
                    already voided
      x-codegen-request-body-name: body
    delete:
      tags:
        - Invoice Write Off
      summary: Delete Write Off
      description: Delete WriteOff payment in Invoice
      operationId: delete-WriteOff-Invoice
      parameters:
        - name: Outlet
          in: query
          description: Outlet Name
          required: true
          schema:
            type: string
        - name: Number
          in: query
          description: Number of invoice which want to cancel write off
          required: true
          schema:
            type: string
        - name: OutletID
          in: query
          description: Guid of Outlet ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: >-
                    Write Off Invoice Number [OLT1/22/12/0058] has been
                    cancelled
  /WriteOff/Option:
    get:
      tags:
        - Invoice Write Off Option
      operationId: listWriteOffOption
      summary: List Write Off Option
      description: >-
        Get Write Off Option. This API still backwards compatibility with
        Endpoint **api/v3/WriteOff**.


        You must have "**VIEW**" role in "**Setup**" Module
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
              example:
                - Name: Write Off
                - Name: Bad Debt
    post:
      tags:
        - Invoice Write Off Option
      summary: Add WriteOff Option
      description: Add new option in list WriteOff
      operationId: post-WriteOff-Option
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
            example:
              Name: Bad Debt
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                required:
                  - Name
                type: object
                properties:
                  Name:
                    type: string
                    description: Name of Write Off
                example:
                  Message: Bad Debt added successfully
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
              example:
                Message: Write off added successfully
      x-codegen-request-body-name: body
    delete:
      tags:
        - Invoice Write Off Option
      summary: Delete Write Off Option
      description: Delete option in list writeoff
      operationId: delete-WriteOff-Option
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Name
              type: object
              properties:
                Name:
                  type: string
                  description: Name of WriteOff
              example:
                Name: Bad Debt
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Bad Debt deleted successfully
      x-codegen-request-body-name: body
  /Notification:
    get:
      tags:
        - Notification
      operationId: listNotifications
      summary: List Notifications
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Notification/p)**


        <br>

        Get List of Notifications


        Required Group Role: "**My Profile**" - "**Notification**" OR
        "**Global**" - "**EDIT**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - To
              type: object
              properties:
                Outlet:
                  type: string
                From:
                  type: string
                  description: From Date
                  default: (yyyy/mm/dd)
                To:
                  type: string
                  description: To date
                  default: (yyyy/mm/dd)
            example:
              Outlet: Outlet1
              From: '2022-03-17'
              To: '2022-03-17'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Notification's ID
                    ObjectID:
                      type: string
                      description: Notification Object Unique ID
                    OutletName:
                      type: string
                    Header:
                      type: string
                      description: Title of notification message
                    Body:
                      type: string
                      description: Content of notification
                    URL:
                      type: string
                      description: Content URL of notification
                    Type:
                      type: string
                    Created:
                      type: string
                      description: Notification's created time
                    TypeID:
                      type: string
              example:
                - ID: 7f7b85db-da32-4fe8-8118-f071ba36f0a0
                  ObjectID: 00000000-0000-0000-0000-000000000000
                  OutletName: Offline
                  Header: Customer has visited store 5 times
                  Body: male, 30 years old
                  Created: '2022-03-17T08:10:10.15'
                  URL: https://www.google.com/
                  TypeID: '0'
                  Type: None
                - ID: ce34ace3-2fec-4b87-8ae1-9338eed379a3
                  ObjectID: 00000000-0000-0000-0000-000000000000
                  OutletName: Offline
                  Header: Customer has visited store 5 times
                  Body: male, 30 years old
                  Created: '2022-03-17T08:09:51.367'
                  URL: https://www.google.com/
                  TypeID: '0'
                  Type: None
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
    post:
      tags:
        - Notification
      summary: Create a Notification
      description: |-
        Push Notification to Cashier Point of Sales

        Create a Notification based on outlets

        You must have "**Notification**" role in "**My Profile**" Module
      operationId: /api/Notification/Push
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Body
                - Header
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Name of the Outlet
                Header:
                  type: string
                  description: >-
                    Title of notification message. this is primary key for the
                    object
                Body:
                  type: string
                  description: Content of notification. this is primary key for the object
                URL:
                  type: string
                  description: Content URL of notification
            example:
              Outlet: Outlet1
              Header: Jane visits this store
              Body: This customer likes to buy T-shirt
              URL: https://www.mybrand.com/Products/1704
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                description: Notification has been created
              example:
                Message: Success
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Notification
      operationId: deleteNotifications
      summary: Delete Notifications
      description: |-
        Delete a Notification

        You must have "**Notification**" role in "**My Profile**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - To
              type: object
              properties:
                Outlet:
                  type: string
                From:
                  type: string
                  description: >-
                    Date from of notification created which will be deleted.
                    this is primary key for the object
                  default: (yyyy/mm/dd)
                To:
                  type: string
                  description: >-
                    To date of notfication created which will be deleted. this
                    is primary key for the object
                  default: (yyyy/mm/dd)
            example:
              Outlet: Outlet1
              From: '2022-03-17'
              To: '2022-03-17'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Notification has been deleted
              example:
                Message: Push Notification has been deleted!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Notification/WithTotalCount:
    get:
      tags:
        - Notification
      operationId: listNotificationsWithTotalCount
      summary: List Notifications With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get List of Notifications With Total Count


        Required Group Role: "**My Profile**" - "**Notification**" OR
        "**Global**" - "**EDIT**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - Outlet
                - To
              type: object
              properties:
                Outlet:
                  type: string
                From:
                  type: string
                  description: 'From date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To date (format: yyyy-mm-dd)'
            example:
              Outlet: Outlet1
              From: '2020-02-28'
              To: '2020-03-16'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Notification ID
                        ObjectID:
                          type: string
                          description: Notification Object Unique ID
                        OutletName:
                          type: string
                        Header:
                          type: string
                          description: Title of notification message
                        Body:
                          type: string
                          description: Content of notification
                        URL:
                          type: string
                          description: Content URL of notification
                        Created:
                          type: string
                          description: Notification's created time
                        Type:
                          type: string
                        TypeID:
                          type: integer
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - ID: 7f7b85db-da32-4fe8-8118-f071ba36f0a0
                    ObjectID: 00000000-0000-0000-0000-000000000000
                    OutletName: Offline
                    Header: Customer has visited store 5 times
                    Body: male, 30 years old
                    Created: '2022-03-17T08:10:10.15'
                    URL: https://www.google.com/
                    TypeID: 0
                    Type: None
                  - ID: ce34ace3-2fec-4b87-8ae1-9338eed379a3
                    ObjectID: 00000000-0000-0000-0000-000000000000
                    OutletName: Offline
                    Header: Customer has visited store 5 times
                    Body: male, 30 years old
                    Created: '2022-03-17T08:09:51.367'
                    URL: https://www.google.com/
                    TypeID: 0
                    Type: None
                TotalCount: 2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      $:
                        type: array
                        items:
                          type: string
                  status:
                    type: integer
                  title:
                    type: string
                  traceId:
                    type: string
                  type:
                    type: string
              example:
                errors:
                  $:
                    - >-
                      The input does not contain any JSON tokens. Expected the
                      input to start with a valid JSON token, when isFinalBlock
                      is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
                status: 400
                title: One or more validation errors occurred.
                traceId: 00-0fbab708e385644c8ca77a70aa9cf844-37d8fd3474e9d846-00
                type: https://tools.ietf.org/html/rfc7231#section-6.5.1
      x-codegen-request-body-name: body
  /Bill:
    post:
      tags:
        - Bill
      summary: Create a Bill
      description: >-
        Create a Supplier Bill


        You must have "**CREATE**" role in "**Buy**" Module OR "**EDIT**" role
        in "**Global**" Module
      operationId: createBill
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Outlet
                - Number
                - Date
                - Delivery
              type: object
              properties:
                Outlet:
                  type: string
                  description: Name of the outlet
                Number:
                  type: string
                  description: Unique number for the transaction
                Date:
                  type: string
                  format: date
                  description: Transaction date
                DueDate:
                  type: string
                  format: date
                  description: Due date for the transaction
                TaxType:
                  type: string
                  description: Type of tax applied
                Discount1:
                  type: number
                  description: Percentage of the discount
                DiscountAmount:
                  type: number
                  description: Total discount amount
                Note:
                  type: string
                  description: Bill notes
                Delivery:
                  type: string
                  description: Delivery status
                Supplier:
                  type: object
                  required:
                    - Name
                    - Email
                  properties:
                    Name:
                      type: string
                      description: Name of the supplier
                    Email:
                      type: string
                      format: email
                      description: Supplier's email address
                    Phone:
                      type: string
                      description: Supplier's phone number
                    Address:
                      type: string
                      description: Supplier's address
                    Gender:
                      type: string
                      description: Supplier's gender
                      enum:
                        - Male
                        - Female
                Variants:
                  type: array
                  description: List of product variants
                  items:
                    type: object
                    required:
                      - Code
                      - Quantity
                      - Price
                    properties:
                      Code:
                        type: string
                        description: Code of the product variant
                      Quantity:
                        type: string
                        description: Quantity of the variant
                      Price:
                        type: string
                        description: Price of the variant
                      Discount:
                        type: number
                        description: Discount applied to the variant
                      Note:
                        type: string
                        description: Notes about the variant
                Payments:
                  type: array
                  description: List of payments made
                  items:
                    type: object
                    required:
                      - Date
                      - Amount
                      - Method
                    properties:
                      Date:
                        type: string
                        format: date
                        description: Date of payment
                      Amount:
                        type: string
                        description: Amount paid
                      Method:
                        type: string
                        description: Payment method
            example:
              Outlet: Outlet1
              Number: 05.23.2018.0001
              Date: '2018-02-23'
              DueDate: '2018-08-25'
              TaxType: PPN 10%
              Discount1: 5
              DiscountAmount: 10000
              Note: Test note Outlet1
              Delivery: Waiting
              Supplier:
                Name: Supplier A
                Email: supplier@dealpos.com
                Phone: '085741254'
                Address: JL. Muara Karang Cantik Blok P3 Timur No. 30
                Gender: Male
              Variants:
                - Code: '2005'
                  Quantity: '10'
                  Price: '102000'
                  Discount: 10
                  Note: Cotton Combet 30's
                - Code: '2002'
                  Quantity: '10'
                  Price: '120000'
                  Discount: 5
                  Note: Denim Shirt(M)
              Payments:
                - Date: '2018-02-23'
                  Amount: '2150610'
                  Method: Cash
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
              example:
                ID: 410ba2b7-8eff-4759-b5f1-cf47b33ef1cc
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    put:
      tags:
        - Bill
      operationId: updateBill
      summary: Update a Bill
      description: >-
        Update a Supplier Bill based on number.


        You must have "**EDIT**" role in "**Orders**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Outlet
                - Number
                - Date
                - Delivery
              type: object
              properties:
                Outlet:
                  type: string
                  description: Name of the outlet
                Number:
                  type: string
                  description: Unique number for the transaction
                Date:
                  type: string
                  format: date
                  description: Transaction date
                DueDate:
                  type: string
                  format: date
                  description: Due date for the transaction
                TaxType:
                  type: string
                  description: Type of tax applied
                Discount1:
                  type: number
                  description: Percentage of the discount
                DiscountAmount:
                  type: number
                  description: Total discount amount
                Note:
                  type: string
                  description: Bill notes
                Delivery:
                  type: string
                  description: Delivery status
                Supplier:
                  type: object
                  required:
                    - Name
                    - Email
                  properties:
                    Name:
                      type: string
                      description: Name of the supplier
                    Email:
                      type: string
                      format: email
                      description: Supplier's email address
                    Phone:
                      type: string
                      description: Supplier's phone number
                    Address:
                      type: string
                      description: Supplier's address
                    Gender:
                      type: string
                      description: Supplier's gender
                      enum:
                        - Male
                        - Female
                Variants:
                  type: array
                  description: List of product variants
                  items:
                    type: object
                    required:
                      - Code
                      - Quantity
                      - Price
                    properties:
                      Code:
                        type: string
                        description: Code of the product variant
                      Quantity:
                        type: string
                        description: Quantity of the variant
                      Price:
                        type: string
                        description: Price of the variant
                      Discount:
                        type: number
                        description: Discount applied to the variant
                      Note:
                        type: string
                        description: Notes about the variant
                Payments:
                  type: array
                  description: List of payments made
                  items:
                    type: object
                    required:
                      - Date
                      - Amount
                      - Method
                    properties:
                      Date:
                        type: string
                        format: date
                        description: Date of payment
                      Amount:
                        type: string
                        description: Amount paid
                      Method:
                        type: string
                        description: Payment method
            example:
              Outlet: Outlet1
              Number: 05.23.2018.0001
              Date: '2018-02-23'
              DueDate: '2018-08-25'
              TaxType: PPN 10%
              Discount1: 5
              DiscountAmount: 10000
              Note: Test note Outlet1
              Delivery: Waiting
              Supplier:
                Name: Supplier A
                Email: supplier@dealpos.com
                Phone: '085741254'
                Address: JL. Muara Karang Cantik Blok P3 Timur No. 30
                Gender: Male
              Variants:
                - Code: '2005'
                  Quantity: '10'
                  Price: '102000'
                  Discount: 10
                  Note: Cotton Combet 30's
                - Code: '2002'
                  Quantity: '10'
                  Price: '120000'
                  Discount: 5
                  Note: Denim Shirt(M)
              Payments:
                - Date: '2018-02-23'
                  Amount: '2150610'
                  Method: Cash
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
              example:
                ID: 410ba2b7-8eff-4759-b5f1-cf47b33ef1cc
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
    get:
      tags:
        - Bill
      operationId: listBills
      summary: List Bills
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Bill/p)**


        <br>

        Get List of Supplier Bills based on Outlet


        You must have "**SupplierBill**" role in "**Orders**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - Outlet
                - PageNumber
                - PageSize
                - To
              type: object
              properties:
                From:
                  type: string
                  description: From date(yyyy/mm/dd)
                  default: 'format : yyyy-mm-dd'
                To:
                  type: string
                  description: To date(yyyyy/mm/dd)
                  default: 'format : yyyy-mm-dd'
                Outlet:
                  type: string
                  description: >-
                    The name of the outlet making a purchase order. This is
                    primary key for the object
                PageNumber:
                  type: number
                  description: The number of page data to be displayed
                PageSize:
                  type: number
                  description: The number of rows returned by the API
            example:
              From: '2020-06-01'
              To: '2020-06-30'
              Outlet: Outlet1
              PageNumber: 1
              PageSize: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: ID of supplier bill that created
                    Outlet:
                      type: string
                      description: Outlet Name of bill transaction created
                    Number:
                      type: string
                      description: Bill number transaction
                    Supplier:
                      type: string
                      description: Supplier Name
                    Type:
                      type: integer
                      description: Type of Supplier Bill
                    Date:
                      type: string
                      description: Bill transaction created date
                    Due:
                      type: string
                      description: Due Date of payment
                    Amount:
                      type: integer
                      description: Total purchase amount
                    Delivery:
                      type: string
                      description: Delivery state of shipping
                      enum:
                        - Waiting
                        - Received
                        - Partial
                    Payment:
                      type: string
                      description: Status payment of bill transaction
                    Created:
                      type: string
                      description: Bill created time
              example:
                - ID: d688ff9e-0671-456a-b6f0-223acaa5ee7b
                  Outlet: Outlet1
                  Number: 20.06.00004
                  Supplier: hendry
                  Type: 1
                  Date: '2020-06-24T00:00:00'
                  Due: '2020-06-24T00:00:00'
                  Amount: 100000
                  Delivery: Received
                  Payment: Paid
                  Created: '2020-06-24T13:36:12.97'
                - ID: ed6ffe55-f08e-4806-be1d-e55f3927e11b
                  Outlet: Outlet1
                  Number: 20.06.00003
                  Supplier: PT ABC
                  Type: 1
                  Date: '2020-06-24T00:00:00'
                  Due: '2020-06-24T00:00:00'
                  Amount: 100000
                  Delivery: Received
                  Payment: Paid
                  Created: '2020-06-24T11:40:27.703'
                - ID: 8169eac5-c2a7-4845-8f96-0b5a8980957a
                  Outlet: Outlet1
                  Number: 20.06.00002
                  Supplier: PT ABC
                  Type: 1
                  Date: '2020-06-24T00:00:00'
                  Due: '2020-06-24T00:00:00'
                  Amount: 100000
                  Delivery: Received
                  Payment: Paid
                  Created: '2020-06-24T11:24:53.027'
                - ID: 057a8d3f-3927-4d61-a533-cd554d2c01e8
                  Outlet: Outlet1
                  Number: OTL01-20-06-02
                  Supplier: PT ABC
                  Type: 1
                  Date: '2020-06-19T00:00:00'
                  Due: '2020-06-19T00:00:00'
                  Amount: 87289
                  Delivery: Received
                  Payment: Paid
                  Created: '2020-06-19T14:13:13.817'
                - ID: 1b5f9f1f-e836-4330-b79d-9e7737893a78
                  Outlet: Outlet1
                  Number: OTL01-20-06-01
                  Supplier: PT ABC
                  Type: 1
                  Date: '2020-06-08T00:00:00'
                  Due: '2020-06-08T00:00:00'
                  Amount: 3138
                  Delivery: Received
                  Payment: Paid
                  Created: '2020-06-08T08:40:54.55'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Bill
      operationId: deleteBill
      summary: Delete a Bill
      description: |-
        Delete a Supplier Bill based on Outlet and Number

        You must have role "**DELETE**" role in "**Buy**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: The name of the outlet making a purchase order
                Number:
                  type: string
                  description: Number of Supplier bill. This is primary key for the object
            example:
              Outlet: Outlet1
              Number: 18.10.00009
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Supplier bill has been deleted!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Category:
    post:
      tags:
        - Category
      operationId: createCategory
      summary: Create a Category
      description: |-
        Create a Category based on name

        You must have "**CREATE**" role in "**Products**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/category'
            example:
              Name: Top/Men
              Code: TM
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: The ID from category created
              example:
                ID: 273d1184-a64b-4d2d-ad98-8b38b19c3ffb
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error Message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: |+

                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    put:
      tags:
        - Category
      operationId: updateCategory
      summary: Update a Category
      description: >-
        Update a category based on name


        You must have "**EDIT**" role in "**Products**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Discontinued
                - Name
                - Rename
              type: object
              properties:
                Name:
                  type: string
                Rename:
                  type: string
                Discontinued:
                  type: boolean
              example:
                Name: Top/Men
                Rename: Top/Women
                Discontinued: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: The ID from category updated
              example:
                ID: 7dc2d2f8-9143-4d3b-bff5-6c00f3f52a23
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Category
      operationId: deleteCategory
      summary: Delete a Category
      description: |-
        Delete a Category based on name

        You must have "**DELETE**" role in "**Products**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Name
              type: object
              properties:
                Name:
                  type: string
                  description: >-
                    The name of the category that want to be deleted. This is
                    primary key for the object
              example:
                Name: Food/Snack/Pastries
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                  - ID
                type: object
                properties:
                  ID:
                    type: string
                    description: the category ID has been deleted
              example:
                ID: 273d1184-a64b-4d2d-ad98-8b38b19c3ffb
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    get:
      tags:
        - Category
      operationId: listCategories
      summary: List Categories
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Category/p)**


        <br>


        Get list of product categories


        Use First example (empty object) to return all categories, and use
        second example to get spesific category with its children.


        Required Group Role: **"Products"** - **"View"**
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Discontinued:
                  type: boolean
                  description: >-
                    If requester doesn't fill in the discontinued parameter,
                    response will display all of the categories
              example:
                Discontinued: false
        required: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: The ID from category
                    Name:
                      type: string
                      description: The name of category
                    Discontinued:
                      type: boolean
                      description: Category's discontinued status
                      x-stoplight:
                        id: pyxeye97wpt4h
                    SubCategory:
                      type: array
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                          Name:
                            type: string
                          Parent:
                            type: string
                          Discontinued:
                            type: boolean
              examples:
                All Categories:
                  summary: All Categories
                  value:
                    - ID: 328ca218-0f0b-449c-8d0d-2a55113ce432
                      Name: Top/Men
                      Discontinued: false
                    - ID: ed8e8964-d3ab-4101-834b-426b85b241b0
                      Name: Top
                      Discontinued: false
                Specific Category:
                  summary: Specific Category
                  value:
                    - ID: b05bdeb0-b037-40a4-b05b-20d0d869f999
                      Name: Top
                      SubCategory:
                        - ID: 154b76b9-b2ee-44d5-84f4-32dbca3a5286
                          Name: Top/Man
                          Parent: Man
                          Discontinued: false
                        - ID: e4821f45-4ab0-45b9-950e-4a6db8d0f9d1
                          Name: Top/Women
                          Parent: Women
                          Discontinued: false
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token submitted! Please retreive your token from
                  MyProfile
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Product:
    post:
      tags:
        - Product
      operationId: createProduct
      summary: Create a Product
      description: |
        Create New Product

        You must have "**CREATE**" role in "**Products**" Module 
      parameters:
        - name: UploadImageAsync
          in: header
          description: >-
            When true image is uploaded asynchronously meaning when you receive
            OK Status Code the image processing is still running in the
            background.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Standard Variant
                  required:
                    - Category
                    - Name
                    - Brand
                    - Code
                    - Discontinued
                    - ImageURL
                    - Variants
                  type: object
                  properties:
                    Category:
                      type: string
                      description: The category of the product
                    Name:
                      type: string
                      description: The name of the product
                    Brand:
                      type: string
                      description: The brand of the product
                    Code:
                      type: string
                      description: The code of the product
                    Discontinued:
                      type: boolean
                      description: The discontinued status of the product
                    ImageURL:
                      type: string
                      description: The image URL of the product
                    ExtraImagesURL:
                      type: array
                      items:
                        type: string
                      description: The extra image URL of the product
                    Description:
                      type: string
                      description: The description of the product
                    Variants:
                      type: array
                      items:
                        type: object
                        properties:
                          Model:
                            type: string
                            description: The model of the variant
                          Code:
                            type: string
                            description: The code of the variant
                          UnitCost:
                            type: number
                            description: The unit cost of the variant
                          UnitPrice:
                            type: number
                            description: The unit price of the variant
                          Discontinued:
                            type: boolean
                            description: The discontinued status of the variant
                          Type:
                            type: object
                            properties:
                              value:
                                type: string
                            description: The type of the variant
                          VariantDescription:
                            type: string
                            description: The description of the variant
                  example:
                    Category: Top/Men
                    Name: Captain America T-Shirt
                    Brand: Brand
                    Code: '1003'
                    Discontinued: false
                    ImageURL: >-
                      https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60
                    ExtraImagesURL:
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg
                    Description: New Arrival
                    Variants:
                      - Model: Small
                        Code: 1003S
                        UnitCost: 100000
                        UnitPrice: 150000
                        Discontinued: true
                        Type:
                          value: Standard
                        VariantDescription: Unavailable
                      - Model: Medium
                        Code: 1003M
                        UnitCost: 125000
                        UnitPrice: 175000
                        Type:
                          value: Standard
                        Discontinued: false
                - title: Composite Variant
                  required:
                    - Category
                    - Name
                    - Brand
                    - Code
                    - Discontinued
                    - ImageURL
                    - Variants
                  type: object
                  properties:
                    Category:
                      type: string
                      description: The category of the product
                    Name:
                      type: string
                      description: The name of the product
                    Brand:
                      type: string
                      description: The brand of the product
                    Code:
                      type: string
                      description: The code of the product
                    Discontinued:
                      type: boolean
                      description: The discontinued status of the product
                    ImageURL:
                      type: string
                      description: The image URL of the product
                    ExtraImagesURL:
                      type: array
                      items:
                        type: string
                      description: The extra image URL of the product
                    Description:
                      type: string
                      description: The description of the product
                    Variants:
                      type: array
                      items:
                        type: object
                        properties:
                          Model:
                            type: string
                            description: The model of the variant
                          Code:
                            type: string
                            description: The code of the variant
                          UnitCost:
                            type: number
                            description: The unit cost of the variant
                          UnitPrice:
                            type: number
                            description: The unit price of the variant
                          Discontinued:
                            type: boolean
                            description: The discontinued status of the variant
                          Type:
                            type: object
                            properties:
                              value:
                                type: string
                            description: The type of the variant
                          VariantDescription:
                            type: string
                            description: The description of the variant
                          Components:
                            type: array
                            description: List of components for the variant
                            items:
                              type: object
                              properties:
                                Code:
                                  type: string
                                  description: Unique code of the component
                                Name:
                                  type: string
                                  description: Name of the component
                                Qty:
                                  type: integer
                                  description: Quantity of the component
                  example:
                    Category: Food
                    Name: Burger
                    Brand: Brand
                    Code: '1001'
                    Discontinued: false
                    ImageURL: >-
                      https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60
                    ExtraImagesURL:
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg
                      - >-
                        //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg
                    Description: Complete Package
                    Variants:
                      - Model: Medium
                        Code: 1001M
                        UnitCost: 50000
                        UnitPrice: 75000
                        Discontinued: false
                        Type: Composite
                        VariantDescription: Available
                        Components:
                          - Code: S001
                            Name: Sausage
                            Qty: 1
                          - Code: B001
                            Name: Bread
                            Qty: 2
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                  - ID
                  - Variants
                type: object
                properties:
                  ID:
                    type: string
                    description: Product ID
                  Variants:
                    type: array
                    description: Array of Variants
                    items:
                      type: object
                      properties:
                        Code:
                          type: string
                          description: Variant Code
                        ID:
                          type: string
                          description: Variant ID
                  ListVariantID:
                    type: array
                    description: List Variant ID
                    items:
                      type: string
                example:
                  ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                  Variants:
                    - Code: 1000S
                      ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - Code: 1000M
                      ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                  ListVariantID:
                    - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - b3d68610-22a5-445d-8c5c-c79487373aa2
              example:
                ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                Variants:
                  - Code: 1000S
                    ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - Code: 1000M
                    ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                ListVariantID:
                  - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - b3d68610-22a5-445d-8c5c-c79487373aa2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Every product must be assigned to a category
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    put:
      tags:
        - Product
      operationId: updateProduct
      summary: Update a Product By Code
      description: >-
        Update Product Existing


        You must have "**EDIT**" role in "**Products**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product'
            example:
              Category: Top/Men
              Name: Captain America T-Shirt
              Brand: Brand
              Code: '1003'
              Discontinued: false
              ImageURL: >-
                https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60
              Description: New Arrival
              Variants:
                - Model: Medium
                  Code: 1003M
                  UnitCost: 125000
                  UnitPrice: 200000
                  Discontinued: false
                - Model: Large
                  Code: 1003L
                  UnitCost: 150000
                  UnitPrice: 225000
                  Discontinued: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        Code:
                          type: string
                        ID:
                          type: string
                  ListVariantID:
                    type: array
                    items:
                      type: string
                example:
                  ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                  Variants:
                    - Code: 1000S
                      ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - Code: 1000M
                      ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                  ListVariantID:
                    - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - b3d68610-22a5-445d-8c5c-c79487373aa2
              example:
                ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                Variants:
                  - Code: 1000S
                    ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - Code: 1000M
                    ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                ListVariantID:
                  - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - b3d68610-22a5-445d-8c5c-c79487373aa2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection.'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Product
      operationId: deleteProduct
      summary: Delete a Product
      description: |-
        Delete Product by Code

        You must have "**DELETE**" role in "**Products**" Module 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: The code of the product to be deleted.
            example:
              Code: J100
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: The Product has been deleted
              example: Product with code J100 has been successfully deleted.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    get:
      tags:
        - Product
      operationId: listProducts
      summary: List Products
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Product/p)**


        <br>

        Get List of Products


        Required Group Role: "**Products**" - "**VIEW**"
      parameters:
        - name: PageNumber
          in: query
          description: The page number that you want to display
          required: true
          schema:
            type: integer
          example: 1
        - name: PageSize
          in: query
          description: The maximum number of data that you want to display on the page
          required: true
          schema:
            type: integer
          example: 20
        - name: QueryRowCount
          in: query
          description: Default show / hide the counter
          required: false
          schema:
            type: boolean
        - name: Category
          in: query
          description: The name of the product category.
          required: false
          schema:
            type: string
        - name: ListCategory
          in: query
          description: The name of the product in multiple category
          required: false
          schema:
            type: array
        - name: Name
          in: query
          description: Name of the product
          required: false
          schema:
            type: string
        - name: Discontinued
          in: query
          description: The name of the product category.
          required: false
          schema:
            type: string
            default: 'No'
            enum:
              - 'No'
              - 'Yes'
              - All
        - name: QueryInventory
          in: query
          description: The name of the product category.
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  DataArray:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: The ID of the product to be showed
                        Name:
                          type: string
                          description: the name of the product to be showed
                        Code:
                          type: string
                          description: |
                            the code of the product to be showed
                        Category:
                          type: string
                          description: The Cateogry name of the product to be showed
                        Released:
                          type: string
                          description: The release date of the product to be showed
                        ThumbnailUrl:
                          type: string
                          description: >-
                            The product thumbnail image link of the product to
                            be showed
                        ImageUrl:
                          type: string
                          description: The Image URL of the product to be showed
                        Discontinued:
                          type: boolean
                          description: The Availablity status of the product
                        Variants:
                          type: array
                          items:
                            type: object
                            properties:
                              ID:
                                type: string
                                description: The ID of the Variants to be showed
                              Model:
                                type: string
                                description: the model name of the variants
                              Code:
                                type: string
                                description: the code of the variant to be showed
                              UnitPrice:
                                type: number
                                description: the unit price of the variants to be showed
                              Discount:
                                type: number
                                description: discount percentage of variant's
                              Discontinued:
                                type: boolean
                                description: the availablity of the variants
                              Inventory:
                                type: integer
                                description: >-
                                  The Inventory stock of the variants. When not
                                  queried this property will not be available
                              ProductID:
                                type: string
                                description: the product ID of the variants to be showed
                              Allocated:
                                type: integer
                                description: >-
                                  Allocated Inventory. When not queried this
                                  property will not be available
                              Weight:
                                type: integer
                                description: Variant's weight
                        Created:
                          type: string
                          description: the creator of the variants
                  RecordsCount:
                    type: integer
                    description: |-
                      total product data result.
                      (-1 if QueryRowCount set false)
              example:
                DataArray:
                  - ID: f74bba14-99f0-4246-84bf-3064e3d516c3
                    Name: Captain America T-Shirt
                    Code: '1003'
                    Category: Top/Men
                    Released: '0001-01-01T00:00:00'
                    ThumbnailUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url
                    ImageUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url
                    Discontinued: false
                    Variants:
                      - ID: a39787d8-2c20-428c-babf-b61c257d337e
                        Model: Medium
                        Code: 1003M
                        UnitPrice: 200
                        Discount: 20
                        Discontinued: false
                        Inventory: 0
                        ProductID: f74bba14-99f0-4246-84bf-3064e3d516c3
                        Allocated: 0
                        Weight: 500
                      - ID: 7293d4b4-20c9-44ee-898b-ffafc294f259
                        Model: Large
                        Code: 1003L
                        UnitPrice: 225
                        Discount: 10
                        Discontinued: false
                        Inventory: 0
                        ProductID: f74bba14-99f0-4246-84bf-3064e3d516c3
                        Allocated: 0
                        Weight: 500
                    Created: '2020-04-24T14:11:17.193'
                  - ID: 1f792526-df98-4171-97f7-18113f9af20d
                    Name: Denim Shirt
                    Code: '1342'
                    Category: Top/Men
                    Released: '2015-01-14T00:00:00'
                    ThumbnailUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/1f792526-df98-4171-97f7-18113f9af20d/Denim_Shirt.png
                    ImageUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/1f792526-df98-4171-97f7-18113f9af20d/Denim_Shirt.png
                    Discontinued: false
                    Variants:
                      - ID: d1ac5ebb-db74-42f9-980c-0195828f3edd
                        Model: L
                        Code: 1342L
                        UnitPrice: 500
                        Discount: 20
                        Discontinued: false
                        Inventory: 0
                        ProductID: 1f792526-df98-4171-97f7-18113f9af20d
                        Allocated: 0
                        Weight: 500
                      - ID: 5cd96f46-29b1-420b-a188-a2ae7d2b778a
                        Model: M
                        Code: 1342M
                        UnitPrice: 500
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 1f792526-df98-4171-97f7-18113f9af20d
                        Allocated: 0
                        Weight: 500
                    Created: '2021-01-14T00:00:00'
                  - ID: 02a199c4-6964-45ad-af92-bfb58aa06ee8
                    Name: Long sleeves T-shirt
                    Code: '1333'
                    Category: Top/Men
                    Released: '2015-01-14T00:00:00'
                    ThumbnailUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/02a199c4-6964-45ad-af92-bfb58aa06ee8/long_sleeves_T-shirt.png
                    ImageUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/02a199c4-6964-45ad-af92-bfb58aa06ee8/long_sleeves_T-shirt.png
                    Discontinued: false
                    Variants:
                      - ID: 4568e810-9ee6-4310-af11-9dbea5ce4b40
                        Model: L
                        Code: 1333L
                        UnitPrice: 120
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 02a199c4-6964-45ad-af92-bfb58aa06ee8
                        Allocated: 0
                        Weight: 500
                      - ID: e3ff1c10-5caa-43f2-9b7e-cf9bc32f26da
                        Model: M
                        Code: 1333M
                        UnitPrice: 120
                        Discount: 10
                        Discontinued: false
                        Inventory: 0
                        ProductID: 02a199c4-6964-45ad-af92-bfb58aa06ee8
                        Allocated: 0
                        Weight: 500
                      - ID: 0b3948b6-0029-4a3b-b97a-c2c2bd0c842a
                        Model: S
                        Code: 1333S
                        UnitPrice: 120
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 02a199c4-6964-45ad-af92-bfb58aa06ee8
                        Allocated: 0
                        Weight: 500
                    Created: '2021-01-14T00:00:00'
                  - ID: b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9
                    Name: Shirt
                    Code: '1002'
                    Category: Top/Men
                    Released: '2015-01-13T00:00:00'
                    ThumbnailUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9/b.png
                    ImageUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9/b.png
                    Discontinued: false
                    Variants:
                      - ID: 9a60f9f0-0a4b-4834-a2e3-dcbe4f456907
                        Model: L
                        Code: 1002L
                        UnitPrice: 250
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9
                        Allocated: 0
                        Weight: 500
                      - ID: ee02969d-93ea-446c-a105-aca4c7cecd4e
                        Model: M
                        Code: 1002M
                        UnitPrice: 250
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9
                        Allocated: 0
                        Weight: 500
                      - ID: c899897b-a298-48c4-8253-cb01e9e18fb9
                        Model: S
                        Code: 1002S
                        UnitPrice: 250
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9
                        Allocated: 0
                        Weight: 500
                    Created: '2021-01-14T00:00:00'
                  - ID: 2bb38cb9-e8e7-4af2-be21-087d328e11e4
                    Name: T Shirt
                    Code: '1001'
                    Category: Top/Men
                    Released: '2015-01-13T00:00:00'
                    ThumbnailUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/2bb38cb9-e8e7-4af2-be21-087d328e11e4/a.png
                    ImageUrl: >-
                      //res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/2bb38cb9-e8e7-4af2-be21-087d328e11e4/a.png
                    Discontinued: false
                    Variants:
                      - ID: 667ccb14-3e4f-436a-b76c-176458d70cdf
                        Model: L
                        Code: 1001L
                        UnitPrice: 150
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 2bb38cb9-e8e7-4af2-be21-087d328e11e4
                      - ID: 4f37995e-5f8d-4edb-9e94-e54395941f66
                        Model: M
                        Code: 1001M
                        UnitPrice: 150
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 2bb38cb9-e8e7-4af2-be21-087d328e11e4
                        Allocated: 0
                        Weight: 500
                      - ID: 4994d431-ce85-4dc9-8599-8164248521a8
                        Model: S
                        Code: 1001S
                        UnitPrice: 150
                        Discount: 0
                        Discontinued: false
                        Inventory: 0
                        ProductID: 2bb38cb9-e8e7-4af2-be21-087d328e11e4
                        Allocated: 0
                        Weight: 500
                    Created: '2021-01-14T00:00:00'
                RecordsCount: 5
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
  /Variant/Add:
    post:
      tags:
        - Variant
      summary: Add Variant By Product Code
      operationId: post-Variant-Add
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Product Code
                Variants:
                  type: array
                  items:
                    required:
                      - Code
                    type: object
                    properties:
                      Model:
                        type: string
                        description: New Variant Name
                      Code:
                        type: string
                        description: Variant Code
                      UnitCost:
                        type: integer
                        description: Cost of variant
                      UnitPrice:
                        type: integer
                        description: Price of variant
                      Discontinued:
                        type: boolean
                        description: The variant availability for selling.
                      VariantDescription:
                        type: string
                        description: The description of the product to be inserted.
            example:
              Code: '1003'
              Variants:
                - Model: Small
                  Code: 1003L
                  UnitCost: 100000
                  UnitPrice: 150000
                  Discontinued: true
                  VariantDescription: Unavailable
                - Model: Medium
                  Code: 1003XL
                  UnitCost: 125000
                  UnitPrice: 175000
                  Discontinued: false
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        Code:
                          type: string
                        ID:
                          type: string
                  ListVariantID:
                    type: array
                    items:
                      type: string
                example:
                  ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                  Variants:
                    - Code: 1000S
                      ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - Code: 1000M
                      ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                  ListVariantID:
                    - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                    - b3d68610-22a5-445d-8c5c-c79487373aa2
            Example 1:
              example:
                ID: 9525a6b0-297f-4b4a-97c7-0ae876bb44cd
                Variants:
                  - Code: 1000S
                    ID: 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - Code: 1000M
                    ID: b3d68610-22a5-445d-8c5c-c79487373aa2
                ListVariantID:
                  - 9ad47be6-bf1c-4dd5-87a8-193fe56d1035
                  - b3d68610-22a5-445d-8c5c-c79487373aa2
      x-stoplight:
        id: bukrtkbedjwuz
      x-codegen-request-body-name: body
  /Variant:
    put:
      tags:
        - Variant
      operationId: putVariant
      summary: Update Variant by Code
      description: |-
        Update Variant By variant code 

        You must have "**EDIT**" role in "**Products**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Variant with Standard /composite type
                  required:
                    - Code
                    - Components
                    - OutletPrice
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Code of the variant
                    Name:
                      type: string
                      description: Display Name.
                    Model:
                      type: string
                      description: >-
                        Name of the variant. Backwards compatibility with
                        property "Variant"
                      x-stoplight:
                        id: 4w7wdbgpxs453
                    ProductCode:
                      type: string
                      description: Code of product
                      x-stoplight:
                        id: anb5hdoesj6cs
                    Weight:
                      type: integer
                      description: Weight of the product
                    Type:
                      type: string
                      description: Product-type of the variant
                      enum:
                        - Standard
                        - Composite
                        - NonInventory
                        - Manufactured
                        - MultipleUOM
                        - Complementary
                        - PrepaidPackage
                        - PrepaidPoint
                    OrderPrice:
                      type: integer
                      description: Last order price of the product
                    UnitCost:
                      type: integer
                      description: Unit cost of the product
                    UnitPrice:
                      type: integer
                      description: Unit selling price of the product
                    Taxable:
                      type: boolean
                      description: Taxable status of the product
                    LoyaltyPoint:
                      type: boolean
                      description: Loyalty point status of the product
                    Discontinued:
                      type: boolean
                      description: Discontinue status of the product
                    ParentCode:
                      type: string
                      description: Product Code for parent (Type MultipleUOM)
                      x-stoplight:
                        id: pskva1k70nskr
                    Ratio:
                      type: integer
                      description: >-
                        Multiple uom quantity ratio of the parent (Type
                        MultipleUOM)
                      x-stoplight:
                        id: sqmgt7rh5w2wz
                    ExpiredDayPrepaid:
                      type: integer
                      description: >-
                        Number of day set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: z9dx3bwwgiohf
                    ExpiredMonthPrepaid:
                      type: integer
                      description: >-
                        Number of month set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: hpmbxx9wravkj
                    PointPrepaid:
                      type: integer
                      description: >-
                        Number of point that earned (Type Prepaid Package &
                        Prepaid Point). If value is set with 0 means unlimited
                      x-stoplight:
                        id: bjtnkg5sury3x
                    Components:
                      type: array
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Component variant code of other variant
                          Name:
                            type: string
                            description: Name of the component
                          Qty:
                            type: integer
                            description: Total qty of the component
                    OutletPrice:
                      type: array
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: Selected outlet of the product
                          Price:
                            type: integer
                            description: Outlet price of the product
                          ExtraCost:
                            type: integer
                            description: Extra cost of the selected product
                  example:
                    Code: 2DL-P
                    Name: 2D Layering (Premium)
                    Model: 2D Layering (Premium)
                    ProductCode: 2DL
                    Weight: 0
                    Type: Standard
                    OrderPrice: 0
                    UnitCost: 2000
                    UnitPrice: 500000
                    Taxable: true
                    LoyaltyPoint: false
                    Discontinued: false
                    Components:
                      - Code: 2DL
                        Name: 2D Layering
                        Qty: 1
                    OutletPrice:
                      - Outlet: Outlet1
                        Price: 500000
                        ExtraCost: 0
                - title: Variant with multiple UOM type
                  required:
                    - Code
                    - Components
                    - OutletPrice
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Code of the variant
                    Name:
                      type: string
                      description: Display Name.
                    Model:
                      type: string
                      description: >-
                        Name of the variant. Backwards compatibility with
                        property "Variant"
                      x-stoplight:
                        id: 4w7wdbgpxs453
                    ProductCode:
                      type: string
                      description: Code of product
                      x-stoplight:
                        id: anb5hdoesj6cs
                    Weight:
                      type: integer
                      description: Weight of the product
                    Type:
                      type: string
                      description: Product-type of the variant
                      enum:
                        - Standard
                        - Composite
                        - NonInventory
                        - Manufactured
                        - MultipleUOM
                        - Complementary
                        - PrepaidPackage
                        - PrepaidPoint
                    OrderPrice:
                      type: integer
                      description: Last order price of the product
                    UnitCost:
                      type: integer
                      description: Unit cost of the product
                    UnitPrice:
                      type: integer
                      description: Unit selling price of the product
                    Taxable:
                      type: boolean
                      description: Taxable status of the product
                    LoyaltyPoint:
                      type: boolean
                      description: Loyalty point status of the product
                    Discontinued:
                      type: boolean
                      description: Discontinue status of the product
                    ParentCode:
                      type: string
                      description: Product Code for parent (Type MultipleUOM)
                      x-stoplight:
                        id: pskva1k70nskr
                    Ratio:
                      type: integer
                      description: >-
                        Multiple uom quantity ratio of the parent (Type
                        MultipleUOM)
                      x-stoplight:
                        id: sqmgt7rh5w2wz
                    ExpiredDayPrepaid:
                      type: integer
                      description: >-
                        Number of day set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: z9dx3bwwgiohf
                    ExpiredMonthPrepaid:
                      type: integer
                      description: >-
                        Number of month set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: hpmbxx9wravkj
                    PointPrepaid:
                      type: integer
                      description: >-
                        Number of point that earned (Type Prepaid Package &
                        Prepaid Point). If value is set with 0 means unlimited
                      x-stoplight:
                        id: bjtnkg5sury3x
                    Components:
                      type: array
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Component variant code of other variant
                          Name:
                            type: string
                            description: Name of the component
                          Qty:
                            type: integer
                            description: Total qty of the component
                    OutletPrice:
                      type: array
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: Selected outlet of the product
                          Price:
                            type: integer
                            description: Outlet price of the product
                          ExtraCost:
                            type: integer
                            description: Extra cost of the selected product
                  example:
                    Code: SW001
                    Name: Sandwich (Large)
                    Model: Large
                    ProductCode: SW
                    Weight: 100
                    Type: MultipleUOM
                    ParentCode: SKU001
                    Ratio: 3
                    OrderPrice: 0
                    UnitCost: 20000
                    UnitPrice: 50000
                    Taxable: true
                    LoyaltyPoint: true
                    Discontinued: false
                    OutletPrice:
                      - Outlet: Outlet1
                        Price: 55000
                        ExtraCost: 5000
                - title: Variant with Prepaid Package / Prepaid Point
                  required:
                    - Code
                    - Components
                    - OutletPrice
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Code of the variant
                    Name:
                      type: string
                      description: Display Name.
                    Model:
                      type: string
                      description: >-
                        Name of the variant. Backwards compatibility with
                        property "Variant"
                      x-stoplight:
                        id: 4w7wdbgpxs453
                    ProductCode:
                      type: string
                      description: Code of product
                      x-stoplight:
                        id: anb5hdoesj6cs
                    Weight:
                      type: integer
                      description: Weight of the product
                    Type:
                      type: string
                      description: Product-type of the variant
                      enum:
                        - Standard
                        - Composite
                        - NonInventory
                        - Manufactured
                        - MultipleUOM
                        - Complementary
                        - PrepaidPackage
                        - PrepaidPoint
                    OrderPrice:
                      type: integer
                      description: Last order price of the product
                    UnitCost:
                      type: integer
                      description: Unit cost of the product
                    UnitPrice:
                      type: integer
                      description: Unit selling price of the product
                    Taxable:
                      type: boolean
                      description: Taxable status of the product
                    LoyaltyPoint:
                      type: boolean
                      description: Loyalty point status of the product
                    Discontinued:
                      type: boolean
                      description: Discontinue status of the product
                    ParentCode:
                      type: string
                      description: Product Code for parent (Type MultipleUOM)
                      x-stoplight:
                        id: pskva1k70nskr
                    Ratio:
                      type: integer
                      description: >-
                        Multiple uom quantity ratio of the parent (Type
                        MultipleUOM)
                      x-stoplight:
                        id: sqmgt7rh5w2wz
                    ExpiredDayPrepaid:
                      type: integer
                      description: >-
                        Number of day set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: z9dx3bwwgiohf
                    ExpiredMonthPrepaid:
                      type: integer
                      description: >-
                        Number of month set to expired (Type Prepaid Package &
                        Prepaid Point)
                      x-stoplight:
                        id: hpmbxx9wravkj
                    PointPrepaid:
                      type: integer
                      description: >-
                        Number of point that earned (Type Prepaid Package &
                        Prepaid Point). If value is set with 0 means unlimited
                      x-stoplight:
                        id: bjtnkg5sury3x
                    Components:
                      type: array
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Component variant code of other variant
                          Name:
                            type: string
                            description: Name of the component
                          Qty:
                            type: integer
                            description: Total qty of the component
                    OutletPrice:
                      type: array
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: Selected outlet of the product
                          Price:
                            type: integer
                            description: Outlet price of the product
                          ExtraCost:
                            type: integer
                            description: Extra cost of the selected product
                  example:
                    Code: SW001
                    Name: Sandwich (Large)
                    Model: Large
                    ProductCode: SW
                    Weight: 100
                    Type: PrepaidPackage
                    OrderPrice: 0
                    UnitCost: 20000
                    UnitPrice: 50000
                    Taxable: true
                    LoyaltyPoint: true
                    Discontinued: false
                    ExpiredDayPrepaid: 30
                    ExpiredMonthPrepaid: 12
                    PointPrepaid: 1
                    OutletPrice:
                      - Outlet: Outlet1
                        Price: 55000
                        ExtraCost: 5000
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Variant has been updated
              example:
                Message: Update Success
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Object reference not set to an instance of an object.
                StackTrace: "   at POS.BLL.API.Model.VariantAPIModel.ValidateUpdate(POSContext ctx, IMemoryCache cache, POSIdentity _identity) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\VariantAPIModel.cs:line 67\r\n   at POS.WEB.Controllers.v3.VariantController.Put(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\VariantController.cs:line 274"
      x-codegen-request-body-name: body
    delete:
      tags:
        - Variant
      operationId: deleteVariant
      summary: Delete a Variant
      description: |-
        Delete Variant By variant code 

        You must have "**DELETE**" role in "**Products**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: |
                    The code of the variant to be deleted.
            example:
              Code: 1003L
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: the variant has been deleted
              example: Variant with code 1003L has been successfully deleted.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
    get:
      tags:
        - Variant
      operationId: getVariant
      summary: List Variants
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get List of Variant existing


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Category
              type: object
              properties:
                Category:
                  type: string
                  description: |
                    The category of the variant to be showed.
                PageNumber:
                  type: integer
                  description: The page number that you want to display
                PageSize:
                  type: integer
                  description: >-
                    The maximum amount of data that you want to display on the
                    page
                Type:
                  type: string
                  description: |
                    The type of the variant to be showed.
                Name:
                  type: string
                  description: |
                    Variant's Name
                  x-stoplight:
                    id: e1au8eerana2y
                Code:
                  type: string
                  description: |
                    Variant's Code
                  x-stoplight:
                    id: hw0feq3v7qwnv
                ReleasedFrom:
                  type: string
                  description: Release Product Date Start
                  x-stoplight:
                    id: rtpzlxysnwu1i
                ReleasedTo:
                  type: string
                  description: Release Product Date To
                  x-stoplight:
                    id: 9rveuu9k7puyd
            example:
              Category: 2D Layering
              PageNumber: 1
              PageSize: 10
              Type: Standard
              Name: 2D Layering (Premium)
              Code: 2DL-P
              ReleasedFrom: '2021-01-01'
              ReleasedTo: '2021-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Unique ID of the variant
                        Name:
                          type: string
                          description: The name of the Variant
                        Code:
                          type: string
                          description: Code of the Variant
                        Type:
                          type: string
                          description: Product-type of the Variant
                        UnitPrice:
                          type: number
                          description: Unit Selling Price of the Variant
                        UnitCost:
                          type: number
                          description: Unit Cost of the Variant
                  RecordsCount:
                    type: integer
                    description: Total count of the records
              example:
                Data:
                  - ID: d01b9ab2-11fb-4fe0-a1a1-49790645da5d
                    Name: 2D Layering (Premium)
                    Code: 2DL-P
                    Type: Standard
                    UnitPrice: 500000
                    UnitCost: 2000
                  - ID: 7e8ccca1-9690-4cd3-98a3-9b26079d90b5
                    Name: 2D Layering (Standard)
                    Code: 2DL-S
                    Type: Standard
                    UnitPrice: 300000
                    UnitCost: 2000
                RecordsCount: 2
      x-codegen-request-body-name: body
  /Variant/Data:
    get:
      tags:
        - Variant
      operationId: getVariantData
      summary: List Variant Data
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get List of Variant Data


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Category
              type: object
              properties:
                Category:
                  type: string
                  description: |
                    The category of the variant to be showed.
                PageNumber:
                  type: integer
                  description: The page number that you want to display
                PageSize:
                  type: integer
                  description: >-
                    The maximum amount of data that you want to display on the
                    page
                Type:
                  type: string
                  description: |
                    The type of the variant to be showed.
                Name:
                  type: string
                  description: |
                    Variant's Name
                  x-stoplight:
                    id: gp1ofl887j9ha
                Code:
                  type: string
                  description: |
                    Variant's Code
                  x-stoplight:
                    id: ve6ddezx9w6ew
                ReleasedFrom:
                  type: string
                  description: Release Product Date Start
                ReleasedTo:
                  type: string
                  description: Release Product Date To
            example:
              Category: 2D Layering
              PageNumber: 1
              PageSize: 10
              Type: Standard
              Name: 2D Layering (Standard)
              Code: 2DL-S
              ReleasedFrom: '2021-01-01'
              ReleasedTo: '2021-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Unique ID of the variant
                        Name:
                          type: string
                          description: The name of the Variant
                        Code:
                          type: string
                          description: Code of the Variant
                        Type:
                          type: string
                          description: Product-type of the Variant
                        UnitPrice:
                          type: number
                          description: Unit Selling Price of the Variant
                        UnitCost:
                          type: number
                          description: Unit Cost of the Variant
              example:
                Data:
                  - ID: d01b9ab2-11fb-4fe0-a1a1-49790645da5d
                    Name: 2D Layering (Premium)
                    Code: 2DL-P
                    Type: Standard
                    UnitPrice: 500000
                    UnitCost: 2000
                  - ID: 7e8ccca1-9690-4cd3-98a3-9b26079d90b5
                    Name: 2D Layering (Standard)
                    Code: 2DL-S
                    Type: Standard
                    UnitPrice: 300000
                    UnitCost: 2000
      x-codegen-request-body-name: body
  /Variant/Count:
    get:
      tags:
        - Variant
      operationId: getVariantCount
      summary: Variants Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Count total Variant 


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Category
              type: object
              properties:
                Category:
                  type: string
                  description: |
                    The category of the variant to be showed.
                PageNumber:
                  type: integer
                  description: The page number that you want to display
                PageSize:
                  type: integer
                  description: >-
                    The maximum amount of data that you want to display on the
                    page
                Type:
                  type: string
                  description: |
                    The type of the variant to be showed.
                Name:
                  type: string
                  description: |
                    Variant's Name or Code
                  x-stoplight:
                    id: epy9tw080e9e8
                Code:
                  type: string
                  description: |
                    Variant's Code
                  x-stoplight:
                    id: 2u8opl8wj39dp
                ReleasedFrom:
                  type: string
                  description: Release Product Date Start
                ReleasedTo:
                  type: string
                  description: Release Product Date To
            example:
              Category: Top/Men
              PageNumber: 1
              PageSize: 20
              Type: Standard
              Name: 2D
              ReleasedFrom: '2023-01-01'
              ReleasedTo: '2023-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Count:
                    type: string
                example:
                  Count: '100'
              example:
                Count: '100'
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Report:
    get:
      tags:
        - Report
      operationId: getReport
      summary: Get Sales Invoice
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Transaction


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Single Outlet
                  required:
                    - From
                    - Outlet
                    - To
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    From:
                      type: string
                      description: From date
                    To:
                      type: string
                      description: To date
                    Email:
                      type: string
                      description: Customer email address
                    PageNumber:
                      type: integer
                      description: The Number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The number of rows returned by the API
                  example:
                    Outlet: Outlet1
                    From: '2021-03-01T00:00:00'
                    To: '2021-03-31T00:00:00'
                    PageNumber: 1
                    PageSize: 100
                - title: MultipleOutlet
                  required:
                    - From
                    - To
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: array
                      items:
                        type: string
                      description: Outlet Name
                    From:
                      type: string
                      description: From date
                    To:
                      type: string
                      description: To date
                    PageNumber:
                      type: integer
                      description: The Number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The number of rows returned by the API
                  example:
                    Outlet:
                      - Outlet1
                      - Outlet2
                    From: '2021-03-01T00:00:00'
                    To: '2021-03-31T00:00:00'
                    PageNumber: 1
                    PageSize: 100
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet Name
                        Number:
                          type: string
                          description: Invoice Number
                        Date:
                          type: string
                          description: Transaction Date
                        Created:
                          type: string
                          description: Transaction Create Time
                        DueDate:
                          type: string
                          description: Invoice DueDate
                        Discount1:
                          type: integer
                          description: discount was applied on the transaction
                        Discount2:
                          type: integer
                          description: discount was applied on the transaction
                        DiscountAmount:
                          type: number
                          description: discount amount was applied for the transaction
                        InvoiceID:
                          type: string
                          description: ID of the Invoice
                        Gross:
                          type: number
                          description: Amount before tax and discount
                        DiscountTotal:
                          type: number
                          description: Whole of total discount applied
                        TaxType:
                          type: string
                          description: Name of tax applied
                        TaxAmount:
                          type: number
                          description: Tax amount applied
                        Sales:
                          type: number
                          description: Total Sales Amount
                        SalesNTax:
                          type: number
                          description: Total sales + tax
                        Surcharge:
                          type: number
                          description: Invoice surcharge
                        ReferenceInvoiceNumber:
                          type: string
                          description: Sales Invoice Number
                        ReferenceNumber:
                          type: string
                          description: Invoice reference number
                          x-stoplight:
                            id: k92dy52jxqy0q
                        Customer:
                          type: object
                          properties:
                            ID:
                              type: string
                              description: Customer's ID
                            Name:
                              type: string
                              description: Customer's Name
                            Email:
                              type: string
                              description: Customer's Email
                            Mobile:
                              type: string
                              description: Customer's Mobile Phone
                            Phone:
                              type: string
                              description: Customer's Phone Number
                            Code:
                              type: string
                              description: Customer's Code
                            Address:
                              type: string
                              description: Customer address
                              x-stoplight:
                                id: udh1hfdro2a1b
                        Variants:
                          type: array
                          items:
                            type: object
                            properties:
                              Name:
                                type: string
                                description: Variant Name
                              Code:
                                type: string
                                description: Code of the variant
                              Quantity:
                                type: integer
                                description: the quantity of variant has been sold
                              UnitQuantity:
                                type: integer
                                description: >-
                                  The unit quantity of the variant that has been
                                  sold
                              Cost:
                                type: number
                                description: the cost of the variant
                              Price:
                                type: number
                                description: the price of the variant that was sold
                              PriceOriginal:
                                type: number
                                description: Price original from master product
                              Discount:
                                type: integer
                                description: Original price of the item that was sold
                              DiscountAmount:
                                type: number
                                description: Discount amount for the transaction
                              Taxable:
                                type: boolean
                                description: the taxable avaiability of the variants
                              LoyaltyPoint:
                                type: boolean
                                description: the loyalty was used on transaction
                              Expense:
                                type: number
                                description: Additional Expense of the product
                              NetPrice:
                                type: number
                                description: Total product amount after discount
                              PriceTypeID:
                                type: integer
                                description: Price unique ID
                              Note:
                                type: string
                                description: Note of the product
                        Payments:
                          type: array
                          items:
                            type: object
                            properties:
                              Date:
                                type: string
                                description: Date of the payment
                              Amount:
                                type: number
                                description: Total amount of payment method
                              Method:
                                type: string
                                description: Payment method of the invoice transaction
                              Code:
                                type: string
                                description: Code of the payment method
                              Note:
                                type: string
                                description: Note of the payment
                        OrderFulfillmentRecipient:
                          type: object
                          properties:
                            ID:
                              type: string
                              description: Recipient ID
                              x-stoplight:
                                id: cxjt37zo7gqdb
                            Name:
                              type: string
                              description: Recipient name
                              x-stoplight:
                                id: cu2co6o05068d
                            Phone:
                              type: string
                              description: Recipient phone number
                              x-stoplight:
                                id: 8xkwsvkry4xcs
                            Address:
                              type: string
                              description: Recipient address
                              x-stoplight:
                                id: 9g6hsmr0pb3zo
                            City:
                              type: string
                              description: Recipient city l
                              x-stoplight:
                                id: 0goag595eq4hq
                          x-stoplight:
                            id: v9k8vqil4lbod
                  TotalRow:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 21.03.00124
                    Date: '2021-03-10T00:00:00'
                    Created: '2021-03-09T13:03:12.903'
                    DueDate: '0001-01-01T00:00:00'
                    Discount1: 10
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 250f0917-d3be-42ef-9ac4-3be17ef7b21f
                    Gross: 50000
                    DiscountTotal: 5000
                    TaxType: PPN 10%
                    TaxAmount: 4500
                    Sales: 45000
                    SalesNTax: 49500
                    Surcharge: 0
                    ReferenceInvoiceNumber: 21.03.00124
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7f4a
                    Variants:
                      - Name: Muffin (Medium)
                        Code: '03152'
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 10000
                        Price: 20000
                        PriceOriginal: 20000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 20000
                        PriceTypeID: 0
                        Note: Test Transaction
                      - Name: Muffin (Large)
                        Code: ML3001
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 30000
                        Price: 30000
                        PriceOriginal: 20000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 30000
                        PriceTypeID: 0
                        Note: Test Transaction
                    Payments:
                      - Date: '2021-03-10T00:00:00'
                        Amount: 49500
                        Method: Cash
                        Code: '2123'
                        Note: Test Transaction
                TotalRow: 1
            example-2:
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 22.03.00001
                    Date: '2022-03-07T00:00:00'
                    Created: '2022-03-07T10:10:20.15'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 6f4dae0c-9bf6-4691-bfb8-9e38db723705
                    Gross: 450000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    Sales: 450000
                    SalesNTax: 450000
                    Surcharge: 0
                    Customer: null
                    Variants:
                      - Name: Faith
                        Code: TS-1011
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 0
                        Price: 150000
                        PriceOriginal: 150000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 150000
                        PriceTypeID: 0
                        Note: null
                      - Name: Money Talk
                        Code: TS-1014
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 0
                        Price: 150000
                        PriceOriginal: 150000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 150000
                        PriceTypeID: 0
                        Note: null
                      - Name: Goodbye
                        Code: TS-1013
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 100000
                        Price: 150000
                        PriceOriginal: 150000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 150000
                        PriceTypeID: 0
                        Note: null
                    Payments:
                      - Date: '2022-03-07T00:00:00'
                        Amount: 450000
                        Method: Cash
                        Code: null
                        Note: null
                    ReferenceNumber: Reference-000
                    OrderFulfillmentRecipient:
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7asf
                      Name: Teguh Warsono
                      Phone: '081245654652'
                      Address: Duri Kosambi No. 22
                      City: Jakarta
                  - Outlet: Outlet2
                    Number: 22.03.00012
                    Date: '2022-03-07T00:00:00'
                    Created: '2022-03-07T09:11:58.177'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: efe5c0a7-a336-4d2c-bc5f-deec04a54af2
                    Gross: 150000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    Sales: 150000
                    SalesNTax: 150000
                    Surcharge: 0
                    Customer:
                      Name: Aan Andrian
                      Email: null
                      Mobile: '6281357464112'
                      Code: '4333'
                      Address: Jl. Apan No. 2
                    Variants:
                      - Name: Bipolar Disorder
                        Code: TS-1001
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 0
                        Price: 150000
                        PriceOriginal: 150000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 150000
                        PriceTypeID: 0
                        Note: null
                    Payments: null
                    ReferenceNumber: Reference-001
                    OrderFulfillmentRecipient:
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7asf
                      Name: Teguh Warsono
                      Phone: '081245654652'
                      Address: Duri Kosambi No. 22
                      City: Jakarta
                TotalRow: 2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
  /Report/SalesPerson:
    get:
      tags:
        - Report
      operationId: getSalesInvoicebySalesPerson
      summary: Get Sales Invoice by Sales Person
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Invoice Transaction by Sales Person


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - Outlet
                - To
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                From:
                  type: string
                  description: From date
                To:
                  type: string
                  description: To date
            example:
              Outlet: Outlet 1
              From: '2021-01-01'
              To: '2021-01-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    SalesPerson:
                      type: string
                    Transaction:
                      type: integer
                    Quantity:
                      type: integer
                    Sales:
                      type: integer
                    Tax:
                      type: integer
                    SalesNTax:
                      type: integer
                    Cost:
                      type: integer
                    Profit:
                      type: integer
                example:
                  - SalesPerson: James
                    Transaction: 1
                    Quantity: 1
                    Sales: 8000
                    Tax: 0
                    SalesNTax: 8000
                    Cost: 2000
                    Profit: 6000
                  - SalesPerson: Ferdiansyah Rahman
                    Transaction: 1
                    Quantity: 2
                    Sales: 20000
                    Tax: 0
                    SalesNTax: 20000
                    Cost: 1000000
                    Profit: -980000
              example:
                - SalesPerson: James
                  Transaction: 1
                  Quantity: 1
                  Sales: 8000
                  Tax: 0
                  SalesNTax: 8000
                  Cost: 2000
                  Profit: 6000
                - SalesPerson: Ferdiansyah Rahman
                  Transaction: 1
                  Quantity: 2
                  Sales: 20000
                  Tax: 0
                  SalesNTax: 20000
                  Cost: 1000000
                  Profit: -980000
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
  /Comments:
    get:
      tags:
        - Comment
      summary: Get Customer Comment
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Customer Comment


        Required Group Role: "**Customer**" - "**VIEW**" 
      operationId: get-comment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                From:
                  type: string
                  description: The starting date or timestamp for the data range.
                To:
                  type: string
                  description: The ending date or timestamp for the data range.
                RowCount:
                  type: integer
                  description: The total number of rows available for the query or dataset.
                PageSize:
                  type: integer
                  description: >-
                    The number of rows or records displayed per page in the
                    response.
            example:
              From: 2021/03/10
              To: 2023/03/27
              RowCount: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                        ImageURL:
                          type: string
                        Comment:
                          type: string
                        Customer:
                          type: string
                        InvoiceNumber:
                          type: string
                        Rate:
                          type: integer
                  RecordsCount:
                    type: integer
              example:
                Data:
                  - ID: 4cc059e7-6433-434d-b194-ef5b37d6184c
                    ImageURL: https://asd.com
                    Comment: >-
                      Produknya bagus, harganya bersaing dari yang lain, semoga
                      awet ya. recommended seller!
                    Customer: Ferdiansyah2 Rahman
                    InvoiceNumber: B1.22.06.00029
                    Rate: 5
                RecordsCount: 1
      x-codegen-request-body-name: body
  /OutboundLogistic:
    post:
      tags:
        - OutboundLogistic
      operationId: CreateOutboundLogistic
      summary: Create OutboundLogistic
      description: >-
        Use this API to send an Outbound Logistic from an Invoice.


        **NOTE**: We have 3 hierarchy for Inventory stock reduction.


        1. If [Dispatch] = true, then the inventory will reduce from the
        selected outlets in Pick Pack Ship, read more about it here:
        https://support.dealpos.com/en/articles/5990583-create-fulfillment-pick-pack-and-ship 


        2. If [Dispatch] = false, then the inventory will reduce from
        FulfillmentOutlet configuration.


        3. If Fulfillment Outlet is null or empty, then the inventory will
        reduce from [Outlet] or in which Outlet the Inventory was made.


        > You must have "**EDIT**" role in "**Logistic**" Module OR "**EDIT**"
        role in "**Global**" Module


        Flowchart of Send Outbound Logistic:


        ![Flowchart Outbound
        Logistic](https://res.cloudinary.com/pos/image/upload/v1692606753/FlowchartOutboundLogistic.png)
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Fulfillment All Products
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: c3r6nl17jziv9
                    Outlet:
                      type: string
                      description: Name of the outlet that make a transaction
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                    Fulfillment:
                      type: array
                      description: Backwards compatibility with property FulfillmentOutlet"
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: >-
                              Stock in this outlet will be reduced. If null it
                              will reduce stock from order's outlet(must
                              backwards compatibility with property
                              FulfillmentOutlet)
                            default: 'false'
                            x-stoplight:
                              id: 1d8x8p4yqnemi
                          Date:
                            type: string
                            description: Created time fulfillment
                            default: 'true'
                            x-stoplight:
                              id: jfzhhguofhohu
                        x-stoplight:
                          id: gnr9yzlyy4kzn
                      x-stoplight:
                        id: m8moignob0h3b
                    Picklist:
                      type: array
                      items:
                        type: object
                        properties:
                          Dispatch:
                            type: boolean
                            description: >-
                              if true = delivery will deduce stock from the
                              assigned outlet from picklist (the delivery will
                              only deduce from one/first outlet of the picklist
                              outlets). if false: will deduce stock from
                              selected fulfillment Outlet (must backwards
                              compatibility with property
                              DispatchFromPickListOutlet)
                            default: false
                            x-stoplight:
                              id: f6javv8jteo4x
                          MultipleEnabled:
                            type: boolean
                            description: >-
                              When multiplet picklist detected and
                              MultipleEnabled set to false, OutboundLogistic is
                              not process
                            default: true
                            x-stoplight:
                              id: ylgfo2tybtzst
                        x-stoplight:
                          id: aa9nis3smrrjw
                      x-stoplight:
                        id: ek97m6z9eum6b
                    Variants:
                      type: array
                      description: >-
                        If object Variants filled with empty array or not send,
                        it will sent all products
                      items:
                        required:
                          - Code
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Code of Variant
                          Quantity:
                            type: string
                            description: Quantity of stock will deduct
                          Serial:
                            $ref: '#/components/schemas/VariantSerial'
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                    Fulfillment:
                      Outlet: Outlet2
                      Date: '2024-06-20'
                    PickList:
                      Dispatch: false
                - title: Fulfillment Partial Products
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: c3r6nl17jziv9
                    Outlet:
                      type: string
                      description: Name of the outlet that make a transaction
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                    Fulfillment:
                      type: array
                      description: Backwards compatibility with property FulfillmentOutlet"
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: >-
                              Stock in this outlet will be reduced. If null it
                              will reduce stock from order's outlet(must
                              backwards compatibility with property
                              FulfillmentOutlet)
                            default: 'false'
                            x-stoplight:
                              id: 1d8x8p4yqnemi
                          Date:
                            type: string
                            description: Created time fulfillment
                            default: 'true'
                            x-stoplight:
                              id: jfzhhguofhohu
                        x-stoplight:
                          id: gnr9yzlyy4kzn
                      x-stoplight:
                        id: m8moignob0h3b
                    Picklist:
                      type: array
                      items:
                        type: object
                        properties:
                          Dispatch:
                            type: boolean
                            description: >-
                              if true = delivery will deduce stock from the
                              assigned outlet from picklist (the delivery will
                              only deduce from one/first outlet of the picklist
                              outlets). if false: will deduce stock from
                              selected fulfillment Outlet (must backwards
                              compatibility with property
                              DispatchFromPickListOutlet)
                            default: false
                            x-stoplight:
                              id: f6javv8jteo4x
                          MultipleEnabled:
                            type: boolean
                            description: >-
                              When multiplet picklist detected and
                              MultipleEnabled set to false, OutboundLogistic is
                              not process
                            default: true
                            x-stoplight:
                              id: ylgfo2tybtzst
                        x-stoplight:
                          id: aa9nis3smrrjw
                      x-stoplight:
                        id: ek97m6z9eum6b
                    Variants:
                      type: array
                      description: >-
                        If object Variants filled with empty array or not send,
                        it will sent all products
                      items:
                        required:
                          - Code
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Code of Variant
                          Quantity:
                            type: string
                            description: Quantity of stock will deduct
                          Serial:
                            $ref: '#/components/schemas/VariantSerial'
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                    Fulfillment:
                      Outlet: Outlet2
                      Date: '2024-06-20'
                    DispatchFromPickListOutlet: false
                    Variants:
                      - Code: '2012'
                        Quantity: '6'
                - title: Fulfillment from Picklist Outlet
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: c3r6nl17jziv9
                    Outlet:
                      type: string
                      description: Name of the outlet that make a transaction
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                    Fulfillment:
                      type: array
                      description: Backwards compatibility with property FulfillmentOutlet"
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: >-
                              Stock in this outlet will be reduced. If null it
                              will reduce stock from order's outlet(must
                              backwards compatibility with property
                              FulfillmentOutlet)
                            default: 'false'
                            x-stoplight:
                              id: 1d8x8p4yqnemi
                          Date:
                            type: string
                            description: Created time fulfillment
                            default: 'true'
                            x-stoplight:
                              id: jfzhhguofhohu
                        x-stoplight:
                          id: gnr9yzlyy4kzn
                      x-stoplight:
                        id: m8moignob0h3b
                    Picklist:
                      type: array
                      items:
                        type: object
                        properties:
                          Dispatch:
                            type: boolean
                            description: >-
                              if true = delivery will deduce stock from the
                              assigned outlet from picklist (the delivery will
                              only deduce from one/first outlet of the picklist
                              outlets). if false: will deduce stock from
                              selected fulfillment Outlet (must backwards
                              compatibility with property
                              DispatchFromPickListOutlet)
                            default: false
                            x-stoplight:
                              id: f6javv8jteo4x
                          MultipleEnabled:
                            type: boolean
                            description: >-
                              When multiplet picklist detected and
                              MultipleEnabled set to false, OutboundLogistic is
                              not process
                            default: true
                            x-stoplight:
                              id: ylgfo2tybtzst
                        x-stoplight:
                          id: aa9nis3smrrjw
                      x-stoplight:
                        id: ek97m6z9eum6b
                    Variants:
                      type: array
                      description: >-
                        If object Variants filled with empty array or not send,
                        it will sent all products
                      items:
                        required:
                          - Code
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Code of Variant
                          Quantity:
                            type: string
                            description: Quantity of stock will deduct
                          Serial:
                            $ref: '#/components/schemas/VariantSerial'
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                    Fulfillment:
                      Outlet: Outlet2
                      Date: '2024-06-20'
                    PickList:
                      Dispatch: true
                      MultipleEnabled: true
                    Variants:
                      - Code: '2012'
                        Quantity: '6'
                - title: With Outlet ID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: c3r6nl17jziv9
                    Outlet:
                      type: string
                      description: Name of the outlet that make a transaction
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                    Fulfillment:
                      type: array
                      description: Backwards compatibility with property FulfillmentOutlet"
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: >-
                              Stock in this outlet will be reduced. If null it
                              will reduce stock from order's outlet(must
                              backwards compatibility with property
                              FulfillmentOutlet)
                            default: 'false'
                            x-stoplight:
                              id: 1d8x8p4yqnemi
                          Date:
                            type: string
                            description: Created time fulfillment
                            default: 'true'
                            x-stoplight:
                              id: jfzhhguofhohu
                        x-stoplight:
                          id: gnr9yzlyy4kzn
                      x-stoplight:
                        id: m8moignob0h3b
                    Picklist:
                      type: array
                      items:
                        type: object
                        properties:
                          Dispatch:
                            type: boolean
                            description: >-
                              if true = delivery will deduce stock from the
                              assigned outlet from picklist (the delivery will
                              only deduce from one/first outlet of the picklist
                              outlets). if false: will deduce stock from
                              selected fulfillment Outlet (must backwards
                              compatibility with property
                              DispatchFromPickListOutlet)
                            default: false
                            x-stoplight:
                              id: f6javv8jteo4x
                          MultipleEnabled:
                            type: boolean
                            description: >-
                              When multiplet picklist detected and
                              MultipleEnabled set to false, OutboundLogistic is
                              not process
                            default: true
                            x-stoplight:
                              id: ylgfo2tybtzst
                        x-stoplight:
                          id: aa9nis3smrrjw
                      x-stoplight:
                        id: ek97m6z9eum6b
                    Variants:
                      type: array
                      description: >-
                        If object Variants filled with empty array or not send,
                        it will sent all products
                      items:
                        required:
                          - Code
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Code of Variant
                          Quantity:
                            type: string
                            description: Quantity of stock will deduct
                          Serial:
                            $ref: '#/components/schemas/VariantSerial'
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 18.10.00009
                    Fulfillment:
                      Outlet: Outlet2
                      Date: '2024-06-20'
                    PickList:
                      Dispatch: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  - title: Fulfillment Sent
                    type: object
                    properties:
                      ID:
                        type: string
                      OrderFulfillmentState:
                        type: string
                        example: Sent
                    example:
                      ID: 712098c6-0703-4e36-9679-c14dbeb4e3fe
                      OrderFulfillmentState: Sent
                  - title: Fultillment Partial
                    type: object
                    properties:
                      ID:
                        type: string
                      OrderFulfillmentState:
                        type: string
                        example: Partial
                    example:
                      ID: 712098c6-0703-4e36-9679-c14dbeb4e3fe
                      OrderFulfillmentState: Partial
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Multiple Picklist is detected for this Order, no
                  OutboundLogistic is created - Inventory unchanged!
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - title: Invoice not Exist
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: "Invoice\_number\_does\_not\_exist!"
                  - title: Invoice Voided
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: >-
                        Cannot send fulfillment, because the invoice 18.10.00009
                        had been voided
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '409':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  - title: Fulfillment Status Already Sent
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: >-
                        The order 18.10.00009 delivery status is SENT. Double
                        Delivery is not allowed
                  - title: Prevent Double Shipped
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: >-
                        The picklist for order 18.10.00009 has been Shipped.
                        Cannot double SHIP a PickList
        '422':
          description: Unprocessable Entity cause order not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Order not Found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    get:
      tags:
        - OutboundLogistic
      operationId: ListOutboundLogistic
      summary: List OutboundLogistic
      description: >-
        >Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery.
        As for now, both the new & the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/CustomerDelivery/p)**


        <br>

        Get list of Customer Delivery


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: From date
                    To:
                      type: string
                      description: To Date
                    PageNumber:
                      type: number
                      description: The Page of data to be displayed
                    PageSize:
                      type: number
                      description: The number of rows returned by the API
                    Outlet:
                      type: string
                      description: Outlet name that you want to filter
                  example:
                    From: '2020-04-01'
                    To: '2020-04-30'
                    PageNumber: 1
                    PageSize: 20
                    Outlet: Outlet1
                - title: With Outlet ID
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: From date
                    To:
                      type: string
                      description: To Date
                    PageNumber:
                      type: number
                      description: The Page of data to be displayed
                    PageSize:
                      type: number
                      description: The number of rows returned by the API
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: ewip7qt0fqp4y
                  example:
                    From: '2020-04-01'
                    To: '2020-04-30'
                    PageNumber: 1
                    PageSize: 20
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet where the transaction is created
                    Number:
                      type: string
                      description: Invoice Number
                    Customer:
                      type: string
                      description: Customer's name
                    Date:
                      type: string
                      description: Transaction date
                    Delivery:
                      type: string
                      description: Delivery status
                      enum:
                        - Sent
                        - Unsent
                        - Partial
                    Time:
                      type: string
                      description: Delivery time
              example:
                - Outlet: Outlet1
                  Number: 20.04.00082
                  Customer: Ferdi
                  Date: '2020-04-17T00:00:00'
                  Delivery: Sent
                  Time: '2020-04-17T15:01:00'
                - Outlet: Outlet1
                  Number: 20.04.00081
                  Customer: Ferdi
                  Date: '2020-04-17T00:00:00'
                  Delivery: Sent
                  Time: '2020-04-17T14:30:00'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    delete:
      tags:
        - OutboundLogistic
      operationId: DeleteOutboundLogistic
      summary: Delete OutboundLogistic
      description: >-
        >Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery.
        As for now, both the new & the old ones can be use.


        You must have "**DELETE**" role in "**Logistic**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Delivery Number
                  example:
                    Outlet: Outlet1
                    Number: 21.12.00123
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: evvu3rmrpf72k
                    Number:
                      type: string
                      description: Delivery Number
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 21.12.00123
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: >-
                  Customer Delivery 925a9ce8-96a0-4c38-92d5-f8b5a9599bc2 has
                  been deleted!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  There is No Customer Delivery with Number 21.12.00123 - at
                  Outlet2
      x-codegen-request-body-name: body
  /Fulfillment/NewOrder:
    get:
      tags:
        - Fulfillment
      operationId: GetFulfillmentNewOrder
      summary: List of New Order Fulfillment
      description: |-
        Get list of New Order Fulfillment that is not yet picked
        Required Group Role: "**Fulfillment**" - "**VIEW**"
      parameters:
        - name: From
          in: query
          description: 'From Date (format: yyyy/mm/dd)'
          required: false
          schema:
            type: string
            format: date
        - name: To
          in: query
          description: 'To Date (format: yyyy/mm/dd)'
          required: false
          schema:
            type: string
            format: date
        - name: PageNumber
          in: query
          description: The number of page data to be displayed
          required: true
          schema:
            type: integer
          example: 1
        - name: PageSize
          in: query
          description: The number of rows returned by the API
          required: true
          schema:
            type: integer
          example: 20
        - name: Fulfillment
          in: query
          description: Status of Fulfillment
          schema:
            pattern: Partial / Unsent
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name that fultillment later
                    Number:
                      type: string
                      description: Invoice Number
                    Customer:
                      type: string
                      description: Customer's name
                    Created:
                      type: string
                      description: Invoice Created Time
                    SalesNTax:
                      type: number
                      description: Total Amount of Sales and Tax
                    Payment:
                      type: string
                      description: Payment State
                    Fulfillment:
                      type: string
                      description: Fulfillment State
              example:
                - Outlet: Outlet1
                  Number: 22.08.029
                  Customer: Hendry W
                  Created: '2022-03-31T11:31:31.783'
                  SalesNTax: 1000000
                  Payment: Paid
                  Fulfillment: Partial
  /PickList/Number:
    get:
      tags:
        - Fulfillment
      operationId: GetPickListbyNumber
      summary: Get PickList by Number
      description: |-
        Get PickList Detail by Number 

        Required Group Role: "**Fulfillment**" - "**VIEW**"
      parameters:
        - name: Number
          in: query
          description: PickList Number
          required: true
          schema:
            type: string
        - name: FulfillmentOutlet
          in: query
          description: Outlet that send the product of order created
          required: true
          schema:
            type: string
        - name: OrderOutlet
          in: query
          description: Outlet that received order from customer
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: PickList ID
                    Date:
                      type: string
                      description: Picklist created time
                    Number:
                      type: string
                      description: PickList Number
                    OrderOutlet:
                      type: string
                      description: Outlet that received order from customer
                    FulfillmentOutlet:
                      type: string
                      description: Outlet that is assigned to send the Product
                    CreatorID:
                      type: string
                      description: User's picklist created
                    State:
                      type: string
                      description: State of Picklist (Picked /Assigned / Packed / Shipped)
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                        Mobile:
                          type: string
                        Email:
                          type: string
                        Address:
                          type: string
                      description: Data of Customer
                    Variants:
                      type: array
                      description: Variant of picklist
                      items:
                        type: object
                        properties:
                          Name:
                            type: string
                          Code:
                            type: string
                          Qty:
                            type: integer
                    Recipient:
                      type: object
                      properties:
                        Name:
                          type: string
                        Phone:
                          type: string
                        City:
                          type: string
                        Address:
                          type: string
                      description: Detail of Recipient
                    Note:
                      type: string
                      description: Picklist note
                example:
                  - ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                    Date: '2022-08-31T13:29:07.29'
                    Number: 22.12.0001
                    OrderOutlet: Outlet1
                    FulfillmentOutlet: Outlet2
                    CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                    State: Picked /Packed /Shipped
                    Customer:
                      Name: Ventines
                      Mobile: '0811541541'
                      Email: ventines@gmail.com
                      Address: Jl. Muara Karang Raya
                    Variants:
                      - Name: Bottle
                        Code: Btl01
                        Qty: 1
                    Recipient:
                      Name: Ventines
                      Phone: '0811541541'
                      City: Jakarta
                      Address: Jl. Muara Karang Raya
                    Note: Ready to send
                  - ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                    Date: '2022-08-31T13:29:07.29'
                    Number: 22.12.0001
                    OrderOutlet: Outlet1
                    FulfillmentOutlet: Outlet2
                    CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                    State: Picked /Packed /Shipped
                    Customer:
                      Name: Ventines
                      Mobile: '0811541541'
                      Email: ventines@gmail.com
                      Address: Jl. Muara Karang Raya
                    Variants:
                      - Name: Cap
                        Code: CAP01
                        Qty: 1
                    Recipient:
                      Name: Ventines
                      Phone: '0811541541'
                      City: Jakarta
                      Address: Jl. Muara Karang Raya
                    Note: Ready to send
              example:
                - ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                  Date: '2022-08-31T13:29:07.29'
                  Number: 22.12.0001
                  OrderOutlet: Outlet1
                  FulfillmentOutlet: Outlet2
                  CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                  State: Picked /Packed /Shipped
                  Customer:
                    Name: Ventines
                    Mobile: '0811541541'
                    Email: ventines@gmail.com
                    Address: Jl. Muara Karang Raya
                  Variants:
                    - Name: Bottle
                      Code: Btl01
                      Qty: 1
                  Recipient:
                    Name: Ventines
                    Phone: '0811541541'
                    City: Jakarta
                    Address: Jl. Muara Karang Raya
                  Note: Ready to send
                - ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                  Date: '2022-08-31T13:29:07.29'
                  Number: 22.12.0001
                  OrderOutlet: Outlet1
                  FulfillmentOutlet: Outlet2
                  CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                  State: Picked /Packed /Shipped
                  Customer:
                    Name: Ventines
                    Mobile: '0811541541'
                    Email: ventines@gmail.com
                    Address: Jl. Muara Karang Raya
                  Variants:
                    - Name: Cap
                      Code: CAP01
                      Qty: 1
                  Recipient:
                    Name: Ventines
                    Phone: '0811541541'
                    City: Jakarta
                    Address: Jl. Muara Karang Raya
                  Note: Ready to send
  /PickList:
    get:
      tags:
        - Fulfillment
      operationId: GetPickList
      summary: Get PickList
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/PickList/p)**


        <br>

        Get list of PickList


        Required Group Role: "**Fulfillment**" - "**VIEW**"
      parameters:
        - name: From
          in: query
          description: 'From Date (format: yyyy/mm/dd)'
          required: true
          schema:
            type: string
            format: date
        - name: To
          in: query
          description: 'To Date (format: yyyy/mm/dd)'
          required: true
          schema:
            type: string
            format: date
        - name: ' PageNumber'
          in: query
          description: The number of page data to be displayed
          required: true
          schema:
            type: integer
        - name: PageSize
          in: query
          description: The number of rows returned by the API
          required: true
          schema:
            type: integer
        - name: FulfillmentOutlet
          in: query
          description: Outlet that is assigned to send the Product
          schema:
            type: string
        - name: OrderOutlet
          in: query
          description: Outlet that received order from customer
          schema:
            type: string
        - name: State
          in: query
          description: >-
            State of Fulfillment. If property not send, it will shown state of
            All fulfillment list
          schema:
            pattern: Picked / Assigned / Packed / Shipped
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    FulfillmentOutlet:
                      type: string
                      description: Outlet that is assigned to send the Product
                    OrderOutlet:
                      type: string
                      description: Outlet that received order from customer
                    Number:
                      type: string
                      description: Order Number
                    Customer:
                      type: string
                      description: Customer's name
                    Created:
                      type: string
                      description: Pick Created Time
                x-examples:
                  example-1:
                    - FulfillmentOutlet: Outlet2
                      OrderOutlet: Outlet1
                      Number: 22.08.029
                      Customer: Hendry W
                      Created: '2022-03-31T11:31:31.783'
              example:
                - FulfillmentOutlet: Outlet2
                  OrderOutlet: Outlet1
                  Number: 22.08.029
                  Customer: Hendry W
                  Created: '2022-03-31T11:31:31.783'
    post:
      tags:
        - Fulfillment
      summary: Create PickList
      description: |-
        Create New Pick from Order Outlet

        Required Group Role: "**Fulfillment**" - "**CREATED**"
      operationId: post-Picklist
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - OrderOutlet
                - Variants
              type: object
              properties:
                OrderOutlet:
                  type: string
                  description: Outlet that received order from customer
                Number:
                  type: string
                  description: Order Number
                Note:
                  type: string
                  description: Note of Pick
                Variants:
                  type: array
                  items:
                    required:
                      - Code
                      - Fulfillment
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Variant Code
                      Fulfillment:
                        type: string
                        description: Outlet that is assigned to send the Product
            example:
              OrderOutlet: Outlet1
              Number: 22.08.029
              Note: ''
              Variants:
                - Code: CAP01
                  Fulfillment: Outlet2
                - Code: SHI01
                  Fulfillment: Outlet4
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ListID:
                    type: array
                    items:
                      type: string
                  Message:
                    type: string
              example:
                ListID:
                  - aad4a789-b802-49c1-b66f-f45fbc7ce17f
                  - ccd4a789-3w02-4931-a66f-f45fbwf2e17f
                Message: 2 records created
    delete:
      tags:
        - Fulfillment
      summary: Delete PickList
      description: Delete existing Picklist
      operationId: delete-Picklist
      requestBody:
        content:
          application/json:
            schema:
              required:
                - FulfillmentOutlet
                - Number
                - OrderOutlet
              type: object
              properties:
                FulfillmentOutlet:
                  type: string
                  description: Outlet that is assigned to send the Product
                OrderOutlet:
                  type: string
                  description: Outlet that received order from customer
                Number:
                  type: string
                  description: Order Number
            example:
              FulfillmentOutlet: Outlet2
              OrderOutlet: Outlet1
              Number: 22.08.029
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Pick Fulfillment deleted
  /PickList/ID/{id}:
    get:
      tags:
        - Fulfillment
      operationId: GetPickListbyID
      summary: Get PickList by ID
      description: |-
        Get PickList Detail by ID

        Required Group Role: "**Fulfillment**" - "**VIEW**"
      parameters:
        - name: id
          in: path
          description: PickListID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: PickList ID
                  Date:
                    type: string
                    description: Picklist created time
                  Number:
                    type: string
                    description: PickList Number
                  OrderOutlet:
                    type: string
                    description: Outlet that received order from customer
                  FulfillmentOutlet:
                    type: string
                    description: Outlet that is assigned to send the Product
                  CreatorID:
                    type: string
                    description: User's picklist created
                  State:
                    type: string
                    description: State of Picklist (Picked /Assigned / Packed / Shipped)
                  AssignTo:
                    type: string
                    description: LoginID that assigned a pick
                  Customer:
                    type: object
                    properties:
                      Name:
                        type: string
                      Mobile:
                        type: string
                      Email:
                        type: string
                      Address:
                        type: string
                    description: Data of Customer
                  Variants:
                    type: array
                    description: Variant of picklist
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                        Code:
                          type: string
                        Qty:
                          type: integer
                  Recipient:
                    type: object
                    properties:
                      Name:
                        type: string
                      Phone:
                        type: string
                      City:
                        type: string
                      Address:
                        type: string
                    description: Detail of Recipient
                  Note:
                    type: string
                    description: Picklist note
              example:
                ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                Date: '2022-08-31T13:29:07.29'
                Number: 22.12.0001
                OrderOutlet: Outlet1
                FulfillmentOutlet: Outlet2
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                State: Picked /Assigned / Packed /Shipped
                Customer:
                  Name: Ventines
                  Mobile: '0811541541'
                  Email: ventines@gmail.com
                  Address: Jl. Muara Karang Raya
                Variants:
                  - Name: Cap
                    Code: CAP01
                    Qty: 1
                  - Name: Bottle
                    Code: Btl01
                    Qty: 1
                Recipient:
                  Name: Ventines
                  Phone: '0811541541'
                  City: Jakarta
                  Address: Jl. Muara Karang Raya
                Note: Ready to send
  /PickList/Assign:
    put:
      tags:
        - Fulfillment
      summary: Assign Picklist
      description: >-
        Assigned User.LoginID picklist


        Required Group Role: "**Fulfillment**" - "**EDIT**"


        *Recommended to use Request example by PickListID cause it more faster
        and specific
      operationId: pack-picklist
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: WithPicklistID
                  type: array
                  items:
                    required:
                      - PickListID
                      - AssignTo
                    type: object
                    properties:
                      PickListID:
                        type: string
                        description: PickList ID
                      AssignTo:
                        type: string
                        description: >-
                          Name of User.LoginID that assigned the picklist (if
                          property empty, it will be assigned to active UserID)
                  example:
                    - PickListID: 2a346a70-d7c5-4e4b-947c-300f516b1560
                      AssignTo: Nayeon
                    - PickListID: d0d8dc77-2b28-49a9-b78a-de102a3081b7
                      AssignTo: Jihyo
                - title: WithPicklistNumber
                  type: array
                  items:
                    required:
                      - FulfillmentOutlet
                      - Number
                      - OrderOutlet
                    type: object
                    properties:
                      FulfillmentOutlet:
                        type: string
                        description: Outlet that is assigned to send the Product
                      OrderOutlet:
                        type: string
                        description: Outlet that received order from customer
                      Number:
                        type: string
                        description: Number of PickList Created
                      AssignTo:
                        type: string
                        description: >-
                          Name of User.LoginID that assigned the picklist (if
                          property empty, it will be assigned to active UserID)
                  example:
                    - FulfillmentOutlet: Outlet2
                      OrderOutlet: Outlet1
                      Number: 22.08.029
                      AssignTo: Nayeon
                    - FulfillmentOutlet: Outlet2
                      OrderOutlet: Outlet1
                      Number: 22.08.030
                      AssignTo: Jihyo
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                required:
                  - Message
                type: object
                properties:
                  Message:
                    minLength: 1
                    type: string
                description: ''
              example:
                Message: 2 data successfully updated from pick to assigned
      x-internal: false
      x-codegen-request-body-name: body
  /PickList/Pack:
    put:
      tags:
        - Fulfillment
      summary: Pack PickList
      description: |-
        Set Assigned to Pack or Pick to Pack PickList

        Required Group Role: "**Fulfillment**" - "**CREATED**"
      operationId: pack-picklist-unique
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                required:
                  - FulfillmentOutlet
                  - Number
                  - OrderOutlet
                type: object
                properties:
                  FulfillmentOutlet:
                    type: string
                    description: Outlet that is assigned to send the Product
                  OrderOutlet:
                    type: string
                    description: Outlet that received order from customer
                  Number:
                    type: string
                    description: Number of Order Created
            example:
              - FulfillmentOutlet: Outlet2
                OrderOutlet: Outlet1
                Number: 22.08.029
              - FulfillmentOutlet: Outlet1
                OrderOutlet: Outlet1
                Number: 22.08.029
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                required:
                  - Message
                type: object
                properties:
                  Message:
                    minLength: 1
                    type: string
                description: ''
              example:
                Message: 3 data successfully updated from pick to pack
  /PickList/Ship:
    put:
      tags:
        - Fulfillment
      operationId: shipPickListUnique
      summary: Ship PickList
      description: |-
        Set Pack to Ship PickList

        Required Group Role: "**Fulfillment**" - "**CREATED**"
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                required:
                  - FulfillmentOutlet
                  - Number
                  - OrderOutlet
                type: object
                properties:
                  FulfillmentOutlet:
                    type: string
                    description: Outlet that is assigned to send the Product
                  OrderOutlet:
                    type: string
                    description: Outlet that received order from customer
                  Number:
                    type: string
                    description: Number of Order Created
            example:
              - FulfillmentOutlet: Outlet2
                OrderOutlet: Outlet1
                Number: 22.08.029
              - FulfillmentOutlet: Outlet1
                OrderOutlet: Outlet1
                Number: 22.08.029
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                required:
                  - Message
                type: object
                properties:
                  Message:
                    minLength: 1
                    type: string
                description: ''
              example:
                Message: 3 data successfully updated from pick to pack
  /Token:
    post:
      tags:
        - Deprecated API
      operationId: GetTokenbypassword
      summary: Get Token by Password
      description: "Get OAuth2 AccessToken to access our API\n\nWe provide 2 ways to obtain the access_token\n\n1. Send client credentials in body\n   \n\t Content-Type: application/json\n \n2. Send as Basic Auth Header\n   \n\t Content-Type: application/x-www-form-urlencoded\n\t \n   Concatenate client_id:client_secret then encode to base64 string, use Basic Authentication\n\t \n\t ![](https://res.cloudinary.com/pos/image/upload/v1610001663/Others/basic_auth.png)\n\t"
      requestBody:
        description: Get Token from Username and Password
        content:
          application/json:
            schema:
              required:
                - client_id
                - client_secret
              type: object
              properties:
                client_id:
                  type: string
                  description: Username
                client_secret:
                  type: string
                  description: Password
          application/x-www-form-urlencoded:
            schema:
              required:
                - client_id
                - client_secret
              type: object
              properties:
                client_id:
                  type: string
                  description: Username
                client_secret:
                  type: string
                  description: Password
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                token_type: Bearer
                expires_in: 43200
                expiredAt: '2020-05-13T04:52:04.5969178+07:00'
                access_token: >-
                  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4iLCJVc2VySUQiOiJmYjIyOTJkNy01Mjk3LTRjOTQtYjEzMy1lY2MxYTk4NTlhZjYiLCJTYWxlc0lEIjoiIiwiTGl2ZUNoYXRFbmFibGVkIjoiRmFsc2UiLCJUeXBlIjoiTm9ybWFsIiwiZGF0YVJhbmdlVHlwZSI6IkRheXMiLCJkYXRhRGF5c1JhbmdlIjowLCJkYXRhRGF0ZUZyb20iOiIwMS8wMS8wMDAxIiwiZGF0YURhdGVUbyI6IjAxLzAxLzAwMDEiLCJTZXNzaW9uSUQiOiI5NzI1ZDU5Ny04N2Y4LTQwZGUtOTlmNS1hMTdjNThjODc3YjMiLCJFbWFpbCI6InRlc3RAZGVhbHBvcy5jb20iLCJFbnRpdHlBY2Nlc3NKU09OIjoiW3tcImVcIjpcIjhiZGEwYTg0LWQ2NDYtNDFhZi1iNTFmLTQ0YmE0OGEwZjIxNFwiLFwiYVwiOjN9LHtcImVcIjpcIjYyYzNiN2E5LWQ0MWMtNDYxNS04ZjQzLTU3MmQ4ZmU0Nzc4YlwiLFwiYVwiOjN9LHtcImVcIjpcIjMzYThiNTliLTlkZjgtNDU3Mi05NTUyLTdhNmRlM2RmYThjYVwiLFwiYVwiOjN9LHtcImVcIjpcIjhkOTEzY2NjLTBiZDAtNGZlYi1iODUyLTg5ZjIwNzgyNDkzNVwiLFwiYVwiOjN9LHtcImVcIjpcImRhODZlYjFlLTk5NDUtNGQ3Yy04ZDA0LTk0M2MyZDI3ZTU0MVwiLFwiYVwiOjF9LHtcImVcIjpcIjJmYzlhMGY4LTg5Y2ItNGRmOS04MTgyLWFjM2U2ZmU2MGFkY1wiLFwiYVwiOjN9LHtcImVcIjpcIjk0Mzc1NmI4LTU4MDItNDA2ZC1iZjUyLWIxMzU2MTVkODdhN1wiLFwiYVwiOjN9LHtcImVcIjpcImJhM2Y1NGNkLThjZDgtNDUwYi05MWU1LWI2MjhiZGI4YWE4NFwiLFwiYVwiOjN9LHtcImVcIjpcIjhmZTBmODJhLTRkNDItNDM3YS1hMmM0LWM0N2NjYWRhYjUyN1wiLFwiYVwiOjN9LHtcImVcIjpcImY5ODhjMzRjLTI0ZWQtNGY1YS05YzI3LWU5MzM1ZTRiZmY2MFwiLFwiYVwiOjN9LHtcImVcIjpcIjBlOGJhYWI5LTE4YjUtNGEzYS1hYTEyLWZiN2MyNzczMjA5ZVwiLFwiYVwiOjN9XSIsIkVudGl0eUFjY2Vzc1N0b3JhZ2UiOiJKV1RUb2tlbiIsIklzQXV0aGVudGljYXRlZCI6InRydWUiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiUHJvZml0IiwiQ29udGFjdHMiLCJNYW51ZmFjdHVyZSIsIkRldmVsb3BlclRvb2xzIiwiQ3VzdG9tZXJEaXNwbGF5IiwiT3JkZXJzIiwiVXNlcnMiLCJQYXltZW50IiwiU2VsbCIsIlByb2R1Y3RzIiwiSW52ZW50b3J5MiIsIkFjdGl2aXR5IiwiS2l0Y2hlbkRpc3BsYXkiLCJTZXR1cCIsIkRlYnQiLCJBY2NvdW50aW5nIiwiUHJvbW90aW9uIiwiVHJlYXRtZW50IiwiQnV5IiwiVG9vbHMiLCJEZWxpdmVyeSIsIlByb2ZpbGUiLCJPdXRsZXRzIiwiSW52ZW50b3J5IiwiU2VydmljZSIsIkJpciIsIlJlcG9ydCIsIkFkanVzdG1lbnQiLCJHbG9iYWxFZGl0b3IiLCJFeHBvcnQiLCJBZGp1c3RtZW50RWRpdG9yIiwiQ29udGFjdHNFZGl0b3IiLCJEZWJ0RWRpdG9yIiwiUGF5bWVudEVkaXRvciIsIkludmVudG9yeUVkaXRvciIsIkFjY291bnRpbmdFZGl0b3IiLCJEZWxpdmVyeUVkaXRvciIsIlJlcG9ydEFkdmFuY2VkIiwiVHJlYXRtZW50RWRpdG9yIiwiUHJvbW90aW9uRWRpdG9yIiwiUHJpY2Vib29rRWRpdG9yIiwiRGVsaXZlcnlSZXF1ZXN0RWRpdG9yIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiVHJlYXRtZW50SW5jZW50aXZlIiwiQ29zdCIsIlBheW1lbnRJbnB1dCIsIkxveWFsdHlQb2ludEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiSW52ZW50b3J5UHJvZHVjdENvdW50IiwiU2hhcmVQYWNrYWdlRWRpdG9yIiwiU2FsZXNtYW5FZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiVHJlYXRtZW50Tm90ZSIsIlJldHVybiIsIkRlbGl2ZXJ5RGF0ZUVkaXRvciIsIkRpc2NvdW50IiwiQnVuZGxpbmdQcmljZSIsIkNvbW1pc3Npb24iLCJDT0FSZXN0cmljdGlvbiJdLCJleHAiOjE1ODkzMjAzMjQsImlzcyI6ImRlYWxwb3MuY29tIiwiYXVkIjoiZGVhbHBvcy5jb20ifQ.2ysQj53ZveYxj8DvrX22mc6WFJe7KDcQt0adXRo-Btg
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The username and/or password is invalid!
                StackTrace: "   at POS.BLL.JWT.AuthTokenProcessor.Login(String username, String password, GenerateTokenType generateType) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\JWT\\AuthTokenProcessor.cs:line 151\r\n   at POS.BLL.JWT.AuthTokenProcessor.RequestBody(JsonElement request, GenerateTokenType generateType) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\JWT\\AuthTokenProcessor.cs:line 40\r\n   at POS.WEB.Controllers.v3.TokenController.Post(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\TokenController.cs:line 66"
      deprecated: true
      security: []
      x-codegen-request-body-name: body
  /Invoice:
    post:
      tags:
        - Invoice
      operationId: CreateInvoice
      summary: Create an Invoice
      description: |-
        Create an Invoice

        You must have "**Create**" role in "**Sell**" Module
      parameters:
        - name: UpdateCustomer
          in: header
          description: Allow to update Customer Address when value is "true".
          allowEmptyValue: true
          schema:
            type: string
            format: boolean
            default: 'false'
        - name: WriteOff
          in: header
          description: >-
            Allow to WriteOff remaining of total amount payment when value is
            "true"
          allowEmptyValue: true
          schema:
            type: string
            format: boolean
            default: 'false'
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Variant Code
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    LogisticServiceCode: JNE-R
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: C001
                        Note: Complete payment
                - title: With Variant ID
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - VariantID
                          - Quantity
                          - Price
                        properties:
                          VariantID:
                            type: string
                            description: >-
                              Variant.ID (GUID format). When this is supplied,
                              Code property is not required.
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - VariantID: d23adf38-6739-4083-ac7b-4c665b6ba76f
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - VariantID: abcddf38-6739-4083-ac7b-4c665b6ba88f
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: null
                        Note: null
                - title: With Outlet ID
                  required:
                    - OutletID
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: >-
                        Outlet.ID (32 character GUID). Not required when
                        Outlet.Name is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    LogisticServiceCode: JNE-R
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: C001
                        Note: Complete payment
                - title: With Fulfillment
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    FulfillmentOutlet:
                      type: string
                      description: >-
                        Where fulfillment is done from a different Outlet. When
                        this property is null or not specified, it will get data
                        from property "Outlet".
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    FulfillmentOutlet: Outlet2
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: null
                        Note: null
                - title: With Reference Invoice Number
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    ReferenceOutlet:
                      type: string
                      description: Outlet of Invoice Return created (optional).
                    ReferenceInvoiceNumber:
                      type: string
                      description: >-
                        Another Invoice associated with this Invoice. Example:
                        SalesReturn scenario, null when it is a normal Sales
                        transaction.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    ReferenceOutlet: Outlet1
                    ReferenceInvoiceNumber: 20.05.00002
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: null
                        Note: null
                - title: With Reference Invoice ID
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    ReferenceInvoiceID:
                      type: string
                      description: ID of Invoice that wants to return (optional).
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    ReferenceInvoiceID: 0db3e0cd-5615-4d4b-8122-fd8790101e71
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: null
                        Note: null
                - title: With Serialized Variant (New)
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Serial:
                            type: array
                            items:
                              type: object
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    FulFillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 2
                        Price: 50000
                        Discount: 0
                        Serial:
                          - Number: S001
                            Quantity: 1
                          - Number: S002
                            Quantity: 1
                        Note: Good Quality
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: C001
                        Note: Complete payment
                - title: With Serialized Variant (Old)
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Register: Outlet1
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    FulFillment: Sent
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 2
                        Price: 50000
                        Discount: 0
                        Note: '[S001,S002]'
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: C001
                        Note: Complete payment
                - title: With Recipient
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    DueDate:
                      type: string
                      format: date
                      description: Due date of invoice period (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number associated with a specific invoice issued to a
                        customer from the marketplace channel. Backwards
                        compatibility with property PurchaseOrderNumber.
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Code
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                    Recipient:
                      type: object
                      description: Input when choosing later fulfillment.
                      properties:
                        Name:
                          type: string
                          description: Recipient Name.
                        Address:
                          type: string
                          description: Recipient address.
                        Phone:
                          type: string
                          description: Recipient phone number.
                        City:
                          type: string
                          description: Recipient city location.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    DueDate: '2020-06-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Coupon: 887799
                    Fulfillment: Unsent
                    LogisticServiceCode: JNE-R
                    Note: Invoice Note
                    PointUsed: 5
                    ReferenceNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Mobile: 81514515156
                      Code: HW021
                      Address: Muara Karang no.88
                    Variants:
                      - Code: 200535
                        Quantity: 20
                        Price: 50000
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: 10
                        Price: 50000
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: 145000
                        Method: Cash
                        Code: C001
                        Note: Complete payment
                    Recipient:
                      Name: Ëzzan
                      Address: Pejaten No. 21
                      Phone: 8154655365
                      City: Jakarta
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Invoice ID that has been made
                  Number:
                    type: string
                    description: Invoice number that has been made
              example:
                ID: bc85c04d-8e6d-4592-bc8d-85f3d854b156
                Number: 18.10.00009
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '409':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  There is already an invoice / a sales order with number
                  20.05.00001 in outlet Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    get:
      tags:
        - Deprecated API
      summary: List Invoices
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Invoice/p)**


        <br>

        Get List of Invoices.


        Required Group Role: "**Orders**" - "**View**"


        Please substitute this API with API **[List Invoice Multiple
        Outlet](https://developer.dealpos.com/docs/developer-api/08997cb1659bc-list-invoice-multiple-outlet)**
      operationId: GetInvoicelist
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: From Date. this is primary key for the object
                  default: 'format : yyyy-mm-dd'
                To:
                  type: string
                  description: To Date. this is primary key for the object
                  default: 'format: yyyy-mm-dd'
                PageNumber:
                  type: integer
                  description: The number of page data to be displayed
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
                OutletID:
                  type: string
                  description: Guid of Outlet ID
                  x-stoplight:
                    id: jpayr6mjkgrb1
                Outlet:
                  type: string
                  description: >-
                    Outlet name. (Only for access outlet Read/Write that given
                    to the user)
                Tag:
                  type: array
                  description: >-
                    Channel Tagging system. (ex:Offline / Whatsapp / Shopee /
                    Tokopedia) used in marketplace.dealpos.app. 
                  items:
                    type: object
                Payment:
                  type: string
                  description: Payment State
                  default: Paid , Partial , Unpaid
                Fulfillment:
                  type: string
                  description: Fulfillment State
                  default: Sent, Unsent
                Email:
                  type: string
                  description: Email address of customer
                Mobile:
                  type: string
                  description: Phone or mobile phone number of customer
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Invoice ID
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Number Of invoice info
                    Customer:
                      type: string
                      description: Customer Name
                    Date:
                      type: string
                      description: Invoice Date Transaction Date
                    EventDate:
                      type: string
                      description: Due date of shipping delivery
                    Due:
                      type: string
                      description: 'Due date of invoice '
                    Amount:
                      type: number
                      description: Total amount transaction
                    Payment:
                      type: string
                      description: Payment State of invoice
                      enum:
                        - Unpaid
                        - Partial
                        - Paid
                        - Exceed
                    Fulfillment:
                      type: string
                      description: Fulfillment Status of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Created:
                      type: string
                      description: Invoice created time
              example:
                - ID: 3de705c4-53a0-4a66-8ab1-f9737e3ad6fb
                  Outlet: Outlet1
                  Number: 18.10.00009
                  Customer: Ferdi
                  Date: '2018-10-17T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 120000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
                - ID: 3de7eve4-53a0-tsw6-8ab1-f9737e3adweb
                  Outlet: Outlet1
                  Number: 18.10.00002
                  Customer: Ferdi
                  Date: '2018-10-16T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 150000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                x-examples:
                  Example 1:
                    Message: You are not allowed to access Outlet1
            Example:
              example:
                Message: You are not allowed to access Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      deprecated: true
      x-codegen-request-body-name: body
    put:
      tags:
        - Invoice
      operationId: UpdateInvoice
      summary: Update an Invoice
      description: >-
        Update an Invoices based on Number


        You must have "**EDIT**" role in "**Orders**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Outlet
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet.Name. Not required when Outlet.ID is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    DueDate:
                      type: string
                      format: date
                      description: Due date of invoice period (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Sales:
                      type: number
                      description: Total sales.
                    Surcharge:
                      type: number
                      description: Surcharge amount.
                    SalesNTax:
                      type: number
                      description: Total amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    FulfillmentOutlet:
                      type: string
                      description: >-
                        Where fulfillment is done from a different Outlet. When
                        this property is null or not specified, it will get data
                        from property "Outlet".
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          PriceOriginal:
                            type: number
                            description: >-
                              Original Unit Price per item. If value is less
                              than Price, it does not take effect.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                          VariantID:
                            type: string
                            description: >-
                              Variant.ID (GUID format). When this is supplied,
                              Code property is not required.
                          Serial:
                            type: array
                            items:
                              type: object
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                          ReferenceNumber:
                            type: string
                            description: >-
                              Number associated with a specific invoice issued
                              to a customer from the marketplace channel.
                              Backwards compatibility with property
                              PurchaseOrderNumber.
                    Recipient:
                      type: object
                      description: Input when choosing later fulfillment.
                      properties:
                        Name:
                          type: string
                          description: Recipient Name.
                        Address:
                          type: string
                          description: Recipient address.
                        Phone:
                          type: string
                          description: Recipient phone number.
                        City:
                          type: string
                          description: Recipient city location.
                  example:
                    Outlet: Outlet1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Fulfillment: Sent
                    PurchaseOrderNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                    Variants:
                      - Code: '200535'
                        Quantity: '10'
                        Price: '50000'
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: '10'
                        Price: '50000'
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: '100000'
                        Method: Cash
                        Code: null
                        Note: null
                - title: With Outlet ID
                  required:
                    - OutletID
                    - Number
                    - Date
                    - Tag
                    - TaxType
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: >-
                        Outlet.ID (32 character GUID). Not required when
                        Outlet.Name is provided.
                    Number:
                      type: string
                      description: Invoice Number.
                    Date:
                      type: string
                      format: date
                      description: Date of customer invoice created (YYYY-MM-DD).
                    DueDate:
                      type: string
                      format: date
                      description: Due date of invoice period (YYYY-MM-DD).
                    SalesPerson:
                      type: string
                      description: Sales Person name.
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex: Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        compatibility with property request "SalesType".
                    TaxType:
                      type: string
                      description: Tax Type.
                    Register:
                      type: string
                      description: Register Name.
                    Discount1:
                      type: integer
                      description: Discount 1 percentage.
                    Discount2:
                      type: integer
                      description: Discount 2 percentage.
                    DiscountAmount:
                      type: number
                      description: Discount amount.
                    Sales:
                      type: number
                      description: Total sales.
                    Surcharge:
                      type: number
                      description: Surcharge amount.
                    SalesNTax:
                      type: number
                      description: Total amount.
                    Coupon:
                      type: string
                      description: >-
                        Promotion Coupon Code. Balance will be deducted.
                        Discount must exist in request PAYLOAD according to the
                        discount value.
                    Fulfillment:
                      type: string
                      enum:
                        - Sent
                        - Unsent
                      description: >-
                        Delivery Status. Backwards compatibility with property
                        "Delivery". Default: Sent, Unsent.
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option.
                    Note:
                      type: string
                      description: Invoice note.
                    PointUsed:
                      type: integer
                      description: >-
                        The number of points to redeem (when redeemed points is
                        > 0, DiscountAmount will be auto calculated by the
                        system based on RedeemPointValue configuration).
                    FulfillmentOutlet:
                      type: string
                      description: >-
                        Where fulfillment is done from a different Outlet. When
                        this property is null or not specified, it will get data
                        from property "Outlet".
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer.
                        Email:
                          type: string
                          description: Email of Customer.
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer.
                        Code:
                          type: string
                          description: Code of Customer.
                        Address:
                          type: string
                          description: Address of Customer.
                    Variants:
                      type: array
                      items:
                        type: object
                        required:
                          - Quantity
                          - Price
                        properties:
                          Code:
                            type: string
                            description: >-
                              Variant Code (Please fill Variant Code if
                              VariantID is empty).
                          Quantity:
                            type: number
                            description: Quantity of item that the customer bought.
                          Price:
                            type: number
                            description: Unit Price per item.
                          PriceOriginal:
                            type: number
                            description: >-
                              Original Unit Price per item. If value is less
                              than Price, it does not take effect.
                          Discount:
                            type: number
                            description: Discount percentage.
                          Note:
                            type: string
                            description: Note per Item.
                          VariantID:
                            type: string
                            description: >-
                              Variant.ID (GUID format). When this is supplied,
                              Code property is not required.
                          Serial:
                            type: array
                            items:
                              type: object
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Amount:
                            type: number
                            description: Amount to be paid.
                          Method:
                            type: string
                            description: Method of payment.
                          Code:
                            type: string
                            description: Payment Code.
                          Note:
                            type: string
                            description: Payment Note.
                          ReferenceNumber:
                            type: string
                            description: >-
                              Number associated with a specific invoice issued
                              to a customer from the marketplace channel.
                              Backwards compatibility with property
                              PurchaseOrderNumber.
                    Recipient:
                      type: object
                      description: Input when choosing later fulfillment.
                      properties:
                        Name:
                          type: string
                          description: Recipient Name.
                        Address:
                          type: string
                          description: Recipient address.
                        Phone:
                          type: string
                          description: Recipient phone number.
                        City:
                          type: string
                          description: Recipient city location.
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.05.00001
                    Date: '2020-05-27'
                    SalesPerson: Sales 1
                    Tag: Tokopedia
                    TaxType: No Tax
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    Fulfillment: Sent
                    PurchaseOrderNumber: TKP001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                    Variants:
                      - Code: '200535'
                        Quantity: '10'
                        Price: '50000'
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: '10'
                        Price: '50000'
                        Discount: 0
                        Note: Item 2
                    Payments:
                      - Amount: '100000'
                        Method: Cash
                        Code: null
                        Note: null
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Invoice ID that has been edited
                description: Invoice ID
              example:
                ID: e9e1edbd-3e37-4845-b243-e680fbd4b30c
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: Invoice 20.05.00001 not found in Outlet Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Invoice
      operationId: DeleteInvoice
      summary: Delete an Invoice
      description: |-
        Delete an Invoice based on Number

        You must have "**DELETE**" role in "**Orders**" Module
      requestBody:
        description: >-
          Request can be send with payload Outlet+Number / OutletID + Number
          /InvoiceID only
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Outlet
                    - Number
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name.
                    Number:
                      type: string
                      description: Invoice Number. this is primary key for the object
                  example:
                    Outlet: Outlet1
                    Number: LM3002
                - title: With Outlet ID
                  required:
                    - OutletID
                    - Number
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: poj237j9nn1h8
                    Number:
                      type: string
                      description: Invoice Number. this is primary key for the object
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: LM3002
                - title: With Invoice ID
                  required:
                    - InvoiceID
                  type: object
                  properties:
                    InvoiceID:
                      type: string
                      description: ID of Invoice
                      x-stoplight:
                        id: cs3s7u4da735d
                  example:
                    InvoiceID: 8846708-83883-48b5-9b8a-848c378b5af8
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: Invoice has been deleted
              example: Invoice has been delete!{}
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Invoice/MultipleOutlet:
    get:
      tags:
        - Invoice
      operationId: GetInvoiceListMultipleOutlet
      summary: List Invoice Multiple Outlet
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Invoice List by Multiple Outlet
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Email
                    - Mobile
                    - Outlet
                    - PageNumber
                    - PageSize
                    - Tag
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    Outlet:
                      type: array
                      description: >-
                        Outlet name. (Only for access outlet Read/Write that
                        given to the user)
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging system.(ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    PaymentState:
                      type: string
                      description: |
                        Payment status / progress of the invoice
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: |
                        Delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Email:
                      type: string
                      description: Email address of customer
                      x-stoplight:
                        id: jcnlvdltd7cqw
                    Mobile:
                      type: string
                      description: Phone or mobile phone number of customer
                      x-stoplight:
                        id: jcnlvdltd7cqw
                    Bin:
                      type: boolean
                      description: Invoice in bin or not
                      default: false
                    Note:
                      type: string
                      description: Invoice Note
                      x-stoplight:
                        id: wx102ua64we6g
                  example:
                    PageNumber: 1
                    PageSize: 20
                    Outlet:
                      - Outlet1
                      - Outlet2
                    Tag:
                      - Tokopedia
                      - Shopee
                    PaymentState: Paid
                    Fulfillment: Sent
                    Email: johndoe@email.com
                    Mobile: '08112345'
                    Bin: false
                    Note: Invoice Note
                - title: With List Outlet ID
                  required:
                    - Email
                    - ListOutletID
                    - Mobile
                    - PageNumber
                    - PageSize
                    - Tag
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    ListOutletID:
                      type: array
                      description: Array of List Outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: kv0na2k8qz0iu
                    Tag:
                      type: array
                      description: 'Channel Tagging system.(ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    PaymentState:
                      type: string
                      description: |
                        Payment status / progress of the invoice
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: |
                        Delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Email:
                      type: string
                      description: Email address of customer
                      x-stoplight:
                        id: jcnlvdltd7cqw
                    Mobile:
                      type: string
                      description: Phone or mobile phone number of customer
                      x-stoplight:
                        id: jcnlvdltd7cqw
                    Bin:
                      type: boolean
                      description: Invoice in bin or not
                      default: false
                    Note:
                      type: string
                      description: Invoice Note
                      x-stoplight:
                        id: wx102ua64we6g
                  example:
                    PageNumber: 1
                    PageSize: 20
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    Tag:
                      - Tokopedia
                      - Shopee
                    PaymentState: Paid
                    Fulfillment: Sent
                    Email: johndoe@email.com
                    Mobile: '08112345'
                    Bin: false
                    Note: Invoice Note
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Invoice ID
                    Outlet:
                      type: string
                      description: Outlet name
                    Number:
                      type: string
                      description: Number of Invoice No
                    Customer:
                      type: string
                      description: customer name
                    Date:
                      type: string
                      description: sell date
                    Due:
                      type: string
                      description: 'invoice due date '
                    Amount:
                      type: number
                      description: |
                        invoice transaction total amount
                    Payment:
                      type: string
                      description: delivery state of the invoice
                    Fulfillment:
                      type: string
                      description: |
                        delivery status of the sales invoice
                      enum:
                        - Sent
                        - Unsent
                        - Partial
                    Created:
                      type: string
                      description: sell date created by system
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex:Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. Backwards
                        Compatibility with property request "SalesOrderType"
              example:
                - ID: 3c76f9b5-d1b8-4159-85a0-0630ac0caa47
                  Outlet: Outlet1
                  Number: 20.08.00009
                  Customer: John
                  Date: '2020-08-17T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 120000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2020-08-28T11:00:20.34'
                  Tag: Tokopedia
                - ID: 3076b3af-1773-4bf9-9073-279be7b76327
                  Outlet: Outlet2
                  Number: 20.09.00002
                  Customer: John
                  Date: '2020-09-16T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 150000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2020-09-28T11:00:20.34'
                  Tag: Shopee
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: You are not allowed to access Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace of the system
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 466\r\n   at POS.WEB.Controllers.v3.InvoiceController.MultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 497"
      x-codegen-request-body-name: body
  /Invoice/MultipleOutlet/WithTotalCount:
    get:
      tags:
        - Invoice
      operationId: GetInvoiceListMultipleOutletWithTotalCount
      summary: List Invoice Multiple Outlet With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Invoice List by Multiple Outlet with Total Count
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Outlet
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    Outlet:
                      type: array
                      description: List of multiple outlet names
                      items:
                        type: string
                    PaymentState:
                      type: array
                      description: List of multiple payment status
                      items:
                        type: string
                    Fulfillment:
                      type: string
                      description: delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Partial
                        - Unsent
                    Bin:
                      type: boolean
                      description: >-
                        Recycle Bin status (whether the invoice is in the
                        Recycle Bin or Not)
                      default: false
                  example:
                    From: '2020-08-01'
                    To: '2020-09-30'
                    PageNumber: 1
                    PageSize: 20
                    Outlet:
                      - Outlet1
                      - Outlet2
                    PaymentState: Paid
                    DeliveryState: Sent
                    Bin: false
                - title: With List Outlet ID
                  required:
                    - ListOutletID
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    ListOutletID:
                      type: array
                      description: Array of List Outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: vy2x3bio3ii9i
                    PaymentState:
                      type: array
                      description: List of multiple payment status
                      items:
                        type: string
                    Fulfillment:
                      type: string
                      description: delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Partial
                        - Unsent
                    Bin:
                      type: boolean
                      description: >-
                        Recycle Bin status (whether the invoice is in the
                        Recycle Bin or Not)
                      default: false
                  example:
                    From: '2020-08-01'
                    To: '2020-09-30'
                    PageNumber: 1
                    PageSize: 20
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    PaymentState: Paid
                    DeliveryState: Sent
                    Bin: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Name of the outlet
                        Number:
                          type: string
                          description: Number of the invoice
                        Customer:
                          type: string
                          description: Name of the customer
                        Date:
                          type: string
                          description: Invoice Transaction Date
                        Due:
                          type: string
                          description: Due date of the invoice transaction
                        Amount:
                          type: number
                          description: Total amount of the invoice transaction
                        Payment:
                          type: string
                          description: payment status / progress of the invoice
                        Fulfillment:
                          type: string
                          description: delivery status / progres of the invoice
                          enum:
                            - Sent
                            - Unsent
                            - Partial
                        Created:
                          type: string
                          description: Invoice created Transaction Date by system
                        Tag:
                          type: string
                          description: >-
                            Channel Tagging system. (ex:Offline / Whatsapp /
                            Shopee / Tokopedia) used in marketplace.dealpos.app.
                            Backwards Compatibility with property request
                            "SalesOrderType"
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 20.08.00009
                    Customer: Ferdi
                    Date: '2020-08-17T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 120000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-28T11:00:20.34'
                    Tag: Shopee
                  - Outlet: Outlet2
                    Number: 20.09.00002
                    Customer: Ferdi
                    Date: '2020-09-16T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 150000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-09-28T11:00:20.34'
                    Tag: Tokopedia
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace of the exception
              example:
                Message: >-
                  The string '202w0-09-30' was not recognized as a valid
                  DateTime. There is an unknown word starting at index '3'.
                StackTrace: "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 12\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 460\r\n   at POS.WEB.Controllers.v3.MultipleOutlet.InvoiceController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\MultipleOutlet\\InvoiceController.cs:line 47"
      x-codegen-request-body-name: body
  /Invoice/Return:
    get:
      tags:
        - Invoice
      operationId: ListInvoicesReturn
      summary: List Invoices Return
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Invoice/p)**


        <br>

        Get List of Invoices Return


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date. this is primary key for the object
                      default: 'format : yyyy-mm-dd'
                    To:
                      type: string
                      description: To Date. this is primary key for the object
                      default: 'format: yyyy-mm-dd'
                    PageNumber:
                      type: integer
                      description: The number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The size of one page. Max=500
                    Outlet:
                      type: string
                      description: >-
                        Outlet name. (Only for access outlet Read/Write that
                        given to the user)
                    Tag:
                      type: array
                      description: >-
                        Channel Tagging system. (ex:Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. 
                      items:
                        type: object
                    Payment:
                      type: string
                      description: Payment State
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: Fulfillment State
                      enum:
                        - Sent
                        - Unsent
                    Email:
                      type: string
                      description: Email address of customer
                    Mobile:
                      type: string
                      description: Phone or mobile phone number of customer
                  example:
                    From: '2018-09-07'
                    To: '2018-10-17'
                    PageNumber: 1
                    PageSize: 20
                    Outlet: Outlet1
                    Tag:
                      - Tokopedia
                      - Shopee
                    Payment: Paid
                    Fulfillment: Sent
                    Email: Hendry@dealpos.com
                    Mobile: '08112345'
                - title: With Outlet ID
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date. this is primary key for the object
                      default: 'format : yyyy-mm-dd'
                    To:
                      type: string
                      description: To Date. this is primary key for the object
                      default: 'format: yyyy-mm-dd'
                    PageNumber:
                      type: integer
                      description: The number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The size of one page. Max=500
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: sfng1qgfcsul6
                    Tag:
                      type: array
                      description: >-
                        Channel Tagging system. (ex:Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app. 
                      items:
                        type: object
                    Payment:
                      type: string
                      description: Payment State
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: Fulfillment State
                      enum:
                        - Sent
                        - Unsent
                    Email:
                      type: string
                      description: Email address of customer
                    Mobile:
                      type: string
                      description: Phone or mobile phone number of customer
                  example:
                    From: '2018-09-07'
                    To: '2018-10-17'
                    PageNumber: 1
                    PageSize: 20
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Tag:
                      - Tokopedia
                      - Shopee
                    Payment: Paid
                    Fulfillment: Sent
                    Email: Hendry@dealpos.com
                    Mobile: '08112345'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Invoice ID
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Number Of invoice info
                    Customer:
                      type: string
                      description: Customer Name
                    Date:
                      type: string
                      description: Invoice Date Transaction Date
                    EventDate:
                      type: string
                      description: Due date of shipping delivery
                    Due:
                      type: string
                      description: 'Due date of invoice '
                    Amount:
                      type: number
                      description: Total amount transaction
                    Payment:
                      type: string
                      description: Payment State of invoice
                      enum:
                        - Unpaid
                        - Partial
                        - Paid
                        - Exceed
                    Fulfillment:
                      type: string
                      description: Fulfillment Status of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Created:
                      type: string
                      description: Invoice created time
              example:
                - ID: 3de705c4-53a0-4a66-8ab1-f9737e3ad6fb
                  Outlet: Outlet1
                  Number: 18.10.00009
                  Customer: Ferdi
                  Date: '2018-10-17T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 120000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
                - ID: 3de7eve4-53a0-tsw6-8ab1-f9737e3adweb
                  Outlet: Outlet1
                  Number: 18.10.00002
                  Customer: Ferdi
                  Date: '2018-10-16T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 150000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: You are not allowed to access Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the exception
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
  /Invoice/WithTotalCount:
    get:
      tags:
        - Invoice
      operationId: GetInvoiceListWithTotalCount
      summary: List Invoice With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoints**


        <br>

        List Invoices with Total Count


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Outlet
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: Selected start of a date range
                    To:
                      type: string
                      description: Selected end of a date range
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    Outlet:
                      type: string
                      description: Outlet name
                    Email:
                      type: string
                      description: Customer spesific email
                    Mobile:
                      type: string
                      description: Customer spesific mobile phone number
                  example:
                    From: '2018-09-07'
                    To: '2018-10-17'
                    PageNumber: 1
                    PageSize: 20
                    Outlet: Outlet1
                    Email: Hendry@dealpos.com
                    Mobile: '08112345678'
                - title: With Outlet ID
                  required:
                    - OutletID
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: Selected start of a date range
                    To:
                      type: string
                      description: Selected end of a date range
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: uha6oquioz5z3
                    Email:
                      type: string
                      description: Customer spesific email
                    Mobile:
                      type: string
                      description: Customer spesific mobile phone number
                  example:
                    From: '2018-09-07'
                    To: '2018-10-17'
                    PageNumber: 1
                    PageSize: 20
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Email: Hendry@dealpos.com
                    Mobile: '08112345678'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet Name
                        Number:
                          type: string
                          description: Invoice Number
                        Customer:
                          type: string
                          description: Customer name
                        Date:
                          type: string
                          description: Date of sell
                        EventDate:
                          type: string
                        Due:
                          type: string
                          description: Due date of the invoice payment
                        Amount:
                          type: integer
                          description: Total amount of the invoice
                        Payment:
                          type: string
                          description: payment status / progress of the invoice
                        Fulfillment:
                          type: string
                          description: delivery status / progress of the invoice
                          enum:
                            - Sent
                            - Unsent
                            - Partial
                        Created:
                          type: string
                          description: Created date of sale
                        CreatorID:
                          type: string
                          description: ID of Creator that make an invoice
                          x-stoplight:
                            id: e8zt2297xxz2b
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 20.08.00048
                    Customer: Hendryyy
                    Date: '2020-08-18T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 1000000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-18T11:57:54.913'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00047
                    Customer: Hendryyy
                    Date: '2020-08-18T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-18T11:49:31.653'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00046
                    Customer: Hendryyy
                    Date: '2020-08-18T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-18T11:33:22.393'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00029
                    Customer: Hendryyy
                    Date: '2020-08-12T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 137500
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-12T10:37:43.72'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00028
                    Customer: Hendryyy
                    Date: '2020-08-12T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 50000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-12T10:34:55.053'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00027
                    Customer: Hendryyy
                    Date: '2020-08-12T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 90000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-12T10:26:54.477'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00026
                    Customer: Hendryyy
                    Date: '2020-08-12T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-12T10:26:08.2'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00018
                    Customer: Hendryyy
                    Date: '2020-08-11T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 90000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-11T17:06:27.07'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00017
                    Customer: Hendryyy
                    Date: '2020-08-11T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-11T17:05:14.673'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00016
                    Customer: Hendryyy
                    Date: '2020-08-11T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 98000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-11T17:03:14.45'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00004
                    Customer: Hendryyy
                    Date: '2020-08-04T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 50000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-04T09:23:03.673'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00003
                    Customer: Hendryyy
                    Date: '2020-08-04T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 90000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-04T09:21:02.847'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00002
                    Customer: Hendryyy
                    Date: '2020-08-04T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-04T09:19:39.923'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                  - Outlet: Outlet1
                    Number: 20.08.00001
                    Customer: Hendryyy
                    Date: '2020-08-04T00:00:00'
                    EventDate: '2020-08-18T00:00:00'
                    Due: '0001-01-01T00:00:00'
                    Amount: 100000
                    Payment: Paid
                    Fulfillment: Sent
                    Created: '2020-08-04T09:16:59.627'
                    CreatorID: 9a02aaa4-eb7e-4d55-9247-780d7f2dba33
                TotalCount: 14
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name offliene
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: String '20218-10-17' was not recognized as a valid DateTime.
                StackTrace: "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at System.DateTime.Parse(String s)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 25\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceList(POSContext ctx, JsonElement request, List`1 listEntityID, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 190\r\n   at POS.WEB.Controllers.v3.InvoiceController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 158"
      x-codegen-request-body-name: body
  /Customer:
    get:
      tags:
        - Customer
      operationId: ListCustomers
      summary: List Customers
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Customer/p)**


        <br>

        Get List of customers


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                Name:
                  type: string
                  description: Name of the Customer
                Outlet:
                  type: string
                  description: Name of the Outlet
                PageNumber:
                  type: integer
                  description: Number of page begin. this is primary key for the object
                PageSize:
                  type: integer
                  description: >-
                    Page size of list customer. this is primary key for the
                    object
                From:
                  type: string
                  description: Contact Join from
                To:
                  type: string
                  description: Contact Join to
            example:
              Name: Ferdiansyah Rahman
              Outlet: Outlet1
              PageNumber: 1
              PageSize: 20
              From: '2021-01-01'
              To: '2021-01-28'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: the name of customer has been showed
                    Code:
                      type: string
                      description: the customer code of the customer to be showed
                    Mobile:
                      type: string
                      description: the mobile phone number of customer to be showed
                    Email:
                      type: string
                      description: the email of the customer to be showed
                    BirthDate:
                      type: string
                      description: Birthdate Customer
                    JoinDate:
                      type: string
                      description: Customer's Join Date
                    ID:
                      type: string
                      description: Unique ID of the customer
              example:
                - Name: A WI
                  Code: TIA20887
                  Mobile: '089621973221'
                  Email: secyliac@gmail.com
                  BirthDate: '1995-03-01T00:00:00'
                  JoinDate: '2021-01-31T00:00:00'
                  ID: 298bb6ce-d337-43ab-9c9f-5b289f0f5c95
                - Name: a. asyura alikha
                  Code: TIA9981
                  Mobile: '0896219732212'
                  Email: asyuraalikha@gmail.com
                  BirthDate: '1994-12-17T00:00:00'
                  JoinDate: '2021-02-28T00:00:00'
                  ID: 4d055ee5-6c92-4862-8c8d-d62cef19dce5
                - Name: A. Dalaisa A. Beso
                  Code: TIA21264
                  Mobile: '089621973223'
                  Email: ndisabeni@yahoo.com
                  BirthDate: '1996-06-22T00:00:00'
                  JoinDate: '2021-03-25T00:00:00'
                  ID: 620bf557-14ff-48ff-aeea-2ab769435830
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
    put:
      tags:
        - Customer
      operationId: UpdateCustomerByEmail
      summary: Update a Customer by Email
      description: >-
        Update a Customer based on email


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customer'
            example:
              Email: thomy@dealpos.com
              Name: Thomy Kurniawan
              FirstName: Thomy
              LastName: Kurniawan
              Birthdate: '1989-04-20'
              Phone: '085710977713'
              Mobile: '085710977713'
              Address: Jl. Muara Karang P3T No.30
              Gender: false
              Code: Tk1010
              Group: Gold
              ExpiredGroup: '2018-12-31'
              LoyaltyPoint: 88
              Status: Active
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Response'
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Message: Record updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
    post:
      tags:
        - Customer
      operationId: CreateCustomer
      summary: Create a Customer
      description: |-
        Create a customer based on the name

        You must have "**CREATE**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customer'
            example:
              Email: Hendry@dealpos.com
              Name: Hendry
              FirstName: Hendry
              LastName: Wijaya
              Birthdate: '1994-03-21'
              Phone: '0215865894'
              Mobile: '08569314515'
              Address: Jl. Muara Karang P3T No.30
              Gender: false
              Status: Active
              Code: HW001
              Group: Gold
              ExpiredGroup: '2019-12-31'
              LoyaltyPoint: 88
              ImageURL: >-
                https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR5MITQo_ngwwEGEZqlw7PQLiaO21AoYmLRSkSF5Q2UwJuPgYZx
              SignUpOutlet: Outlet1
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: the ID of customer was created
              example:
                ID: 2ce78ff3-a07d-4205-ba93-1a9d22172985
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
    delete:
      tags:
        - Customer
      operationId: DeleteCustomerByEmail
      summary: Delete a Customer by Email
      description: |-
        Delete a customer based on email

        You must have "**DELETE**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Email
              type: object
              properties:
                Email:
                  type: string
                  description: The customer email address to be deleted.
            example:
              Email: hendry@dealpos.com
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: the customer has been deleted
              example: Customer has been deleted successfully.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
      x-codegen-request-body-name: body
  /Customer/id/{id}:
    get:
      tags:
        - Customer
      operationId: GetCustomerByID
      summary: Get Customer by ID
      description: |-
        Get Customer info by ID

        Required Group Role: "**Contacts**" - "**VIEW**"
      parameters:
        - name: id
          in: path
          required: true
          description: ID of customer
          schema:
            type: string
          example: 5acffe34-346f-4888-afd8-0a551e556681
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of customer
                  Name:
                    type: string
                    description: Name of customer
                  Email:
                    type: string
                    description: Email Address of customer
                  Title:
                    type: string
                    description: Title Name of customer
                  FirstName:
                    type: string
                    description: First name of customer
                  LastName:
                    type: string
                    description: Last name of customer
                  Gender:
                    type: string
                    description: Gender of customer
                  Code:
                    type: string
                    description: Code of customer
                  Phone:
                    type: string
                    description: Phone number of customer
                  MobilePhone:
                    type: string
                    description: >-
                      Mobile number of customer. this is primary key for the
                      object
                  Fax:
                    type: string
                    description: Fax number of customer
                  Address:
                    type: string
                    description: Address of customer
                  City:
                    type: string
                    description: City of customer
                  Nationality:
                    type: string
                    description: Nationality of customer
                  ReferredBy:
                    type: string
                    description: Customer ID who referred this customer
                  Identification:
                    type: string
                    description: identification number of customer
                  Birthday:
                    type: string
                    description: Birthday of customer
                  JoinDate:
                    type: string
                    description: Join date of customer
                  Group:
                    type: string
                    description: Group of customer
                  ExpiredGroup:
                    type: string
                    description: Expired group of customer
                  SignUpOutlet:
                    type: string
                    description: Sign up oulet when created the new customer
                  ImageURL:
                    type: string
                    description: Image url of customer
                  LoyaltyPoint:
                    type: integer
                    description: Loyalty point of customer
                  Status:
                    type: string
                    description: Customer Activation Status
                    default: Active / WaitingForApproval / Suspended
              example:
                ID: 5acffe34-346f-4888-afd8-0a551e556681
                Name: Tafta tata
                Email: Tafta@dealpos.com
                Title: Mr.
                FirstName: Tafta
                LastName: tata
                Gender: Male
                Code: HW008
                Phone: 021-66698155
                MobilePhone: '081588818888'
                Fax: '6325894'
                Address: Jl. Lenteng Agung
                City: Jakarta
                Nationality: Indonesian
                ReferredBy: 449e35af-190d-4137-aa13-9cf2cf6af57a
                Identification: '3173656111'
                Birthday: 18 Mar 1994
                JoinDate: 22 Jul 2019
                Group: Gold
                ExpiredGroup: 31 Jul 2019
                SignUpOutlet: Outlet1
                ImageURL: >-
                  //res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg
                LoyaltyPoint: 88
                Status: Active
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection.....)'
      x-codegen-request-body-name: body
  /Adjustment/Set:
    post:
      tags:
        - Inventory Adjustment
      operationId: CreateAdjustment
      summary: Create Adjustment by Updating Inventory
      description: >
        ### Create Adjustment

        Update Inventory - Set available quantity to a given value


        You must have "**ADD**" role in "**Adjustment**" Module OR "**EDIT**"
        role in "**Global**" Module


        Product with type "**Composite**" and "**Non Inventory**" cannot be
        adjusted.


        When config InventoryAdjustment Approval is turned on, when adjustment
        is created state will be StateID: 1 (In Progress) / 2 (Waiting for
        Approval)
      parameters:
        - name: CreateWhenQuantityMatch
          in: header
          description: >-
            when true, even though the quantity submitted matches an inventory
            adjustment will be created (200 returned) when false no adjustment
            is created (202 returned)
          allowEmptyValue: false
          schema:
            type: boolean
            enum:
              - false
              - true
            default: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/adjustment'
            example:
              Outlet: Outlet1
              Date: 2023/09/01
              Number: 2023.09.00001
              StateID: 1
              PIC: John Doe
              Note: Adjustment for damaged goods
              Variants:
                - Code: '907'
                  Quantity: 10
                - Code: '908'
                  Quantity: 5
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Adjustments ID has been created
              example:
                ID: bcb2fff2-916a-4f60-9e12-36735d0790a9
        '202':
          description: >-
            When no inventory changes is detected, what is submitted == actual
            inventory
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ID:
                    type: string
                example:
                  Message: >-
                    Adjustment number 2020.07.0002 created, no product inventory
                    changed!
                  ID: ac614f2b-db57-4244-a082-114f5f04b9d4
              example:
                Message: Adjustment cannot processed, no product inventory changed!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Variant with code [131125] does not exist
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    put:
      tags:
        - Inventory Adjustment
      operationId: UpdateAdjustmentSet
      summary: Update Adjustment with Type Count Quantity
      description: >
        ### Update Adjustment with Type Count Quantity

        Count - Set available quantity to a given value and when quantity is
        still Draft


        You must have "**ADD**" role in "**Adjustment**" Module OR "**EDIT**"
        role in "**Global**" Module


        Product with type "**Composite**" and "**Non Inventory**" cannot be
        adjusted.


        When config InventoryAdjustment Approval is turned on, when adjustment
        is created state will be StateID: 1 (Draft) / 2 (Pending)
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Date
                - Number
                - Outlet
                - Variants
              type: object
              properties:
                Outlet:
                  type: string
                  description: The name of the outlet that made the adjustment
                Date:
                  type: string
                  description: Date of adjusment.(yyyy/mm/dd)
                Number:
                  type: string
                  description: >-
                    Number of invoice adjusment. This is primary key for the
                    object
                PIC:
                  type: string
                  description: The name of the PIC that made the adjustment
                Note:
                  type: string
                  description: Note of adjustment
                Variants:
                  type: array
                  items:
                    required:
                      - Code
                      - Quantity
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Code of variant
                      Quantity:
                        type: number
                        description: Quantity of variant
                      Price:
                        type: integer
                        description: Price of variant
                      Note:
                        type: string
                        description: Note of variant
            example:
              Outlet: Outlet1
              Date: 2023/09/01
              Number: 2023.09.00001
              PIC: John Doe
              Note: Adjustment for damaged goods
              Variants:
                - Code: '907'
                  Quantity: 10
                - Code: '908'
                  Quantity: 5
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Adjustments ID has been created
              example:
                ID: bcb2fff2-916a-4f60-9e12-36735d0790a9
        '202':
          description: >-
            When no inventory changes is detected, what is submitted == actual
            inventory
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ID:
                    type: string
                example:
                  Message: >-
                    Adjustment number 2020.07.0002 created, no product inventory
                    changed!
                  ID: ac614f2b-db57-4244-a082-114f5f04b9d4
              example:
                Message: Adjustment cannot processed, no product inventory changed!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Variant with code [131125] does not exist
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Adjustment:
    post:
      tags:
        - Inventory Adjustment
      operationId: CreateAdjustmentbyadjustingdifferences
      summary: Create Adjustment by Adjusting Differences
      description: >
        ### Create Adjustment

        Adjust Differences - Increment or Decrement Inventory by given amount


        You must have "**ADD**" role in "**Adjustment**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/adjustment'
            example:
              Outlet: Outlet1
              Date: 2023/09/01
              Number: 2023.09.00001
              StateID: 1
              PIC: John Doe
              Note: Adjustment
              Variants:
                - Code: '907'
                  Quantity: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Adjustment ID has been created
              example:
                ID: a0e9653b-dd54-47a9-9dba-fb81da33ca60
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Variant with code [131125] does not exist
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    put:
      tags:
        - Inventory Adjustment
      operationId: UpdateAdjustment
      summary: Update an Adjustment
      description: >-
        Update an Adjustment based on the outlet and code. Only Adjustment with
        Type AdjustDifference that can be edit.


        You must have "**EDIT**" role in "**Adjustment**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Date
                - Number
                - Outlet
                - Variants
              type: object
              properties:
                Outlet:
                  type: string
                  description: The name of the outlet that made the adjustment
                Date:
                  type: string
                  description: Date of adjusment.(yyyy/mm/dd)
                Number:
                  type: string
                  description: >-
                    Number of invoice adjusment. This is primary key for the
                    object
                PIC:
                  type: string
                  description: The name of the PIC that made the adjustment
                Note:
                  type: string
                  description: Note of adjustment
                Variants:
                  type: array
                  items:
                    required:
                      - Code
                      - Quantity
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Code of variant
                      Quantity:
                        type: string
                        description: Quantity of variant
                      Price:
                        type: integer
                        description: Price of variant
                      Note:
                        type: string
                        description: Note of variant
              example:
                Outlet: Outlet1
                Date: 2023/09/01
                Number: 2023.09.00001
                PIC: John Doe
                Note: Adjustment
                Variants:
                  - Code: 907
                    Quantity: 10
                    Cost: 50000
                    Price: 100000
                    Note: Additional
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: the ID of the adjustment that has been updated
              example:
                ID: a0e9653b-dd54-47a9-9dba-fb81da33ca60
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Inventory Adjustment with Type *Update Inventory* cannot be
                  Updated, please Delete and re-Create the Adjustment!
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Inventory Adjustment
      operationId: DeleteAdjustment
      summary: Delete an Adjustment
      description: |-
        Delete an Adjustment based on Code

        You must have "**DELETE**" role in "**Adjustment**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: The name of the outlet that made the adjustment
                Number:
                  type: string
                  description: Number of adjusment invoice
              example:
                Outlet: Outlet1
                Number: 2023.09.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: adjustment has been deleted
              example: adjustment has been deleted
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    get:
      tags:
        - Inventory Adjustment
      operationId: ListAdjustment
      summary: List Adjustment
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Adjustment/p)**


        <br>

        Get List of Adjustment


        Required Group Role: "**Adjustment**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: From date list adjustment list will be shown
                To:
                  type: string
                  description: To date list adjustment list will be shown
                PageNumber:
                  type: number
                  description: 'Start Page '
                PageSize:
                  type: number
                  description: Total data adjustment list will be shown
                State:
                  type: string
                  description: Status of adjustment (Draft / Pending / Accepted / Rejected)
                Type:
                  type: string
                  description: >-
                    Type of adjustment (AdjustDifferences / CountQuantity). If
                    set to empty string or not send the property, it will show
                    all adjustment
              example:
                From: 2023/09/01
                To: 2023/09/30
                PageNumber: 1
                PageSize: 10
                State: Accepted
                Type: AdjustDifferences
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: ID of the adjustment
                    Outlet:
                      type: string
                      description: the adjustment outlet location
                    Date:
                      type: string
                      description: the date of the adjustment (yyyy/mm/dd)
                    Number:
                      type: string
                      description: >-
                        the adjustment number.  This is primary key for the
                        object
                    SKUCount:
                      type: number
                      description: Total SKU of the inventory adjustment
                    QuantitySUM:
                      type: number
                      description: Total Quantity of the inventory adjustment
                    Type:
                      type: string
                      description: Adjustment Type
                    TotalCost:
                      type: number
                      description: Total Cost of the inventory adjustment
                    PIC:
                      type: string
                      description: the person in charge of the adjustment
                    Note:
                      type: string
                      description: the note of adjustment
                    State:
                      type: string
                      description: Adjustment Status
                      enum:
                        - Draft
                        - Pending
                        - Accepted
                        - Rejected
              example:
                - ID: a0e9653b-dd54-47a9-9dba-fb81da33ca60
                  Outlet: Outlet1
                  Date: '2018-10-30T00:00:00'
                  Number: 2018/11/07.0001
                  SKUCount: 2
                  QuantitySUM: 18
                  Type: AdjustDifference
                  TotalCost: 1800000
                  PIC: John Doe
                  Note: Test Adjustment
                  State: Accepted
                - ID: 1b1b1b1b-1b1b-1b1b-1b1b-1b1b1b1b1b1b
                  Outlet: Outlet1
                  Date: '2018-10-29T00:00:00'
                  Number: Oct 29, 2018.973265
                  SKUCount: 5
                  QuantitySUM: 12
                  Type: CountQuantity
                  TotalCost: 200000
                  PIC: Royhan
                  Note: TestAdjustment
                  State: Accepted
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /PromotionCoupon:
    get:
      tags:
        - Promotion Coupon
      operationId: ListPromotionCoupon
      summary: List Promotion Coupons
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/PromotionCoupon/p)**


        <br>

        Get List of Promotion Coupons


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Simple Example
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    From:
                      type: string
                      description: Start date of Created Promotion Coupon
                    To:
                      type: string
                      description: To date of Created Promotion Coupon
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - ParkedDeletion
                        - Return
                        - FullAccess
                    UsageStatus:
                      type: string
                      description: >-
                        Status Coupon usage (If value null it will show only
                        Active Coupon)
                      enum:
                        - Active
                        - Used
                        - Expired
                        - All
                      x-stoplight:
                        id: 8jrojf2a31wcc
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: |
                        The number of rows returned by the API
                    CustomerCode:
                      type: string
                      description: The customer code that assigned to the coupon
                    Code:
                      type: string
                      description: Promotion coupon code
                  example:
                    From: '2019-12-01T00:00:00'
                    To: '2019-12-19T00:00:00'
                    Type: DiscountPercentage
                    UsageStatus: Active
                    PageNumber: 1
                    PageSize: 10
                    Code: Disc99
                - title: Get By Customer Code / Referred By Customer ID
                  required:
                    - From
                    - PageNumber
                    - PageSize
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: From date
                    To:
                      type: string
                      description: to date
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - ParkedDeletion
                        - Return
                        - FullAccess
                    UsageStatus:
                      type: string
                      description: >-
                        Status Coupon usage (If value null it will show only
                        Active Coupon)
                      enum:
                        - Active
                        - Used
                        - Expired
                        - All
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: |
                        The number of rows returned by the API
                    CustomerCode:
                      type: string
                      description: The customer code that assigned to the coupon
                      x-stoplight:
                        id: 46ymr1fo1lq5j
                    Code:
                      type: string
                      description: Promotion coupon Code
                    ReferredByCustomerID:
                      type: string
                      format: guid
                      description: ID of Customer Reffered By
                  example:
                    From: '2019-12-01T00:00:00'
                    To: '2019-12-19T00:00:00'
                    Type: DiscountPercentage
                    PageNumber: 1
                    PageSize: 10
                    CustomerCode: DP-001
                    Code: Disc99
                    ReferredByCustomerID: 8b13ba50-14b1-486c-9ad2-207ade23c0d6
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Promotion Coupon Code
                      x-stoplight:
                        id: en007jk6g9x82
                    Limit:
                      type: integer
                      description: the usage limit of the promotion coupon key
                    Balance:
                      type: integer
                      description: Remaining balance of the promotion coupon key
                    Discount:
                      type: integer
                      description: the discount applied of the promotion coupon
                    Created:
                      type: string
                      description: the promotion coupon created time
                    StartDate:
                      type: string
                      description: Started Date of Promotion Coupon
                      x-stoplight:
                        id: xsgkftj0d9jr0
                    ExpiryDate:
                      type: string
                      description: the promotion coupon expiry date
                    Type:
                      type: string
                      description: the promotion coupon discount type
                    Description:
                      type: string
                      description: Description of promotion coupon
                      x-stoplight:
                        id: 0os5giwh0kq30
                    CustomerCode:
                      type: string
                      description: Code of Customer (Member Code)
                      x-stoplight:
                        id: p4gzpa9noqn0s
              example:
                - Code: Disc99
                  Limit: 5
                  Balance: 5
                  Discount: 99
                  Created: '2019-12-17T14:58:15.447'
                  StartDate: '2019-12-01T00:00:00'
                  ExpiryDate: '2019-12-19T00:00:00'
                  Type: Discount
                  Description: Discount percentage 99%
                  CustomerCode: DP-001
                - Code: Disc100
                  Limit: 5
                  Balance: 5
                  Discount: 100000
                  Created: '2019-12-17T14:58:15.447'
                  StartDate: '2019-12-01T00:00:00'
                  ExpiryDate: '2019-12-19T00:00:00'
                  Type: DiscountAmount
                  Description: Discount amount 100k
                  CustomerCode: DP-001
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
    post:
      tags:
        - Promotion Coupon
      operationId: CreatePromotionCoupon
      summary: Create a Promotion Coupon
      description: |-
        Create new promotion coupon

        You must have "**CREATE**" role in "**Promotion**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Default
                  required:
                    - Code
                    - Discount
                    - ExpiryDate
                    - Limit
                    - MinimumAmount
                    - Type
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Promotion coupon code
                      x-stoplight:
                        id: 64ynkeszenfkq
                    Limit:
                      type: integer
                      description: limit the promotion coupon can be used
                    Discount:
                      type: integer
                      description: >-
                        Number of percentage or amount that given from promotion
                        coupon (Only take effect for type Discount Percentage or
                        Discount Amount)
                    MinimumAmount:
                      type: number
                      description: >-
                        Minimum spending amount that allow to use the coupon
                        code. Only for Type DiscountAmount and
                        DiscountPercentage.
                      x-stoplight:
                        id: j60xxg6k9rvke
                    FullPriceItemOnly:
                      type: boolean
                      description: >-
                        Only use if DiscountType Percentage. If set to "true",
                        coupon discounts apply to regular-priced products
                      example: false
                      default: false
                      x-stoplight:
                        id: sg9yrzq8sibax
                    MaximumDiscount:
                      type: number
                      description: >-
                        Only use if DiscountType Percentage. The maximum
                        discount amount achievable with this coupon
                      x-stoplight:
                        id: aob7hjaih5v2a
                    ExpiryDate:
                      type: string
                      description: expiration date of promotion coupon
                    StartDate:
                      type: string
                      description: Start date of promotion coupon
                      x-stoplight:
                        id: v9w0ysmh1al9v
                    Description:
                      type: string
                      description: Promotion coupon description
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - Return
                        - ParkedDeletion
                        - FullAccess
                    ReferredByCustomerCode:
                      type: string
                      description: Code of Customer (Member Code)
                      x-stoplight:
                        id: 4lflf0wenig2m
                    ReferredByCustomerID:
                      type: string
                      description: ID of Customer (Member ID)
                      x-stoplight:
                        id: i5u3opyfoo762
                    ReferenceID:
                      type: string
                      description: InvoiceID (need to be Unique)
                      x-stoplight:
                        id: 80z45n8veezwn
                  example:
                    Code: Disc99
                    Limit: 5
                    Discount: 99
                    MinimumAmount: 100000
                    FullPriceItemOnly: 'No'
                    MaximumDiscount: 100000
                    ExpiryDate: '2019-11-18'
                    Description: Discount percentage 99%
                    Type: DiscountPercentage
                - title: Create with CustomerID
                  required:
                    - Code
                    - Discount
                    - ExpiryDate
                    - Limit
                    - MinimumAmount
                    - Type
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Promotion coupon code
                      x-stoplight:
                        id: 64ynkeszenfkq
                    Limit:
                      type: integer
                      description: limit the promotion coupon can be used
                    Discount:
                      type: integer
                      description: >-
                        Number of percentage or amount that given from promotion
                        coupon (Only take effect for type Discount Percentage or
                        Discount Amount)
                    MinimumAmount:
                      type: number
                      description: >-
                        Minimum spending amount that allow to use the coupon
                        code. Only for Type DiscountAmount and
                        DiscountPercentage.
                      x-stoplight:
                        id: j60xxg6k9rvke
                    FullPriceItemOnly:
                      type: boolean
                      description: >-
                        Only use if DiscountType Percentage. If set to "true",
                        coupon discounts apply to regular-priced products
                      example: false
                      default: false
                      x-stoplight:
                        id: sg9yrzq8sibax
                    MaximumDiscount:
                      type: number
                      description: >-
                        Only use if DiscountType Percentage. The maximum
                        discount amount achievable with this coupon
                      x-stoplight:
                        id: aob7hjaih5v2a
                    ExpiryDate:
                      type: string
                      description: expiration date of promotion coupon
                    StartDate:
                      type: string
                      description: Start date of promotion coupon
                      x-stoplight:
                        id: v9w0ysmh1al9v
                    Description:
                      type: string
                      description: Promotion coupon description
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - Return
                        - ParkedDeletion
                        - FullAccess
                    ReferredByCustomerCode:
                      type: string
                      description: Code of Customer (Member Code)
                      x-stoplight:
                        id: 4lflf0wenig2m
                    ReferredByCustomerID:
                      type: string
                      description: ID of Customer (Member ID)
                      x-stoplight:
                        id: i5u3opyfoo762
                    ReferenceID:
                      type: string
                      description: InvoiceID (need to be Unique)
                      x-stoplight:
                        id: 80z45n8veezwn
                  example:
                    Code: Disc99
                    Limit: 5
                    Discount: 99
                    MinimumAmount: 100000
                    ExpiryDate: '2019-11-18'
                    StartDate: '2019-11-01'
                    Description: Discount percentage 99%
                    Type: DiscountPercentage
                    ReferredByCustomerID: 8b13ba50-14b1-486c-9ad2-207ade23c0d6
                - title: Create with CustomerCode
                  required:
                    - Code
                    - Discount
                    - ExpiryDate
                    - Limit
                    - MinimumAmount
                    - Type
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Promotion coupon code
                      x-stoplight:
                        id: 64ynkeszenfkq
                    Limit:
                      type: integer
                      description: limit the promotion coupon can be used
                    Discount:
                      type: integer
                      description: >-
                        Number of percentage or amount that given from promotion
                        coupon (Only take effect for type Discount Percentage or
                        Discount Amount)
                    MinimumAmount:
                      type: number
                      description: >-
                        Minimum spending amount that allow to use the coupon
                        code. Only for Type DiscountAmount and
                        DiscountPercentage.
                      x-stoplight:
                        id: j60xxg6k9rvke
                    FullPriceItemOnly:
                      type: boolean
                      description: >-
                        Only use if DiscountType Percentage. If set to "true",
                        coupon discounts apply to regular-priced products
                      example: false
                      default: false
                      x-stoplight:
                        id: sg9yrzq8sibax
                    MaximumDiscount:
                      type: number
                      description: >-
                        Only use if DiscountType Percentage. The maximum
                        discount amount achievable with this coupon
                      x-stoplight:
                        id: aob7hjaih5v2a
                    ExpiryDate:
                      type: string
                      description: expiration date of promotion coupon
                    StartDate:
                      type: string
                      description: Start date of promotion coupon
                      x-stoplight:
                        id: v9w0ysmh1al9v
                    Description:
                      type: string
                      description: Promotion coupon description
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - Return
                        - ParkedDeletion
                        - FullAccess
                    ReferredByCustomerCode:
                      type: string
                      description: Code of Customer (Member Code)
                      x-stoplight:
                        id: 4lflf0wenig2m
                    ReferredByCustomerID:
                      type: string
                      description: ID of Customer (Member ID)
                      x-stoplight:
                        id: i5u3opyfoo762
                    ReferenceID:
                      type: string
                      description: InvoiceID (need to be Unique)
                      x-stoplight:
                        id: 80z45n8veezwn
                  example:
                    Code: Disc99
                    Limit: 5
                    Discount: 99
                    MinimumAmount: 100000
                    ExpiryDate: '2019-11-18'
                    StartDate: '2019-11-01'
                    Description: Discount percentage 99%
                    Type: DiscountPercentage
                    ReferredByCustomerCode: DP-001
                - title: Create with ReferenceID
                  required:
                    - Code
                    - Discount
                    - ExpiryDate
                    - Limit
                    - MinimumAmount
                    - Type
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Promotion coupon code
                      x-stoplight:
                        id: 64ynkeszenfkq
                    Limit:
                      type: integer
                      description: limit the promotion coupon can be used
                    Discount:
                      type: integer
                      description: >-
                        Number of percentage or amount that given from promotion
                        coupon (Only take effect for type Discount Percentage or
                        Discount Amount)
                    MinimumAmount:
                      type: number
                      description: >-
                        Minimum spending amount that allow to use the coupon
                        code. Only for Type DiscountAmount and
                        DiscountPercentage.
                      x-stoplight:
                        id: j60xxg6k9rvke
                    FullPriceItemOnly:
                      type: boolean
                      description: >-
                        Only use if DiscountType Percentage. If set to "true",
                        coupon discounts apply to regular-priced products
                      example: false
                      default: false
                      x-stoplight:
                        id: sg9yrzq8sibax
                    MaximumDiscount:
                      type: number
                      description: >-
                        Only use if DiscountType Percentage. The maximum
                        discount amount achievable with this coupon
                      x-stoplight:
                        id: aob7hjaih5v2a
                    ExpiryDate:
                      type: string
                      description: expiration date of promotion coupon
                    StartDate:
                      type: string
                      description: Start date of promotion coupon
                      x-stoplight:
                        id: v9w0ysmh1al9v
                    Description:
                      type: string
                      description: Promotion coupon description
                    Type:
                      type: string
                      description: Type of promotion coupon
                      enum:
                        - DiscountPercentage
                        - DiscountAmount
                        - Return
                        - ParkedDeletion
                        - FullAccess
                    ReferredByCustomerCode:
                      type: string
                      description: Code of Customer (Member Code)
                      x-stoplight:
                        id: 4lflf0wenig2m
                    ReferredByCustomerID:
                      type: string
                      description: ID of Customer (Member ID)
                      x-stoplight:
                        id: i5u3opyfoo762
                    ReferenceID:
                      type: string
                      description: InvoiceID (need to be Unique)
                      x-stoplight:
                        id: 80z45n8veezwn
                  example:
                    Code: Disc99
                    Limit: 5
                    Discount: 99
                    MinimumAmount: 100000
                    ExpiryDate: '2019-11-18'
                    StartDate: '2019-11-01'
                    Description: Discount percentage 99%
                    Type: DiscountPercentage
                    ReferenceID: 8b13ba50-14b1-486c-9ad2-207ade23c0d6
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: the Promotion Coupon has been created
              example:
                ID: c0472252-57ad-47dd-9aa7-f61129e88831
        '409':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  - title: Duplicate Coupon
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: You have duplicate with coupon {{Coupon1}}
                  - title: ReferenceID already used
                    type: object
                    properties:
                      Message:
                        type: string
                    example:
                      Message: ReferenceID is already been used by another Coupon
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
    delete:
      tags:
        - Promotion Coupon
      operationId: DeletePromotionCoupon
      summary: Delete a Promotion Coupon
      description: |-
        Delete Promotion by Code

        You must have "**DELETE**" role in "**Promotion**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Key of promotion coupon
                  x-stoplight:
                    id: z6km3lk1tlwfq
              example:
                Code: Disc99
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Coupon has been delete!
      x-codegen-request-body-name: body
  /PromotionCoupon/ByKey:
    get:
      tags:
        - Deprecated API
      operationId: GetPromotionCouponByKey
      summary: Get Promotion Coupon Detail by Coupon Key
      description: >-
        **Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/PromotionCoupon/p)**


        Get Promotion Coupon Detail by Coupon Code


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                Key:
                  type: string
              example:
                Key: Disc99
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Key:
                    type: string
                    description: The Promotion Coupon Key/Code
                  Limit:
                    type: integer
                    description: The usage limit of the promotion coupon key
                  Balance:
                    type: integer
                    description: Remaining balance of the promotion coupon key
                  Discount:
                    type: integer
                    description: The discount applied to the promotion coupon
                  Created:
                    type: string
                    description: The promotion coupon created time
                  StartDate:
                    type: string
                    description: Start Date of Promotion Coupon
                  ExpiryDate:
                    type: string
                    description: The promotion coupon expiry date
                  Type:
                    type: string
                    description: The promotion coupon discount type
                  Description:
                    type: string
                    description: Description of the promotion coupon
                  CustomerCode:
                    type: string
                    description: Code of Customer (Member Code)
                example:
                  Coupons:
                    - Key: Disc99
                      Limit: 5
                      Balance: 5
                      Discount: 99
                      Created: '2019-12-17T14:58:15.447'
                      StartDate: '2019-12-01T00:00:00'
                      ExpiryDate: '2019-12-19T00:00:00'
                      Type: Discount
                      Description: Discount percentage 99%
                      CustomerCode: DP-001
                    - Key: Disc100
                      Limit: 5
                      Balance: 5
                      Discount: 100000
                      Created: '2019-12-17T14:58:15.447'
                      StartDate: '2019-12-01T00:00:00'
                      ExpiryDate: '2019-12-19T00:00:00'
                      Type: DiscountAmount
                      Description: Discount amount 100k
                      CustomerCode: DP-001
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      deprecated: true
      x-codegen-request-body-name: body
  /PromotionCoupon/ListKey:
    delete:
      tags:
        - Deprecated API
      summary: Delete Promotion Coupon List by Key
      description: >-
        Bulk Delete Promotion by Promotion Coupon Key. Please not that we use
        NEW LINE as the separator.


        You must have "**DELETE**" role in "**Promotion**" Module
      operationId: coupon-bulk-delete
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
              x-examples:
                Example 1:
                  - Coupon001
                  - Coupon002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                x-examples:
                  Example 1:
                    Message: 3 Coupon Key has been deleted successfully!
              example:
                Message: 2 Coupon Key has been deleted successfully!
      x-codegen-request-body-name: body
  /PromotionEvent:
    get:
      tags:
        - Promotion Event
      operationId: ListPromotionEvent
      summary: List Promotion Event
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**

        <br>

        Get List Promotion Event


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  x-stoplight:
                    id: d1877mxzl2q18
                PageSize:
                  type: integer
                  x-stoplight:
                    id: d1877mxzl2q18
                Type:
                  type: string
                  description: >-
                    Promotion Type (Amount / Quantity / Discount / Product /
                    Tiered) If value is null , it will be show all type
                Status:
                  type: string
                  description: >-
                    Status of promotion event (Active / Expired). If value is
                    null, it will show all status promotion
            example:
              PageNumber: 1
              PageSize: 10
              Type: Amount
              Status: Active
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - ExpirationDate
                    - MinimumQty
                    - Name
                    - Outlet
                    - StartDate
                    - Type
                  type: object
                  properties:
                    Name:
                      type: string
                      description: Promotion Event Name
                    StartDate:
                      type: string
                      description: Start Time of Promotion Event
                    ExpirationDate:
                      type: string
                      description: Expiration Date of Promotion Event
                    Outlet:
                      type: array
                      description: >-
                        Outlet Name assigned of promotion event  (Null means
                        assigned to all outlet)
                      items:
                        type: string
                    Type:
                      type: string
                      description: Promotion Event Type
                    MinimumQty:
                      type: integer
                      description: Minimum Qty of promotion event be applied
                x-examples:
                  Example 1:
                    - Name: New Year Sale
                      StartDate: '2022-12-25 00:00:00'
                      ExpirationDate: '2022-01-01 23:59:59'
                      Outlet:
                        - Outlet1
                        - Outlet2
                      Type: Amount
                      MinimumQty: 1
              example:
                - Name: New Year Sale
                  StartDate: '2022-12-25 00:00:00'
                  ExpirationDate: '2022-01-01 23:59:59'
                  Outlet:
                    - Outlet1
                    - Outlet2
                  Type: Amount
                  MinimumQty: 1
      x-codegen-request-body-name: body
  /PromotionEvent/GetByVariantID:
    get:
      tags:
        - Promotion Event
      operationId: GetPromotionEventByVariantID
      summary: Get Promotion Event by Variant ID
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**

        <br>

        Get Promotion Event by Variant ID


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - VariantID
              type: object
              properties:
                VariantID:
                  minLength: 1
                  type: string
              description: ''
            example:
              VariantID: 6f96d108-1af5-45de-a593-74719a0ee8e2
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                minItems: 1
                uniqueItems: true
                type: array
                description: ''
                items:
                  required:
                    - Discount
                    - ExpirationDate
                    - ExpirationTime
                    - ExtraCost
                    - Name
                    - PromotionID
                    - StartDate
                    - StartTime
                    - UnitPrice
                  type: object
                  properties:
                    Name:
                      minLength: 1
                      type: string
                    UnitPrice:
                      type: number
                    ExtraCost:
                      type: number
                    Discount:
                      type: number
                    StartDate:
                      minLength: 1
                      type: string
                    ExpirationDate:
                      minLength: 1
                      type: string
                    StartTime:
                      minLength: 1
                      type: string
                    ExpirationTime:
                      minLength: 1
                      type: string
                    PromotionID:
                      minLength: 1
                      type: string
                x-examples:
                  example-1:
                    - Name: DealPOS Book Fair 2022
                      UnitPrice: 100000
                      ExtraCost: 0
                      Discount: 0
                      StartDate: '2022-04-13T00:00:00'
                      ExpirationDate: '2022-04-21T00:00:00'
                      StartTime: '00:00:00'
                      ExpirationTime: '23:59:59'
                      PromotionID: 06777bca-ad15-4806-a625-009fce7bc54a
              example:
                - Name: DealPOS Book Fair 2022
                  UnitPrice: 100000
                  ExtraCost: 0
                  Discount: 0
                  StartDate: '2022-04-13T00:00:00'
                  ExpirationDate: '2022-04-21T00:00:00'
                  StartTime: '00:00:00'
                  ExpirationTime: '23:59:59'
                  PromotionID: 06777bca-ad15-4806-a625-009fce7bc54a
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Requested value 'Discount' was not found.
                StackTrace: "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
      x-codegen-request-body-name: body
  /PromotionEvent/GetByVariantCode:
    get:
      tags:
        - Promotion Event
      operationId: GetPromotionEventByVariantCode
      summary: Get Promotion Event by Variant Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**

        <br>

        Get Promotion Event by Variant ID


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - VariantCode
              type: object
              properties:
                VariantCode:
                  minLength: 1
                  type: string
              description: ''
              example:
                VariantCode: 1315L
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                minItems: 1
                uniqueItems: true
                type: array
                description: ''
                items:
                  required:
                    - Discount
                    - ExpirationDate
                    - ExpirationTime
                    - ExtraCost
                    - Name
                    - PromotionID
                    - StartDate
                    - StartTime
                    - UnitPrice
                  type: object
                  properties:
                    Name:
                      minLength: 1
                      type: string
                    UnitPrice:
                      type: number
                    ExtraCost:
                      type: number
                    Discount:
                      type: number
                    StartDate:
                      minLength: 1
                      type: string
                    ExpirationDate:
                      minLength: 1
                      type: string
                    StartTime:
                      minLength: 1
                      type: string
                    ExpirationTime:
                      minLength: 1
                      type: string
                    PromotionID:
                      minLength: 1
                      type: string
                x-examples:
                  example-1:
                    - Name: DealPOS Book Fair 2022
                      UnitPrice: 100000
                      ExtraCost: 0
                      Discount: 0
                      StartDate: '2022-04-13T00:00:00'
                      ExpirationDate: '2022-04-21T00:00:00'
                      StartTime: '00:00:00'
                      ExpirationTime: '23:59:59'
                      PromotionID: 06777bca-ad15-4806-a625-009fce7bc54a
              example:
                - Name: DealPOS Book Fair 2022
                  UnitPrice: 100000
                  ExtraCost: 0
                  Discount: 0
                  StartDate: '2022-04-13T00:00:00'
                  ExpirationDate: '2022-04-21T00:00:00'
                  StartTime: '00:00:00'
                  ExpirationTime: '23:59:59'
                  PromotionID: 06777bca-ad15-4806-a625-009fce7bc54a
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Requested value 'Discount' was not found.
                StackTrace: "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
      x-codegen-request-body-name: body
  /PromotionCoupon/WithTotalCount:
    get:
      tags:
        - Promotion Coupon
      operationId: ListPromotionCouponWithTotalCount
      summary: List Promotion Coupons With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**

        <br>

        Get List of Promotion Coupons


        Required Group Role: "**Promotion**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - To
              type: object
              properties:
                From:
                  type: string
                  description: From date
                To:
                  type: string
                  description: to date
                Type:
                  type: string
                  description: Type of promotion coupon
                  enum:
                    - Discount
                    - DiscountAmount
                    - ParkedDeletion
                    - Return
                    - FullAccess
                PageNumber:
                  type: number
                  description: |
                    The number of page data to be displayed
                PageSize:
                  type: number
                  description: |
                    The number of rows returned by the API
              example:
                From: '2019-12-17'
                To: '2019-12-19'
                Type: Discount
                PageNumber: 1
                PageSize: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Code:
                          type: string
                          description: Promotion Coupon Unique Code
                          x-stoplight:
                            id: 2cv4zk5339a1x
                        Limit:
                          type: integer
                          description: Promotion Coupon Usage Limit
                        Balance:
                          type: integer
                          description: Promotion Coupon Usage Balance
                        Discount:
                          type: integer
                          description: Promotion Coupon Discount Percentage
                        Created:
                          type: string
                          description: Promotion Coupon Created Date
                        ExpiryDate:
                          type: string
                          description: Promotion Coupon Expirate Date
                        Type:
                          type: string
                          description: Promotion Coupon Type
                  TotalCount:
                    type: integer
                    description: Total Count of the result
              example:
                Data:
                  - Code: Discs
                    Limit: 5
                    Balance: 5
                    Discount: 99
                    Created: '2019-12-17T14:58:15.447'
                    ExpiryDate: '2019-12-19T00:00:00'
                    Type: Discount
                  - Code: Discs
                    Limit: 5
                    Balance: 5
                    Discount: 99
                    Created: '2019-12-17T14:58:15.447'
                    ExpiryDate: '2019-12-19T00:00:00'
                    Type: Discount
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Requested value 'Discount' was not found.
                StackTrace: "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
      x-codegen-request-body-name: body
  /Adjustment/Detail:
    get:
      tags:
        - Inventory Adjustment
      operationId: GetAdjustmentByNumber
      summary: Get Adjustment By Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Adjustment detail based on Number.


        Required Group Role: "**Adjustment**" - "**VIEW**"
      parameters:
        - name: Outlet
          in: query
          description: The name of the outlet that made the adjustment
          required: true
          schema:
            type: string
          example: Outlet1
        - name: Number
          in: query
          description: Number of adjusment invoice
          required: true
          schema:
            type: string
          example: 20.08.00014
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Adjustment ID
                  Outlet:
                    type: string
                    description: Name of the outlet
                  Date:
                    type: string
                    description: Date of the Adjustment
                  Number:
                    type: string
                    description: Number of the adjusment
                  PIC:
                    type: string
                    description: Person in charge of the Adjusment
                  Type:
                    type: string
                    description: Type of the Adjusment
                  State:
                    type: string
                    description: Progress/State of the adjusment
                  Note:
                    type: string
                    description: Adjusment Note
                  AdjustedInventory:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Item ID in inventory adjustment created
                          x-stoplight:
                            id: txq17jo3dksnc
                        Variant:
                          type: string
                          description: Adjusted Product Variant Name
                        VariantID:
                          type: string
                          description: Adjusted Product Variant ID
                        Code:
                          type: string
                          description: Adjusted Product Variant Code
                        Quantity:
                          type: integer
                          description: Adjusted Product Variant Quantity
                        UnitCost:
                          type: number
                          description: Adjusted Product Variant Unit Cost
                        UnitPrice:
                          type: number
                          description: Adjusted Product Variant Unit Selling Price
                        TotalCost:
                          type: number
                          description: Total Unit of the adjusted product
                        TotalPrice:
                          type: number
                          description: Total Seling Price of the adjusted product
                        Price:
                          type: number
                          description: Adjusted Product Variant Unit Selling Price
                  CountedInventory:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Counted Product ID
                        Variant:
                          type: string
                          description: Counted Product Variant Name
                        VariantID:
                          type: string
                          description: Counted Product Variant ID
                        Code:
                          type: string
                          description: Counted Product Variant Code
                        Counted:
                          type: integer
                          description: Counted Product Variant Counted Quantity
                        Actual:
                          type: integer
                          description: Counted Product Variant Actual Quantity
                        Difference:
                          type: integer
                          description: Counted Product Variant Difference Quantity
              example:
                ID: 7da1930f-7be5-4796-b55b-32dfbb0ac026
                Outlet: Outlet1
                Date: '2020-08-31T00:00:00'
                Number: 20.08.00014
                PIC: Ferdi
                Type: UpdateInventory
                State: Accepted
                Note: ''
                AdjustedInventory:
                  - ID: 59127ed0-46ec-44a0-80e1-9bff638dca8b
                    Variant: Denim Shirt (M)
                    VariantID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                    Code: 1342M
                    Quantity: 7
                    UnitCost: 80405.87
                    UnitPrice: 500000
                    TotalCost: 562841.09
                    TotalPrice: 3500000
                CountedInventory:
                  - ID: 56967c0a-b86a-4085-a9f3-a897bb4e488a
                    Variant: Denim Shirt (M)
                    VariantID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                    Code: 1342M
                    Counted: 5
                    Actual: -2
                    Difference: 7
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Adjustment/ID:
    get:
      tags:
        - Inventory Adjustment
      operationId: GetAdjustmentByID
      summary: Get Adjustment By ID
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Adjustment detail based on ID Adjustment.


        Required Group Role: "**Adjustment**" - "**VIEW**"
      parameters:
        - name: ID
          in: query
          description: ID of the adjustment
          required: true
          schema:
            type: string
          example: 7da1930f-7be5-4796-b55b-32dfbb0ac026
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Adjustment ID
                  Outlet:
                    type: string
                    description: Name of the outlet
                  Date:
                    type: string
                    description: Date of the Adjustment
                  Number:
                    type: string
                    description: Number of the adjusment
                  PIC:
                    type: string
                    description: Person in charge of the Adjusment
                  Type:
                    type: string
                    description: Type of the Adjusment
                  State:
                    type: string
                    description: Progress/State of the adjusment
                  Note:
                    type: string
                    description: Adjusment Note
                  AdjustedInventory:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Item ID in inventory adjustment created
                          x-stoplight:
                            id: txq17jo3dksnc
                        Variant:
                          type: string
                          description: Adjusted Product Variant Name
                        VariantID:
                          type: string
                          description: Adjusted Product Variant ID
                        Code:
                          type: string
                          description: Adjusted Product Variant Code
                        Quantity:
                          type: integer
                          description: Adjusted Product Variant Quantity
                        UnitCost:
                          type: number
                          description: Adjusted Product Variant Unit Cost
                        UnitPrice:
                          type: number
                          description: Adjusted Product Variant Unit Selling Price
                        TotalCost:
                          type: number
                          description: Total Unit of the adjusted product
                        TotalPrice:
                          type: number
                          description: Total Seling Price of the adjusted product
                        Price:
                          type: number
                          description: Adjusted Product Variant Unit Selling Price
                  CountedInventory:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Counted Product ID
                        Variant:
                          type: string
                          description: Counted Product Variant Name
                        VariantID:
                          type: string
                          description: Counted Product Variant ID
                        Code:
                          type: string
                          description: Counted Product Variant Code
                        Counted:
                          type: integer
                          description: Counted Product Variant Counted Quantity
                        Actual:
                          type: integer
                          description: Counted Product Variant Actual Quantity
                        Difference:
                          type: integer
                          description: Counted Product Variant Difference Quantity
              example:
                ID: 7da1930f-7be5-4796-b55b-32dfbb0ac026
                Outlet: Outlet1
                Date: '2020-08-31T00:00:00'
                Number: 20.08.00014
                PIC: Ferdi
                Type: UpdateInventory
                State: Accepted
                Note: ''
                AdjustedInventory:
                  - ID: 59127ed0-46ec-44a0-80e1-9bff638dca8b
                    Variant: Denim Shirt (M)
                    VariantID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                    Code: 1342M
                    Quantity: 7
                    UnitCost: 80405.87
                    UnitPrice: 500000
                    TotalCost: 562841.09
                    TotalPrice: 3500000
                CountedInventory:
                  - ID: 56967c0a-b86a-4085-a9f3-a897bb4e488a
                    Variant: Denim Shirt (M)
                    VariantID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                    Code: 1342M
                    Counted: 5
                    Actual: -2
                    Difference: 7
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Adjustment/WithTotalCount:
    get:
      tags:
        - Inventory Adjustment
      operationId: ListAdjustmentWithTotalCount
      summary: List Adjustment With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Adjustment List With Total Count


        Required Group Role: "**Adjustment**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - PageNumber
                - PageSize
                - To
              type: object
              properties:
                From:
                  type: string
                  description: 'From Date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To Date (format: yyyy-mm-dd)'
                PageNumber:
                  type: number
                  description: |
                    The number of page data to be displayed
                PageSize:
                  type: number
                  description: |
                    The number of rows returned by the API
              example:
                From: '2018-10-01'
                To: '2018-10-31'
                PageNumber: 1
                PageSize: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Adjustment Created Outlet Name
                        Date:
                          type: string
                          description: 'Adjustment Created Date '
                        Number:
                          type: string
                          description: Adjustment Created Number
                        PIC:
                          type: string
                          description: Person in Charge of adjusment created
                        InvoiceNote:
                          type: string
                          description: Note of the Adjusment created
                        State:
                          type: string
                          description: Progress/State of the adjusment
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Date: '2018-10-30T00:00:00'
                    Number: 2018/11/07.0001
                    PIC: John Doe
                    InvoiceNote: Test Adjustment
                    State: Accepted
                  - Outlet: Outlet1
                    Date: '2018-10-29T00:00:00'
                    Number: Oct 29, 2018.973265
                    PIC: cron runner
                    InvoiceNote: Test Adjustment
                    State: Accepted
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: String '22018-10-01' was not recognized as a valid DateTime.
                StackTrace: "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at System.DateTime.Parse(String s)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 25\r\n   at POS.WEB.Controllers.v3.AdjustmentController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\AdjustmentController.cs:line 92"
      x-codegen-request-body-name: body
  /Adjustment/Workflow:
    get:
      tags:
        - Inventory Adjustment
      operationId: GetAdjustmentWorkflow
      summary: Get Adjustment Workflow
      description: '> Get Adjustment Workflow based on configuration set in the system'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Workflow:
                    type: integer
                    enum:
                      - 1
                      - 2
                    description: >
                      Workflow of the Adjustment (1 = No Approval (Instant), 2 =
                      With Approval)
              example:
                Workflow: 1
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Bill/Number:
    get:
      tags:
        - Bill
      operationId: getbillbynumber
      summary: Get a Bill By Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get a Supplier Bill detail based on bill number.


        You must have "**SupplierBill**" role in "**Orders**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet name
                Number:
                  type: string
                  description: Number of supplier bill. This is primary key for the object
            example:
              Outlet: Outlet1
              Number: 19.11.14.000000003
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                  Outlet:
                    type: string
                    description: Outlet Name of bill crated
                  Number:
                    type: string
                    description: 'Bill number transaction '
                  Date:
                    type: string
                    description: Bill transaction date(yyyy/mm/dd)
                  DueDate:
                    type: string
                    description: Due date Bill transaction date(yyyy/mm/dd)
                  Supplier:
                    type: object
                    properties: {}
                    description: Detail personal info of supplier
                  CreatorID:
                    type: string
                    description: ID of the user that create the supplier bill
                  Created:
                    type: string
                    description: Bill created datetime
                  Discount1:
                    type: integer
                    description: Discount percentage that given in bill
                  DiscountAmount:
                    type: number
                    description: Discount amount that given in bill
                  Gross:
                    type: number
                    description: 'Total amount before discount '
                  DiscountTotal:
                    type: number
                    description: 'Total discount in bill '
                  TaxType:
                    type: string
                    description: Tax type assigned
                  Tax:
                    type: integer
                    description: Tax Percentage
                  Purchase:
                    type: number
                    description: total nett purchase amount
                  PurchaseNTax:
                    type: number
                    description: Total amount in bill after tax
                  Delivery:
                    type: string
                    description: Delivery State
                    enum:
                      - Waiting
                      - Received
                      - Partial
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        VariantID:
                          type: string
                          description: ID of variant
                        Name:
                          type: string
                          description: Name of variant
                        Code:
                          type: string
                          description: Code of variant
                        Quantity:
                          type: integer
                          description: Product quantity bought
                        Price:
                          type: number
                          description: Price you pay for the product
                        Discount:
                          type: integer
                          description: Discount of product
                        Note:
                          type: string
                          description: note for variant
                  Payments:
                    type: array
                    items:
                      type: object
                      properties:
                        Date:
                          type: string
                          description: Date of bill payment
                        Amount:
                          type: number
                          description: Total amount supplier bill to be paid
                        Method:
                          type: string
                          description: Payment method
                        Code:
                          type: string
                          description: Code for payment method (optional)
                        PaymentNote:
                          type: string
                          description: note for mark the payment (optional)
              example:
                ID: ff7448c9-21f1-4c05-ac9e-1e71d829cc9c
                Outlet: Outlet1
                Number: 19.11.14.000000003
                Date: '2019-11-14T00:00:00'
                DueDate: '2020-08-25T00:00:00'
                Supplier: {}
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2019-11-14T14:19:44.25'
                Discount1: 0
                DiscountAmount: 0
                Gross: 2660000
                DiscountTotal: -166854688
                TaxType: No Tax
                Tax: 0
                Purchase: 169514688
                PurchaseNTax: 169514688
                Delivery: Received
                Variants:
                  - VariantID: 44061928-caf9-412f-8321-0ec93ee6963e
                    Name: Denim Shirt(M)
                    Code: '50918'
                    Quantity: 1
                    Price: 664000
                    Discount: 0
                    Note: Test Note
                  - VariantID: 44061928-caf9-412f-8321-0ec93ee6678e
                    Name: Denim Shirt(L)
                    Code: '100430'
                    Quantity: 2
                    Price: 666000
                    Discount: 0
                    Note: Test Note
                  - VariantID: 44061928-caf9-4198-8321-0ec93ee6963e
                    Name: Denim Shirt(XL)
                    Code: '100531'
                    Quantity: 1
                    Price: 664000
                    Discount: 0
                    Note: Test Note
                Payments:
                  - Date: '2019-11-14T00:00:00'
                    Amount: 169514688
                    Method: Cash
                    Code: '1239123'
                    PaymentNote: Test Note
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Bill/WithTotalCount:
    get:
      tags:
        - Bill
      operationId: ListBillWithTotalCount
      summary: List Bills With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get list of Supplier Bill detail with Total Count


        You must have "**SupplierBill**" role in "**Orders**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: 'From date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To date (format: yyyy-mm-dd)'
                Outlet:
                  type: string
                  description: Name of the outlet
                PageNumber:
                  type: number
                  description: The number of page data to be displayed
                PageSize:
                  type: number
                  description: The number of rows returned by the API
            example:
              From: '2020-06-01'
              To: '2020-06-30'
              Outlet: Outlet1
              PageNumber: 1
              PageSize: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Transaction ID that has been made
                        Outlet:
                          type: string
                          description: Name of the outlet
                        Number:
                          type: string
                          description: Invoice bill number
                        Supplier:
                          type: string
                          description: |
                            Name of the supplier
                        Type:
                          type: string
                          description: Purchase order type
                        Date:
                          type: string
                          description: Date of purchase transaction
                        Due:
                          type: string
                          description: due date of the invoice bill
                        Amount:
                          type: number
                          description: Total amount transaction
                        Delivery:
                          type: string
                          description: delivery status / progres of the invoice bill
                          enum:
                            - Waiting
                            - Received
                            - Partial
                        Payment:
                          type: string
                          description: payment status / progress of the invoice bill
                        Created:
                          type: string
                          description: Invoice created Transaction Date by system
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - ID: d688ff9e-0671-456a-b6f0-223acaa5ee7b
                    Outlet: Outlet1
                    Number: 20.06.00004
                    Supplier: hendry
                    Type: Normal
                    Date: '2020-06-24T00:00:00'
                    Due: '2020-06-24T00:00:00'
                    Amount: 100000
                    Delivery: Received
                    Payment: Paid
                    Created: '2020-06-24T13:36:12.97'
                  - ID: ed6ffe55-f08e-4806-be1d-e55f3927e11b
                    Outlet: Outlet1
                    Number: 20.06.00003
                    Supplier: PT ABC
                    Type: Normal
                    Date: '2020-06-24T00:00:00'
                    Due: '2020-06-24T00:00:00'
                    Amount: 100000
                    Delivery: Received
                    Payment: Paid
                    Created: '2020-06-24T11:40:27.703'
                  - ID: 8169eac5-c2a7-4845-8f96-0b5a8980957a
                    Outlet: Outlet1
                    Number: 20.06.00002
                    Supplier: PT ABC
                    Type: Normal
                    Date: '2020-06-24T00:00:00'
                    Due: '2020-06-24T00:00:00'
                    Amount: 100000
                    Delivery: Received
                    Payment: Paid
                    Created: '2020-06-24T11:24:53.027'
                  - ID: 057a8d3f-3927-4d61-a533-cd554d2c01e8
                    Outlet: Outlet1
                    Number: OTL01-20-06-02
                    Supplier: PT ABC
                    Type: Normal
                    Date: '2020-06-19T00:00:00'
                    Due: '2020-06-24T00:00:00'
                    Amount: 87289.13
                    Delivery: Received
                    Payment: Paid
                    Created: '2020-06-19T14:13:13.817'
                  - ID: 1b5f9f1f-e836-4330-b79d-9e7737893a78
                    Outlet: Outlet1
                    Number: OTL01-20-06-01
                    Supplier: PT ABC
                    Type: Normal
                    Date: '2020-06-08T00:00:00'
                    Due: '2020-06-24T00:00:00'
                    Amount: 3138.12
                    Delivery: Received
                    Payment: Paid
                    Created: '2020-06-08T08:40:54.55'
                TotalCount: 100
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: "   at System.Text.Json.JsonElement.TryGetProperty(String propertyName, JsonElement& value)\r\n   at POS.Library.Helper.JSONPropertyChecker.HasProperty(JsonElement obj, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 124\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 12\r\n   at POS.WEB.Controllers.v3.BillController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\BillController.cs:line 110"
      x-codegen-request-body-name: body
  /Category/ID:
    get:
      tags:
        - Category
      operationId: GetCategoryByID
      summary: Get a Category By ID
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) 
        with the same endpoint**


        <br>

        Get a Category based on ID


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ID
              type: object
              properties:
                ID:
                  type: string
                  description: >-
                    Get from ID of category that you want to get the detail .
                    This is primary key for the object
              example:
                ID: 328ca218-0f0b-449c-8d0d-2a55113ce431
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ParentID:
                    type: string
                  TypeID:
                    type: integer
                  Lvl:
                    type: integer
                  Description:
                    type: string
                  Code:
                    type: string
                  SKUSeed:
                    type: integer
                  Sort:
                    type: string
                  UOM:
                    type: string
                  MeasurementID:
                    type: string
                  UOMQ:
                    type: string
                  Name:
                    type: string
                  Model:
                    type: string
                  ID:
                    type: string
                  Parent:
                    type: string
                  Measurement:
                    type: string
                  Discontinued:
                    type: boolean
                x-examples:
                  Example 1:
                    ParentID: ed8e8964-d3ab-4101-834b-426b85b241b0
                    TypeID: 0
                    Lvl: 0
                    Description: Top/Men
                    Code: TM
                    SKUSeed: 0
                    Sort: Men
                    UOM: pcs
                    MeasurementID: 00000000-0000-0000-0000-000000000000
                    UOMQ: pcs
                    Name: Top/Men
                    Model: Men
                    ID: 328ca218-0f0b-449c-8d0d-2a55113ce431
                    Parent: Top
                    Measurement: Size
                    Discontinued: false
              example:
                ParentID: ed8e8964-d3ab-4101-834b-426b85b241b0
                TypeID: 0
                Lvl: 0
                Description: Top/Men
                Code: TM
                SKUSeed: 0
                Sort: Men
                UOM: pcs
                MeasurementID: 00000000-0000-0000-0000-000000000000
                UOMQ: pcs
                Name: Top/Men
                Model: Men
                ID: 328ca218-0f0b-449c-8d0d-2a55113ce431
                Parent: Top
                Measurement: Size
                Discontinued: false
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Customer/Email:
    get:
      tags:
        - Customer
      operationId: GetCustomerByEmail
      summary: Get Customer By Email
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get a customer based on customer email


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Email
              type: object
              properties:
                Email:
                  type: string
                  description: Email address of customer. the primary key for the object
            example:
              Email: tafta@dealpos.com
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of customer
                  Name:
                    type: string
                    description: Name of customer
                  Email:
                    type: string
                    description: Email Address of customer
                  Title:
                    type: string
                    description: Title Name of customer
                  FirstName:
                    type: string
                    description: First name of customer
                  LastName:
                    type: string
                    description: Last name of customer
                  Gender:
                    type: string
                    description: Gender of customer
                  Code:
                    type: string
                    description: Code of customer
                  Phone:
                    type: string
                    description: Phone number of customer
                  MobilePhone:
                    type: string
                    description: Mobile number of customer
                  Fax:
                    type: string
                    description: Fax number of customer
                  Address:
                    type: string
                    description: Address of customer
                  City:
                    type: string
                    description: City of customer
                  Nationality:
                    type: string
                    description: Nationality of customer
                  ReferredBy:
                    type: string
                    description: Customer ID who referred this customer
                  Identification:
                    type: string
                    description: identification number of customer
                  Birthday:
                    type: string
                    description: Birthday of customer
                  JoinDate:
                    type: string
                    description: Join date of customer
                  Group:
                    type: string
                    description: Group of customer
                  ExpiredGroup:
                    type: string
                    description: Expired group of customer
                  SignUpOutlet:
                    type: string
                    description: Sign up oulet when created the new customer
                  ImageURL:
                    type: string
                    description: Image url of customer
                  LoyaltyPoint:
                    type: integer
                    description: Loyalty point of customer
                  Status:
                    type: string
                    description: 'Status Customer '
                    default: Active / WaitingForApproval / Suspended
              example:
                ID: 5acffe34-346f-4888-afd8-0a551e556681
                Name: Tafta tata
                Email: Tafta@dealpos.com
                Title: Mr.
                FirstName: Tafta
                LastName: tata
                Gender: Male
                Code: HW008
                Phone: 021-66698155
                MobilePhone: '081588818888'
                Fax: '6325894'
                Address: Jl. Lenteng Agung
                City: Jakarta
                Nationality: Indonesian
                ReferredBy: 449e35af-190d-4137-aa13-9cf2cf6af57a
                Identification: '3173656111'
                Birthday: 18 Mar 1994
                JoinDate: 22 Jul 2019
                Group: Gold
                ExpiredGroup: 31 Jul 2019
                SignUpOutlet: Outlet1
                ImageURL: >-
                  //res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg
                LoyaltyPoint: 88
                Status: Active
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /TransferOrder:
    post:
      tags:
        - TransferOrder
      operationId: CreateTransferOrder
      summary: Create TransferOrder
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new &
        the old ones can be use.


        Create an Outlet Delivery


        You must have "**CREATE**" role in "**Logistic**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Standard Product
                  required:
                    - Date
                    - Destination
                    - Number
                    - Outlet
                    - Variants
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Source Name
                    Destination:
                      type: string
                      description: Outlet destination name
                    Date:
                      type: string
                      description: Transfer order date
                    Number:
                      type: string
                      description: Transfer order number
                    Courier:
                      type: string
                      description: Courier name
                    State:
                      type: string
                      description: >-
                        Delivery Status of Transfer Order

                        - If "State" is filled, the value gets from API push

                        - When "State" is empty, the value will be following
                        config Transfer Order Workflow
                      enum:
                        - Approved
                        - Dispatched
                        - Received
                    Note:
                      type: string
                      description: Delivery note
                    Variants:
                      type: array
                      items:
                        required:
                          - Code
                          - Price
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant code
                          Quantity:
                            type: string
                            description: Variant quantity to be sent
                          Price:
                            type: number
                            description: Variant price
                          Note:
                            type: string
                            description: Variant note
                          Serial:
                            type: array
                            description: Use this property only for product type Serialized
                            items:
                              $ref: '#/components/schemas/VariantSerial'
                            x-stoplight:
                              id: l84mdohg3ci1x
                  example:
                    Outlet: Outlet1
                    Destination: Outlet2
                    Date: 10/10/2018
                    Number: 18.07.02.0000002
                    Courier: JNE
                    Note: Yes Kirim
                    Variants:
                      - Code: '2012'
                        Quantity: '6'
                        Price: 150000
                        Note: Cotton Combet 30's
                      - Code: '2012'
                        Quantity: '6'
                        Price: 150000
                        Note: Cotton Combet 30's
                - title: Serialized Product
                  required:
                    - Outlet
                    - Destination
                    - Number
                    - Date
                    - Variants
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet source name
                    Destination:
                      type: string
                      description: Outlet destination name
                    Date:
                      type: string
                      description: Transfer order date
                    Number:
                      type: string
                      description: Transfer order number
                    Courier:
                      type: string
                      description: Courier name
                    State:
                      type: string
                      description: >-
                        Delivery Status of Transfer Order

                        - If "State" is filled, the value gets from API push

                        - When "State" is empty, the value will be following
                        config Transfer Order Workflow
                      enum:
                        - Approved
                        - Dispatched
                        - Received
                    Note:
                      type: string
                      description: Transfer order note
                    Variants:
                      type: array
                      items:
                        required:
                          - Code
                          - Quantity
                          - Price
                          - Serial
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant code
                          Quantity:
                            type: string
                            description: Variant quantity to be delivered
                          Price:
                            type: number
                            description: Variant price
                          Discount:
                            type: number
                            description: Discount applied to the variant
                          Serial:
                            type: array
                            items:
                              required:
                                - Number
                                - Quantity
                              type: object
                              properties:
                                Number:
                                  type: string
                                  description: Serial number
                                Quantity:
                                  type: number
                                  description: Quantity associated with the serial
                          Note:
                            type: string
                            description: Variant note
                  example:
                    Outlet: Outlet1
                    Destination: Outlet2
                    Date: 10/10/2018
                    Number: 18.07.02.0000002
                    Courier: JNE
                    Note: Yes Kirim
                    Variants:
                      - Code: SM-S24
                        Quantity: '2'
                        Price: 15000000
                        Discount: 0
                        Serial:
                          - Number: SERIAL02
                            Quantity: 1
                          - Number: SERIAL03
                            Quantity: 1
                        Note: Cotton Combet 30's
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Transfer Order ID
              example:
                ID: 0b151d3f-e7ab-44dd-a63a-dbc4019d5cad
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    put:
      tags:
        - TransferOrder
      operationId: UpdateTransferOrder
      summary: Update TransferOrder
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new &
        the old ones can be use.


        Update an Outlet Delivery


        You must have "**EDIT**" role in "**Logistic**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Standard Product
                  required:
                    - Date
                    - Destination
                    - Outlet
                    - Number
                    - Variants
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet source name
                    Destination:
                      type: string
                      description: Outlet destination name
                    Date:
                      type: string
                      description: Delivery date
                    Number:
                      type: string
                      description: Invoice delivery number
                    Courier:
                      type: string
                      description: Courier name
                    Note:
                      type: string
                      description: Delivery note
                    Variants:
                      type: array
                      items:
                        required:
                          - Code
                          - Price
                          - Quantity
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant code
                          Quantity:
                            type: string
                            description: Variant quantity to be delivered
                          Price:
                            type: number
                            description: Variant price
                          Note:
                            type: string
                            description: Variant note
                  example:
                    Outlet: Outlet1
                    Destination: Outlet2
                    Date: 10/10/2018
                    Number: 18.07.02.0000002
                    Courier: JNE
                    Note: Yes Kirim
                    Variants:
                      - Code: '2012'
                        Quantity: '6'
                        Price: 150000
                        Note: Cotton Combet 30's
                      - Code: '2012'
                        Quantity: '6'
                        Price: 150000
                        Note: Cotton Combet 30's
                - title: Serialized Product
                  required:
                    - Outlet
                    - Destination
                    - Number
                    - Date
                    - Variants
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet source name
                    Destination:
                      type: string
                      description: Outlet destination name
                    Number:
                      type: string
                      description: Transfer order number
                    Date:
                      type: string
                      description: Transfer order date
                    Courier:
                      type: string
                      description: Courier name
                    Note:
                      type: string
                      description: Transfer order note
                    Variants:
                      type: array
                      items:
                        required:
                          - Code
                          - Quantity
                          - Price
                          - Serial
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant code
                          Quantity:
                            type: string
                            description: Variant quantity to be delivered
                          Price:
                            type: number
                            description: Variant price
                          Discount:
                            type: number
                            description: Discount applied to the variant
                          Serial:
                            type: array
                            items:
                              required:
                                - Number
                                - Quantity
                              type: object
                              properties:
                                Number:
                                  type: string
                                  description: Serial number
                                Quantity:
                                  type: number
                                  description: Quantity associated with the serial
                          Note:
                            type: string
                            description: Variant note
                  example:
                    Outlet: Outlet1
                    Destination: Outlet2
                    Date: 10/10/2018
                    Number: 18.07.02.0000002
                    Courier: JNE
                    Note: Yes Kirim
                    Variants:
                      - Code: SM-S24
                        Quantity: '2'
                        Price: 15000000
                        Discount: 0
                        Serial:
                          - Number: SERIAL02
                            Quantity: 1
                          - Number: SERIAL03
                            Quantity: 1
                        Note: Cotton Combet 30's
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Transfer Order ID
              example:
                ID: 0b151d3f-e7ab-44dd-a63a-dbc4019d5cad
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    get:
      tags:
        - TransferOrder
      operationId: ListTransferOrder
      summary: List TransferOrder
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new &
        the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/OutletDelivery/p)**


        <br>

        Get List of Outlet Delivery


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: Delivery date filter from
                To:
                  type: string
                  description: Delivery Date filter To
                PageNumber:
                  type: number
                  description: Start page
                PageSize:
                  type: number
                  description: Total data delivery list that will be shown
                Status:
                  type: string
                  description: >-
                    Fulfillment Status (if value null / blank means show all
                    status)
                  example: Request / Approved / Dispatched / Received
                  x-stoplight:
                    id: o2398dago8fqa
              example:
                From: '2019-01-01'
                To: '2019-01-30'
                PageNumber: 1
                PageSize: 20
                Status: ''
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Number:
                      type: string
                      description: Outlet Delivery Order Number
                    Date:
                      type: string
                      description: 'Date time of outlet delivery '
                    Courier:
                      type: string
                      description: 'Courier Name '
                    Outlet:
                      type: string
                      description: Source of outlet delivery
                    OutletCode:
                      type: string
                      description: Code of source outlet delivery
                    Destination:
                      type: string
                      description: Destination of outlet delivery
                    DestinationCode:
                      type: string
                      description: Code of destination outlet delivery
                    TypeName:
                      type: string
                      description: Outlet Delivery Type
                    Status:
                      type: string
                      description: Outlet delivery status
                    Created:
                      type: string
                      description: Datetime of outlet delivery order
                    Quantity:
                      type: integer
                      description: Total quantity outlet delivery order
                    Price:
                      type: number
                      description: Total price for the outlet delivery
              example:
                - Number: 19.01.18.000000002
                  Date: '2019-01-18T00:00:00'
                  Courier: JsonSerializerOptions
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-18T15:14:48.64'
                  Quantity: 2
                - Number: 19.01.18.000000001
                  Date: '2019-01-18T00:00:00'
                  Courier: JsonSerializerOptions
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Dispatched
                  Created: '2019-01-18T15:13:27.377'
                  Quantity: 2
                - Number: 19.01.17.000000005
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-17T16:48:30.813'
                  Quantity: 8
                - Number: 19.01.17.000000004
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Dispatched
                  Created: '2019-01-17T16:47:09.893'
                  Quantity: 5
                - Number: 19.01.17.000000003
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-17T13:59:16.77'
                  Quantity: 1
                - Number: 19.01.17.000000001
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-17T10:08:34.61'
                  Quantity: 1
                - Number: 19.01.17.000000002
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 2
                  OutletCode: OT2
                  Destination: Outlet 3
                  DestinationCode: OT3
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-17T15:57:50.71'
                  Quantity: 7
                - Number: 19.01.17.000000001
                  Date: '2019-01-17T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 2
                  OutletCode: OT2
                  Destination: Outlet 3
                  DestinationCode: OT3
                  TypeName: Restock
                  Status: Dispatched
                  Created: '2019-01-17T15:49:20.533'
                  Quantity: 7
                - Number: 19.01.15.000000004
                  Date: '2019-01-15T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-15T11:15:57.027'
                  Quantity: 3
                - Number: 19.01.15.000000003
                  Date: '2019-01-15T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-15T11:14:21.953'
                  Quantity: 7
                - Number: 19.01.15.000000002
                  Date: '2019-01-15T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-15T11:07:44.59'
                  Quantity: 3
                - Number: 19.01.15.000000001
                  Date: '2019-01-15T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-15T10:43:41.89'
                  Quantity: 2
                - Number: 19.01.14.000000001
                  Date: '2019-01-14T00:00:00'
                  Courier: JNI
                  Outlet: Outlet 1
                  OutletCode: OT1
                  Destination: Outlet 2
                  DestinationCode: OT2
                  TypeName: Restock
                  Status: Received
                  Created: '2019-01-14T16:08:48.027'
                  Quantity: 10
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    delete:
      tags:
        - TransferOrder
      operationId: DeleteTransferOrder
      summary: Delete TransferOrder
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new &
        the old ones can be use.


        Delete Outlet Delivery


        You must have "**DELETE**" role in "**Logistic**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - OutletSource
              type: object
              properties:
                OutletSource:
                  type: string
                  description: Outlet source name
                Number:
                  type: string
                  description: Delivery number
            example:
              OutletSource: Outlet1
              Number: 18.07.02.0000002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                description: Delivery has been deleted
              example: Number 18.07.02.0000002 from source Test2 succesfully deleted.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Product/Code:
    get:
      tags:
        - Product
      operationId: GetProductByCode
      summary: Get a Product By Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoints**


        <br>

        Get Product Detail By Code


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ProductCode
              type: object
              properties:
                ProductCode:
                  type: string
                  description: The code of the product to be provide.
            example:
              ProductCode: '1003'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: the ID product to be showed
                  Category:
                    type: string
                    description: the category of the product to be showed
                  Name:
                    type: string
                    description: the name of the product to be showed
                  SupplierName:
                    type: string
                    description: the supplier name of the product
                  Brand:
                    type: string
                    description: >-
                      Brand name of product (Backwards compatibility with
                      property "BrandName")
                  Code:
                    type: string
                    description: the code of the product
                  Discontinued:
                    type: boolean
                    description: the availibility of the product
                  Description:
                    type: string
                    description: description of the product
                  Storage:
                    type: array
                    description: storage location of the product
                    items:
                      type: object
                      properties:
                        OutletName:
                          type: string
                          description: Outlet's Storage Location
                        StorageName:
                          type: string
                          description: Name of Storage
                  Tags:
                    type: array
                    description: tags of the product
                    items:
                      type: string
                  ThumbnailURL:
                    type: string
                    description: Thumbnail URL of product image
                  ImageURL:
                    type: string
                    description: the image url of the product
                  ExtraImagesURL:
                    type: array
                    items:
                      type: string
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: the ID of the variant product
                        Model:
                          type: string
                          description: the model name variant of the product
                        Code:
                          type: string
                          description: the SKU code of the product variants
                        UnitCost:
                          type: number
                          description: the unit cost variant of the product
                        UnitPrice:
                          type: number
                          description: the unit price variant of the products
                        Discount:
                          type: number
                          description: variant discount percentage of the products
                        Discontinued:
                          type: boolean
                          description: the availability variant of the product
                        Description:
                          type: string
                          description: Description of variant
              example:
                ID: f74bba14-99f0-4246-84bf-3064e3d516c3
                Category: Top/Men
                Name: Captain America T-Shirt
                SupplierName: PT ABC
                Brand: Nike
                Code: '1003'
                Discontinued: false
                Description: New Arrival
                Storage:
                  - OutletName: Outlet1
                    StorageName: Rack1
                Tags:
                  - New Brand
                ThumbnailURL: >-
                  //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                ImageURL: >-
                  //res.cloudinary.com/dealpos/image/upload/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url
                ExtraImagesURL:
                  - >-
                    //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg
                  - >-
                    //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg
                  - >-
                    //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg
                Variants:
                  - ID: a39787d8-2c20-428c-babf-b61c257d337e
                    Model: Medium
                    Code: 1003M
                    UnitCost: 125000
                    UnitPrice: 200000
                    Discount: 10
                    Discontinued: false
                    Description: Variant Description
                  - ID: 7293d4b4-20c9-44ee-898b-ffafc294f259
                    Model: Large
                    Code: 1003L
                    UnitCost: 150000
                    UnitPrice: 225000
                    Discount: 10
                    Discontinued: false
                    Description: Variant Description
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Product not found.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: >-
                  Procedure or function 'GetProductIDByCode' expects parameter
                  '@Code', which was not supplied.
                StackTrace: '   at Microsoft.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Product/WithInventoryByListID:
    get:
      tags:
        - Product
      operationId: GetProductListWithInventoryByListID
      summary: Get Product List With Inventory By List ID
      description: Get Product List WIth Inventory By List ID
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: without Composite
                  required:
                    - From
                    - To
                    - ListOutlet
                    - ListID
                  type: object
                  properties:
                    From:
                      type: number
                      description: Quantity Start
                      x-stoplight:
                        id: to48ajmf3eps3
                    To:
                      type: number
                      description: Quantity To
                      x-stoplight:
                        id: 5qty8xgrifqd1
                    ListOutlet:
                      type: array
                      description: Array list of Outlet that use to get Product ID
                      items:
                        type: string
                    ListID:
                      type: array
                      description: Array list of multiple product ID from chosen outlet
                      items:
                        type: string
                    Discontinued:
                      type: string
                      description: Show discontinued status of Product and Variant
                      default: 'No'
                      enum:
                        - 'No'
                        - 'Yes'
                        - All
                      x-stoplight:
                        id: smvwmp8lguwjr
                  example:
                    From: 0
                    To: 10
                    ListOutlet:
                      - Outlet1
                    ListID:
                      - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                      - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                    Discontinued: 'No'
                - title: with Composite
                  required:
                    - From
                    - To
                    - ListOutlet
                    - ListID
                  type: object
                  properties:
                    From:
                      type: number
                      description: Quantity Start
                      x-stoplight:
                        id: to48ajmf3eps3
                    To:
                      type: number
                      description: Quantity To
                      x-stoplight:
                        id: 5qty8xgrifqd1
                    ListOutlet:
                      type: array
                      description: Array list of Outlet that use to get Product ID
                      items:
                        type: string
                    ListID:
                      type: array
                      description: Array list of multiple product ID from chosen outlet
                      items:
                        type: string
                    Discontinued:
                      type: string
                      description: Show discontinued status of Product and Variant
                      default: 'No'
                      enum:
                        - 'No'
                        - 'Yes'
                        - All
                    CompositeInventory:
                      type: boolean
                      description: Indicates if inventory is composite
                      x-stoplight:
                        id: smvwmp8lguwjr
                  example:
                    From: 0
                    To: 10
                    ListOutlet:
                      - Outlet1
                    ListID:
                      - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                      - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                    Discontinued: 'No'
                    CompositeInventory: true
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - Created
                  type: object
                  properties:
                    ID:
                      type: string
                      description: 'ID number of Product '
                    Name:
                      type: string
                      description: Name of product
                    Code:
                      type: string
                      description: Code of Product
                    CategoryID:
                      type: string
                      description: ID number of product category
                    Category:
                      type: string
                      description: Name of product category
                    Description:
                      type: string
                      description: Description of product
                    ThumbnailUrl:
                      type: string
                      description: Thumbnail URL of product image
                    ImageUrl:
                      type: string
                      description: image url from product image
                    Created:
                      type: string
                      description: date when product is created
                    Discontinued:
                      type: boolean
                      description: The Availablity status of the product
                      x-stoplight:
                        id: 1wm8nsyylnlhg
                    Variants:
                      type: array
                      description: 'Variation for this product ex: size / color'
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                            description: Id number of variant from product
                          Model:
                            type: string
                            description: >-
                              Model variant from product, exp: Size L/M/L or
                              Colour Red/White/Blue
                          Code:
                            type: string
                            description: unique code of variant model
                          Inventory:
                            type: integer
                            description: Available Quantity (depricated, use I object)
                          Discontinued:
                            type: boolean
                            description: The availablity of the variants
                            x-stoplight:
                              id: i7rhtslokw809
                          I:
                            type: object
                            properties:
                              OnHand:
                                type: integer
                                description: On Hand Quantity
                              Allocated:
                                type: integer
                                description: Allocated Quantity
                              Available:
                                type: integer
                                description: Available Quantity
                            description: Inventory for the variant
                          UnitPrice:
                            type: number
                            description: Price of variant model.
              example:
                - ID: 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                  Name: Denim Shirt
                  Code: '1342'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ThumbnailUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  Created: '2018-04-06T17:24:17.283'
                  Discontinued: false
                  Variants:
                    - ID: 70396e5e-4009-4e12-a9b7-9de0850bc948
                      Model: L
                      Code: 1342L
                      Discontinued: false
                      Inventory: 7
                      I:
                        OnHand: 10
                        Allocated: 3
                        Available: 7
                      UnitPrice: 250000
                    - ID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                      Model: M
                      Code: 1342M
                      Discontinued: false
                      Inventory: 8
                      I:
                        OnHand: 10
                        Allocated: 2
                        Available: 8
                      UnitPrice: 300000
                - ID: f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                  Name: Shirt
                  Code: '1002'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ThumbnailUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  Created: '2018-04-06T17:24:17.11'
                  Discontinued: false
                  Variants:
                    - ID: 397128d4-276d-4baf-aacf-a959c51b7a19
                      Model: L
                      Code: 1002L
                      Discontinued: false
                      Inventory: 10
                      I:
                        OnHand: 10
                        Allocated: 0
                        Available: 10
                      UnitPrice: 350000
                    - ID: 8ed1ff99-c135-4344-acf8-b26bedeb97e5
                      Model: M
                      Code: 1002M
                      Discontinued: false
                      Inventory: 5
                      I:
                        OnHand: 10
                        Allocated: 5
                        Available: 5
                      UnitPrice: 300000
                    - ID: 339e89d0-81e8-430a-834e-bbfa83b58f44
                      Model: S
                      Code: 1002S
                      Discontinued: false
                      Inventory: 7
                      I:
                        OnHand: 12
                        Allocated: 5
                        Available: 7
                      UnitPrice: 250000
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: There is no Outlet with the name [offl3ine]
                StackTrace: "   at POS.BLL.API.Converter.DatabaseIDConverter.ConvertOutletName(JsonElement request, POSIdentity _identity, IMemoryCache _cache, POSContext _context) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Converter\\DatabaseIDConverter.cs:line 38\r\n   at POS.WEB.Controllers.v3.ProductController.WithInventoryByListID(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\ProductController.cs:line 406"
      x-codegen-request-body-name: body
  /Product/ListID:
    get:
      tags:
        - Product
      operationId: GetProductListByID
      summary: Get Product List By ID
      description: You can query a product based on Code or by GUID
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListID
              type: object
              properties:
                ListID:
                  type: array
                  description: 'Array List of multiple product ID '
                  items:
                    type: string
            example:
              ListID:
                - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Product ID
                    Name:
                      type: string
                      description: Product Name
                    Code:
                      type: string
                      description: Product Code
                    CategoryID:
                      type: string
                      description: Category ID of Product
                    Category:
                      type: string
                      description: Category of Product
                    Description:
                      type: string
                      description: |
                        Product Description
                    ImageUrl:
                      type: string
                      description: Product image URL
                    ThumbnailUrl:
                      type: string
                      description: Thumbnail URL of product image
                    ExtraImageURL:
                      type: array
                      description: Additional Image Url
                      items:
                        type: string
                    Created:
                      type: string
                      description: Product Created Date
                    Variants:
                      type: array
                      description: 'Variation for this product, ex: size/ color'
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                          Model:
                            type: string
                          Code:
                            type: string
                          UnitPrice:
                            type: number
                          Discount:
                            type: number
                            description: discount percentage of variant's
              example:
                - ID: 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                  Name: Denim Shirt
                  Code: '1342'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ThumbnailUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                  ExtraImageURL:
                    - >-
                      //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                    - >-
                      //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg
                    - >-
                      //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg
                  Created: '2018-04-06T17:24:17.283'
                  Variants:
                    - ID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                      Model: M
                      Code: 1342M
                      UnitPrice: 500000
                      Discount: 20
                    - ID: 70396e5e-4009-4e12-a9b7-9de0850bc948
                      Model: L
                      Code: 1342L
                      UnitPrice: 250000
                      Discount: 0
                - ID: f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                  Name: Shirt
                  Code: '1002'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                  Created: '2018-04-06T17:24:17.11'
                  Variants:
                    - ID: 397128d4-276d-4baf-aacf-a959c51b7a19
                      Model: L
                      Code: 1002L
                      UnitPrice: 250000
                      Discount: 10
                    - ID: 8ed1ff99-c135-4344-acf8-b26bedeb97e5
                      Model: M
                      Code: 1002M
                      UnitPrice: 250000
                      Discount: 0
                    - ID: 339e89d0-81e8-430a-834e-bbfa83b58f44
                      Model: S
                      Code: 1002S
                      UnitPrice: 250000
                      Discount: 0
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.ProductController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\ProductController.cs:line 352"
      x-codegen-request-body-name: body
  /Product/DetailByListID:
    get:
      tags:
        - Product
      operationId: GetProductListDetailByListID
      summary: Get Product List Detail By ID
      description: |-
        Slower compared with /v3/Product/ListID
        But returns Extra Column p.Description + v.Weight
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListID
              type: object
              properties:
                ListID:
                  type: array
                  description: 'Array List of multiple product ID '
                  items:
                    type: string
            example:
              ListID:
                - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                    Name:
                      type: string
                    Code:
                      type: string
                    Category:
                      type: string
                    Brand:
                      type: string
                      description: Brand name of product
                    Description:
                      type: string
                    ThumbnailUrl:
                      type: string
                    ImageUrl:
                      type: string
                    Created:
                      type: string
                    Variants:
                      type: array
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                          Model:
                            type: string
                          Code:
                            type: string
                          Weight:
                            type: integer
                          UnitPrice:
                            type: integer
                    ProductImages:
                      type: array
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                          ProductID:
                            type: string
                          URL:
                            type: string
                          Index:
                            type: integer
                x-examples:
                  example-1:
                    - ID: 7c1a0b28-45f2-4b65-8fe5-d5043f19ed74
                      Name: Baju Bunga 2
                      Code: rohjebp3
                      Category: Bahan Cat
                      Description: ukuran tersedia saat ini hanya S
                      ImageUrl: >-
                        //res.cloudinary.com/dealpos/image/upload/net/tokoferdi2//Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg
                      Created: '2022-06-14T11:30:37.4'
                      Variants:
                        - ID: 40df733b-c4c4-4aa6-9aeb-9749bca315e5
                          Model: Default
                          Code: rohjebp3
                          Weight: 123
                          UnitPrice: 1428822
                        - ID: c3c4283c-1dd4-424b-b76b-c8e8b1581b42
                          Model: default2
                          Code: rohjebp4
                          Weight: 222
                          UnitPrice: 2333333
                      ProductImages:
                        - ID: 47cf5626-fafb-40db-aeea-8733dada55c0
                          ProductID: 7c1a0b28-45f2-4b65-8fe5-d5043f19ed74
                          URL: >-
                            //res.cloudinary.com/dealpos/image/upload/net/tokoferdi2//Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/ssclapatientmanrosesblkhi_2000x.jpg
                          Index: 1
              example:
                - ID: 7c1a0b28-45f2-4b65-8fe5-d5043f19ed74
                  Name: Baju Bunga 2
                  Code: TOP
                  Category: TOP
                  Brand: Classic
                  Description: ukuran tersedia saat ini hanya S
                  ThumbnailUrl: >-
                    //res.cloudinary.com/dealpos/image/upload/w_80/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg
                  ImageUrl: >-
                    //res.cloudinary.com/dealpos/image/upload/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg
                  Created: '2022-06-14T11:30:37.4'
                  Variants:
                    - ID: 40df733b-c4c4-4aa6-9aeb-9749bca315e5
                      Model: L
                      Code: TOPL
                      Weight: 123
                      UnitPrice: 1428822
                    - ID: c3c4283c-1dd4-424b-b76b-c8e8b1581b42
                      Model: XL
                      Code: TOPXL
                      Weight: 222
                      UnitPrice: 2333333
                  ProductImages:
                    - ID: 47cf5626-fafb-40db-aeea-8733dada55c0
                      ProductID: 7c1a0b28-45f2-4b65-8fe5-d5043f19ed74
                      URL: >-
                        //res.cloudinary.com/dealpos/image/upload/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/ssclapatientmanrosesblkhi_2000x.jpg
                      Index: 1
      x-codegen-request-body-name: body
  /Product/WithOutletPriceByListID:
    get:
      tags:
        - Product
      operationId: GetProductListWithOutletPriceByListID
      summary: Get Product List With Outlet Price By List ID
      description: Get Product List With Outlet Price By List ID
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListID
              type: object
              properties:
                ListID:
                  type: array
                  description: 'Array list of multiple product ID '
                  items:
                    type: string
            example:
              ListID:
                - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: |
                        ID number of Product 
                    Name:
                      type: string
                      description: 'Name of product '
                    Code:
                      type: string
                      description: Code of Product
                    CategoryID:
                      type: string
                      description: ID number of product category
                    Category:
                      type: string
                      description: name of product category
                    Description:
                      type: string
                      description: Description of product
                    ThumbnailUrl:
                      type: string
                      description: Thumbnail URL of product image
                    ImageUrl:
                      type: string
                      description: image url from product image
                    Created:
                      type: string
                      description: date when product is created
                    Variants:
                      type: array
                      description: 'variaton of the product, exp: size/ colour from product'
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                            description: Id number of variant from product
                          Model:
                            type: string
                            description: >-
                              Model variant from product, exp: Size L/M/L or
                              Colour Red/White/Blue
                          Code:
                            type: string
                            description: unique code of variant model
                          UnitPrice:
                            type: integer
                            description: Unit price of variant model
                          OutletPrice:
                            type: array
                            items:
                              type: object
                              properties:
                                Outlet:
                                  type: string
                                  description: >-
                                    Outlet that assign exlusive price from
                                    variant model
                                UnitPrice:
                                  type: number
                                  description: >-
                                    Price of variant model that use in chosen
                                    outlet. 
              example:
                - ID: 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                  Name: Denim Shirt
                  Code: '1342'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ThumbnailUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95///res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  Created: '2018-04-06T17:24:17.283'
                  Variants:
                    - ID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                      Model: M
                      Code: 1342M
                      UnitPrice: 500000
                      OutletPrice:
                        - Outlet: Outlet1
                          UnitPrice: 550000
                        - Outlet: Outlet2
                          UnitPrice: 575000
                    - ID: 70396e5e-4009-4e12-a9b7-9de0850bc948
                      Model: L
                      Code: 1342L
                      UnitPrice: 250000
                      OutletPrice:
                        - Outlet: Outlet1
                          UnitPrice: 275000
                - ID: f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                  Name: Shirt
                  Code: '1002'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                  Created: '2018-04-06T17:24:17.11'
                  Variants:
                    - ID: 397128d4-276d-4baf-aacf-a959c51b7a19
                      Model: L
                      Code: 1002L
                      UnitPrice: 250000
                      OutletPrice: []
                    - ID: 8ed1ff99-c135-4344-acf8-b26bedeb97e5
                      Model: M
                      Code: 1002M
                      UnitPrice: 250000
                      OutletPrice: []
                    - ID: 339e89d0-81e8-430a-834e-bbfa83b58f44
                      Model: S
                      Code: 1002S
                      UnitPrice: 250000
                      OutletPrice: []
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: >-
                  The JSON value could not be converted to
                  System.Collections.Generic.List`1[System.Guid]. Path: $[0] |
                  LineNumber: 0 | BytePositionInLine: 3.
                StackTrace: '   at System.Text.Json.ThrowHelper.ReThrowWithPath...'
      x-codegen-request-body-name: body
  /Product/WithPricebookByListID:
    get:
      tags:
        - Product
      operationId: GetProductListWithPricebookByListID
      summary: Get Product List With Pricebook By List ID
      description: Get Product List With Pricebook By List ID
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListID
              type: object
              properties:
                ListID:
                  type: array
                  description: 'Array list of multiple product ID '
                  items:
                    type: string
            example:
              ListID:
                - 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                - f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: |
                        ID number of Product 
                    Name:
                      type: string
                      description: 'Name of product '
                    Code:
                      type: string
                      description: Code of Product
                    CategoryID:
                      type: string
                      description: ID number of product category
                    Category:
                      type: string
                      description: name of product category
                    Description:
                      type: string
                      description: Description of product
                    ThumbnailUrl:
                      type: string
                      description: Thumbnail URL of product image
                    ImageUrl:
                      type: string
                      description: image url from product image
                    Created:
                      type: string
                      description: date when product is created
                    Variants:
                      type: array
                      description: 'variaton of the product, exp: size/ colour from product'
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                            description: Id number of variant from product
                          Model:
                            type: string
                            description: >-
                              Model variant from product, exp: Size L/M/L or
                              Colour Red/White/Blue
                          OutletPrice:
                            type: array
                            description: Prices of the variant at different outlets.
                            items:
                              type: object
                              properties:
                                Outlet:
                                  type: string
                                  description: Name of the outlet.
                                UnitPrice:
                                  type: integer
                                  description: >-
                                    Unit price of the variant in the specified
                                    outlet.
                          Code:
                            type: string
                            description: unique code of variant model
                          UnitPrice:
                            type: integer
                            description: Unit price of variant model
                          Pricebook:
                            type: array
                            items:
                              type: object
                              properties:
                                Name:
                                  type: string
                                  description: Pricebook's Name that assigned
                                MinQty:
                                  type: number
                                  description: Minimum qty of product in pricebook
                                UnitPrice:
                                  type: number
                                  description: Unitprice in pricebook
                                Discount:
                                  type: number
                                  description: Discount Percentage in pricebook
              example:
                - ID: 14cf5b6b-0fb9-42b9-a956-09339b3985fe
                  Name: Denim Shirt
                  Code: '1342'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ThumbnailUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95///res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png
                  Created: '2018-04-06T17:24:17.283'
                  Variants:
                    - ID: 6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e
                      Model: M
                      Code: 1342M
                      UnitPrice: 500000
                      OutletPrice:
                        - Outlet: Outlet1
                          UnitPrice: 550000
                        - Outlet: Outlet2
                          UnitPrice: 575000
                    - ID: 70396e5e-4009-4e12-a9b7-9de0850bc948
                      Model: L
                      Code: 1342L
                      UnitPrice: 250000
                      OutletPrice:
                        - Outlet: Outlet1
                          UnitPrice: 275000
                - ID: f0e2bf85-cb49-4244-9e73-6e0a7403e2ca
                  Name: Shirt
                  Code: '1002'
                  CategoryID: 6d3817dc-4589-42b4-9464-4d6599046f02
                  Category: Dress
                  Description: Product Description
                  ImageUrl: >-
                    //res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg
                  Created: '2018-04-06T17:24:17.11'
                  Variants:
                    - ID: 397128d4-276d-4baf-aacf-a959c51b7a19
                      Model: L
                      Code: 1002L
                      UnitPrice: 250000
                      OutletPrice: []
                    - ID: 8ed1ff99-c135-4344-acf8-b26bedeb97e5
                      Model: M
                      Code: 1002M
                      UnitPrice: 250000
                      OutletPrice: []
                    - ID: 339e89d0-81e8-430a-834e-bbfa83b58f44
                      Model: S
                      Code: 1002S
                      UnitPrice: 250000
                      OutletPrice: []
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: >-
                  The JSON value could not be converted to
                  System.Collections.Generic.List`1[System.Guid]. Path: $[0] |
                  LineNumber: 0 | BytePositionInLine: 3.
                StackTrace: '   at System.Text.Json.ThrowHelper.ReThrowWithPath...'
      x-codegen-request-body-name: body
  /Variant/Code:
    get:
      tags:
        - Variant
      operationId: GetVariantByCode
      summary: Get a Variant By Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint **


        <br>

        Get Variant info by Code


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Code:
                  type: string
            example:
              Code: PHD
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/variant-result'
              example:
                ID: f2296e61-e405-4884-9e54-55f14a91748b
                Category: Food
                Product: Sandwich
                Variant: Default
                Name: Sandwich
                Code: SW001
                Weight: 100
                Type: Composite
                OrderPrice: 0
                UnitCost: 20000
                UnitPrice: 50000
                Taxable: true
                LoyaltyPoint: true
                Discontinued: false
                Components:
                  - Code: S001
                    Name: Sausage
                    Qty: 1
                  - Code: B001
                    Name: Bread
                    Qty: 2
                OutletPrice:
                  - Outlet: Outlet1
                    Price: 55000
                    ExtraCost: 5000
      x-codegen-request-body-name: body
  /Variant/ID:
    get:
      tags:
        - Variant
      operationId: GetVariantByID
      summary: Get a Variant By ID
      description: >-
        > This endpoint is coming soon


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint **


        <br>

        Get Variant info by Code


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        description: Request JSON body.
        content:
          application/json:
            schema:
              type: object
              properties:
                ID:
                  type: string
                  description: Variant ID
            example:
              ID: PHD
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/variant-result'
              example:
                ID: f2296e61-e405-4884-9e54-55f14a91748b
                Category: Food
                Product: Sandwich
                Variant: Default
                Name: Sandwich
                Code: SW001
                Weight: 100
                Type: Composite
                OrderPrice: 0
                UnitCost: 20000
                UnitPrice: 50000
                Taxable: true
                LoyaltyPoint: true
                Discontinued: false
                Components:
                  - Code: S001
                    Name: Sausage
                    Qty: 1
                  - Code: B001
                    Name: Bread
                    Qty: 2
                OutletPrice:
                  - Outlet: Outlet1
                    Price: 55000
                    ExtraCost: 5000
            With Pricebook:
              example:
                ID: f2296e61-e405-4884-9e54-55f14a91748b
                Category: Food
                Product: Sandwich
                Variant: Default
                Name: Sandwich
                Code: SW001
                Weight: 100
                Type: Composite
                OrderPrice: 0
                UnitCost: 20000
                UnitPrice: 50000
                Taxable: true
                LoyaltyPoint: true
                Discontinued: false
                Components:
                  - Code: S001
                    Name: Sausage
                    Qty: 1
                  - Code: B001
                    Name: Bread
                    Qty: 2
                OutletPrice:
                  - Outlet: Outlet1
                    Price: 55000
                    ExtraCost: 5000
                Pricebook:
                  - Name: Reseller Price
                    UnitPrice: 40000
                    MinimumQuantity: 2
                  - Name: Grocery Price
                    UnitPrice: 30000
                    MinimumQuantity: 5
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Variant/GetIDByListCode:
    get:
      tags:
        - Variant
      operationId: GetVariantIDByListCode
      summary: Get Variant ID By List Code
      description: >-
        Given a list of ProductSKU, the system will then return Internal
        ProductID+VariantID
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: List of multiple Product Variant's Code
              items:
                type: string
            example:
              - '1000'
              - '1001'
              - '1002'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Variant ID
                    ProductID:
                      type: string
                      description: Product ID
                    Code:
                      type: string
                      description: Variant Code
              example:
                - ID: e156a0a9-1552-49d4-b597-d4ca09c3ed54
                  ProductID: 418c0cde-1e5f-4c77-a9f4-312bc96939cb
                  Code: '1000'
                - ID: d2dfbf1a-da61-48e4-9d4d-a921ebfcb8f5
                  ProductID: 6126764d-57aa-425d-ade6-bc3a847da98a
                  Code: '1001'
                - ID: 1587b105-b8a9-404f-907a-f63326003558
                  ProductID: 7d27dc9f-06f7-4765-bfd3-437903b020fa
                  Code: '1002'
      x-codegen-request-body-name: body
  /Variant/GetIDByListCodeDiscontinued:
    get:
      tags:
        - Variant
      operationId: GetVariantIDByListCodeDiscontinued
      summary: Get Variant ID By List Code Discontinued
      description: >-
        Given a list of ProductSKU, the system will then return Internal
        ProductID+VariantID filter by Discontinued State
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListCode
              type: object
              properties:
                ListCode:
                  type: array
                  description: Variant Code
                  items:
                    type: string
                Discontinued:
                  type: string
                  description: Discontinued status of variant
                  example: All / Yes / No
                  default: 'No'
            example:
              ListCode:
                - 1342L
                - 1342M
              Discontinued: All
        required: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Variant ID
                    ProductID:
                      type: string
                      description: Product ID
                    Code:
                      type: string
                      description: Variant Code
                    Discontinued:
                      type: boolean
                      description: Discontinue Status
                example:
                  - ID: e156a0a9-1552-49d4-b597-d4ca09c3ed54
                    ProductID: 418c0cde-1e5f-4c77-a9f4-312bc96939cb
                    Code: 1342L
                    Discontinued: false
                  - ID: d2dfbf1a-da61-48e4-9d4d-a921ebfcb8f5
                    ProductID: 6126764d-57aa-425d-ade6-bc3a847da98a
                    Code: 1342M
                    Discontinued: true
      x-codegen-request-body-name: body
  /Variant/ListID:
    get:
      tags:
        - Variant
      operationId: GetVariantListID
      summary: Get Variant Code By List ID
      description: Get Variant List ID by Outlet
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListID
              type: object
              properties:
                Outlet:
                  type: string
                  description: outlet name
                ListID:
                  type: array
                  description: an array or arrangement of a products ID
                  items:
                    type: string
            example:
              Outlet: Outlet 1
              ListID:
                - 55d7d915-eb82-4dfb-ac40-62f04ff50687
                - 51ae7f87-fa9d-41e5-a994-be14a9df889b
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Product ID
                    Code:
                      type: string
                      description: Product Code
                    Price:
                      type: integer
                      description: Product unit sell price
              example:
                - ID: 55d7d915-eb82-4dfb-ac40-62f04ff50687
                  Code: abcd
                  Price: 3000
                - ID: 51ae7f87-fa9d-41e5-a994-be14a9df889b
                  Code: '2018'
                  Price: 6000
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.VariantController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\VariantController.cs:line 313"
      x-codegen-request-body-name: body
  /Variant/GetByListCode:
    get:
      tags:
        - Variant
      operationId: GetVariantByListCode
      summary: Get Variant By List Code
      description: Get List Variant By List Code
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ListCode
              type: object
              properties:
                ListCode:
                  type: array
                  description: List Of Variant Code
                  items:
                    type: string
            example:
              ListCode:
                - 1315L
                - 1315XL
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          description: Unique ID of the Variant
                        Name:
                          type: string
                          description: Name of the Variant
                        Code:
                          type: string
                          description: Code of the Variant
                        Type:
                          type: string
                          description: Product Type of the Variant
                        UnitPrice:
                          type: integer
                          description: Unit Selling Price of the Variant
                        UnitCost:
                          type: integer
                          description: Unit Buying Cost of the Variant
              example:
                Data:
                  - ID: d01b9ab2-11fb-4fe0-a1a1-49790645da5d
                    Name: Shirt (L)
                    Code: 1315L
                    Type: Standard
                    UnitPrice: 500000
                    UnitCost: 2000
                  - ID: 7e8ccca1-9690-4cd3-98a3-9b26079d90b5
                    Name: Shirt (XL)
                    Code: 1315XL
                    Type: Standard
                    UnitPrice: 300000
                    UnitCost: 2000
      x-codegen-request-body-name: body
  /OutletPrice:
    get:
      tags:
        - Outlet Price
      operationId: GetOutletPriceByCode
      summary: Get Outlet Price By Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/OutletPrice/p)**


        <br>

        Get Outlet Price By Variant Code


        Required Group Role: "**Products**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Variant's code
            example:
              Code: '2005'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: string
                    description: the variant code was applied to get outlet price
                  Outlets:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: outlet location of the outlet price
                        ExtraCost:
                          type: number
                          description: the extra cost added on cost outlets
                        UnitPrice:
                          type: number
                          description: the price applied for the outlet
                        Discount:
                          type: integer
                          description: the price discount of the outlet price
              example:
                Code: '2005'
                Outlets:
                  - Outlet: Outlet1
                    ExtraCost: 100000
                    UnitPrice: 112000
                    Discount: 0
    put:
      tags:
        - Outlet Price
      operationId: UpdateOutletPrice
      summary: Update Outlet Price
      description: >-
        Update Outlet Price


        You must have "**EDIT**" role in "**Products**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
                - Outlets
              type: object
              properties:
                Code:
                  type: string
                  description: Variant's code
                Outlets:
                  type: array
                  items:
                    required:
                      - ExtraCost
                      - Outlet
                      - UnitPrice
                    type: object
                    properties:
                      Outlet:
                        type: string
                        description: Outlet's name
                      ExtraCost:
                        type: number
                        description: Extra cost to be added in this outlet
                      UnitPrice:
                        type: number
                        description: Outlet selling price
            example:
              Code: '2005'
              Outlets:
                - Outlet: Outlet1
                  ExtraCost: 100000
                  UnitPrice: 112000
                - Outlet: Outlet2
                  ExtraCost: 100000
                  UnitPrice: 112000
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Outlet price ID
              example:
                ID: 3b3201cd-81b9-46f8-80f6-8c905af70025
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet outlet1 not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: "   at POS.Library.Helper.JSONPropertyChecker.ToObject[T](JsonElement element) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 141\r\n   at POS.WEB.Controllers.v3.OutletPriceController.Post(JsonElement req) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\OutletPriceController.cs:line 141"
      x-codegen-request-body-name: body
    post:
      tags:
        - Outlet Price
      operationId: CreateOutletPrice
      summary: Create an Outlet Price
      description: >-
        Add Outlet Price in Product


        You must have "**EDIT**" role in "**Products**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
                - Outlets
              type: object
              properties:
                Code:
                  type: string
                  description: Variant code
                Outlets:
                  type: array
                  items:
                    required:
                      - ExtraCost
                      - Outlet
                      - UnitPrice
                    type: object
                    properties:
                      Outlet:
                        type: string
                        description: Outlet name
                      ExtraCost:
                        type: number
                        description: Cost to be added for this outlet
                      UnitPrice:
                        type: number
                        description: Outlet selling price
            example:
              Code: '2005'
              Outlets:
                - Outlet: Outlet1
                  ExtraCost: 100000
                  UnitPrice: 112000
                - Outlet: Outlet2
                  ExtraCost: 100000
                  UnitPrice: 112000
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Outlet price has been created
              example:
                ID: 3b3201cd-81b9-46f8-80f6-8c905af70025
    delete:
      tags:
        - Outlet Price
      operationId: DeleteOutletPrice
      summary: Delete an Outlet Price
      description: >-
        Delete an Outlet Price


        You must have "**EDIT**" role in "**Products**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
                - Outlets
              type: object
              properties:
                Code:
                  type: string
                  description: Variant code
                Outlets:
                  type: array
                  items:
                    required:
                      - Outlet
                    type: object
                    properties:
                      Outlet:
                        type: string
                        description: Outlet's name
                      Cost:
                        type: number
                        description: Outlet extra cost
                      Price:
                        type: number
                        description: Outlet selling price
            example:
              Code: '2005'
              Outlets:
                - Outlet: Outlet1
                  Cost: 100000
                  Price: 112000
                - Outlet: Outlet2
                  Cost: 100000
                  Price: 112000
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Outlet price has been deleted.
              example:
                ID: b3201cd-81b9-46f8-80f6-8c905af70025
  /Invoice/List:
    post:
      tags:
        - Invoice
      operationId: CreateMultipleInvoice
      summary: Create Multiple Invoice
      description: |-
        Create Multiples Invoices based on Number.

        You must have "**CREATE**" role in "**Orders**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  type: array
                  items:
                    required:
                      - Number
                      - Outlet
                    type: object
                    properties:
                      Outlet:
                        type: string
                        description: "Outlet.Name\r\n<br>Not required when Outlet.ID is provided (required)"
                      Number:
                        type: string
                        description: Invoice number. this is primary key for the object
                      SalesPerson:
                        type: string
                        description: Sales person name
                      TaxType:
                        type: string
                        description: Tax Type
                      Date:
                        type: string
                        description: Date of sale(yyyy/mm/dd)
                      Discount1:
                        type: string
                        description: Discount 1 amount or percentage given
                      Discount2:
                        type: string
                        description: Discount 2 amount or percentage given
                      Delivery:
                        type: string
                        description: Status of delivery
                        enum:
                          - Sent
                          - Unsent
                      Customer:
                        required:
                          - Email
                          - Name
                        type: object
                        properties:
                          Name:
                            type: string
                            description: Customer name
                          Email:
                            type: string
                            description: Customer email address
                          Phone:
                            type: string
                            description: Customer phone number
                          Address:
                            type: string
                            description: Customer address
                          Gender:
                            type: string
                            description: Customer gender
                      Variants:
                        type: array
                        items:
                          required:
                            - Code
                            - Price
                            - Quantity
                          type: object
                          properties:
                            Code:
                              type: string
                              description: Code of variant
                            Quantity:
                              type: string
                              description: Quantity of variant
                            Price:
                              type: number
                              description: Price of variant
                            Discount:
                              type: integer
                              description: Discount amount or percentage
                            Note:
                              type: string
                              description: Note of variant
                      Payment:
                        type: array
                        items:
                          required:
                            - Amount
                            - Method
                          type: object
                          properties:
                            Amount:
                              type: number
                              description: Total amount
                            Method:
                              type: string
                              description: Payment method
                  example:
                    - Outlet: Outlet1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '80000'
                          Method: Cash
                    - Outlet: Outlet1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '70918.93'
                          Method: Cash
                    - Outlet: Outlet1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '70918.93'
                          Method: Cash
                - title: With Outlet ID
                  type: array
                  items:
                    required:
                      - Number
                      - OutletID
                    type: object
                    properties:
                      OutletID:
                        type: string
                        description: "Outlet.ID (32 character GUID) \r\n<br>Not required when Outlet.Name is provided (required)"
                        x-stoplight:
                          id: mp3zv5bvqke71
                      Number:
                        type: string
                        description: Invoice number. this is primary key for the object
                      SalesPerson:
                        type: string
                        description: Sales person name
                      TaxType:
                        type: string
                        description: Tax Type
                      Date:
                        type: string
                        description: Date of sale(yyyy/mm/dd)
                      Discount1:
                        type: string
                        description: Discount 1 amount or percentage given
                      Discount2:
                        type: string
                        description: Discount 2 amount or percentage given
                      Delivery:
                        type: string
                        description: Status of delivery
                        enum:
                          - Sent
                          - Unsent
                      Customer:
                        required:
                          - Email
                          - Name
                        type: object
                        properties:
                          Name:
                            type: string
                            description: Customer name
                          Email:
                            type: string
                            description: Customer email address
                          Phone:
                            type: string
                            description: Customer phone number
                          Address:
                            type: string
                            description: Customer address
                          Gender:
                            type: string
                            description: Customer gender
                      Variants:
                        type: array
                        items:
                          required:
                            - Code
                            - Price
                            - Quantity
                          type: object
                          properties:
                            Code:
                              type: string
                              description: Code of variant
                            Quantity:
                              type: string
                              description: Quantity of variant
                            Price:
                              type: number
                              description: Price of variant
                            Discount:
                              type: integer
                              description: Discount amount or percentage
                            Note:
                              type: string
                              description: Note of variant
                      Payment:
                        type: array
                        items:
                          required:
                            - Amount
                            - Method
                          type: object
                          properties:
                            Amount:
                              type: number
                              description: Total amount
                            Method:
                              type: string
                              description: Payment method
                  example:
                    - OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '80000'
                          Method: Cash
                    - Outlet: Outlet1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '70918.93'
                          Method: Cash
                    - Outlet: Outlet1
                      Number: 18.10.00009
                      SalesPerson: Sales 10
                      TaxType: PPN 10%
                      Date: '2018-09-07'
                      Discount1: '5'
                      Discount2: '2'
                      Delivery: Sent
                      Customer:
                        Name: Hendry
                        Email: hendry@dealpos.com
                        Phone: '085710977713'
                        Address: JL. Pluit Karang Jelita b5 no.51
                        Gender: Male
                      Variants:
                        - Code: '2014'
                          Quantity: '10'
                          Price: '3500'
                          Discount: 5
                          Note: Item 1
                        - Code: '2018'
                          Quantity: '10'
                          Price: '4000'
                          Discount: 10
                          Note: Item 2
                      Payment:
                        - Amount: '70918.93'
                          Method: Cash
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Unique identifier of the invoice.
                    Outlet:
                      type: string
                      description: Name of the outlet.
                    Number:
                      type: string
                      description: Invoice number.
                    Customer:
                      type: string
                      description: Name of the customer (null if not applicable).
                    Date:
                      type: string
                      format: date-time
                      description: Invoice creation date.
                    EventDate:
                      type: string
                      format: date-time
                      description: Event date related to the invoice.
                    Due:
                      type: string
                      format: date-time
                      description: Due date of the invoice.
                    Amount:
                      type: number
                      description: Total amount for the invoice.
                    Payment:
                      type: string
                      description: Payment status of the invoice.
                    Fulfillment:
                      type: string
                      description: Fulfillment status of the invoice.
                    Created:
                      type: string
                      format: date-time
                      description: Creation timestamp of the invoice.
              example:
                - ID: 3de705c4-53a0-4a66-8ab1-f9737e3ad6fb
                  Outlet: Outlet1
                  Number: 18.10.00009
                  Customer: ''
                  Date: '2018-10-17T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 120000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
                - ID: 3de7eve4-53a0-tsw6-8ab1-f9737e3adweb
                  Outlet: Outlet1
                  Number: 18.10.00002
                  Customer: ''
                  Date: '2018-10-16T00:00:00'
                  EventDate: '0001-01-01T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 150000
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2019-08-28T11:00:20.34'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: You are not allowed to access Outlet1.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the exception
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Inventory:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByList
      summary: Get Inventory By List
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get list of Inventory


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: The outlet name
                    Category:
                      type: string
                      description: The product category
                    QuantityFrom:
                      type: integer
                      description: >-
                        The minimum quantity of the product that users want to
                        view
                    Discontinued:
                      type: boolean
                      description: The product discontinued status
                    Tags:
                      type: string
                      description: The product tags
                    PageNumber:
                      type: integer
                      description: The page number of the product
                    PageSize:
                      type: integer
                      description: The page size of the product list
                  example:
                    Outlet: Outlet1
                    Category: Top
                    QuantityFrom: 1
                    Discontinued: false
                    Tags: Summer
                    PageNumber: 1
                    PageSize: 500
                - title: With Outlet ID
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: ec2hz7zt846km
                    Category:
                      type: string
                      description: The product category
                    QuantityFrom:
                      type: integer
                      description: >-
                        The minimum quantity of the product that users want to
                        view
                    Discontinued:
                      type: boolean
                      description: The product discontinued status
                    Tags:
                      type: string
                      description: The product tags
                    PageNumber:
                      type: integer
                      description: The page number of the product
                    PageSize:
                      type: integer
                      description: The page size of the product list
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Category: Top
                    QuantityFrom: 1
                    Discontinued: false
                    Tags: Summer
                    PageNumber: 1
                    PageSize: 500
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Category:
                      type: string
                      description: Name of product category
                    Product:
                      type: string
                      description: Name of product
                    Variant:
                      type: string
                      description: The variant name
                    Code:
                      type: string
                      description: The variant code
                    Inventory:
                      type: number
                      description: On Hand Inventory
                    I:
                      type: object
                      properties:
                        OnHand:
                          type: number
                          description: On Hand Quantity
                        Allocated:
                          type: integer
                          description: Allocated Quantity
                        Available:
                          type: number
                          description: Available Quantity
                        Threshold:
                          type: integer
                          description: Maximum Stock
                        Buffer:
                          type: integer
                          description: Minimum Stock
                      description: Inventory for the variant
              example:
                - Category: Top/Men
                  Product: Captain America T-Shirt
                  Variant: Captain America T-Shirt (Large)
                  Code: 1003L
                  Inventory: 10
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Captain America T-Shirt
                  Variant: Captain America T-Shirt (Medium)
                  Code: 1003M
                  Inventory: 5
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Denim Shirt
                  Variant: Denim Shirt (L)
                  Code: 1342L
                  Inventory: 50
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Denim Shirt
                  Variant: Denim Shirt (M)
                  Code: 1342M
                  Inventory: 10
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Jacket
                  Variant: Jacket (L)
                  Code: 1021L
                  Inventory: 11
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Jacket
                  Variant: Jacket (M)
                  Code: 1021M
                  Inventory: 18
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
                - Category: Top/Men
                  Product: Jacket
                  Variant: Jacket (S)
                  Code: 1021S
                  Inventory: 20
                  I:
                    OnHand: 18.952
                    Allocated: 0
                    Available: 18.952
                    Threshold: 20
                    Buffer: 50
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  Message: PageSize must not exceed max allowed more than 500
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Inventory/Code:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByCode
      summary: Get Inventory By Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get an Inventory based on CodeGet list of Inventory


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Code
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: array
                      description: Outlet's Name will be show the inventory data
                      items:
                        type: string
                    Code:
                      type: string
                      description: >-
                        Variant code of product this is primary key for the
                        object
                  example:
                    Outlet:
                      - Outlet1
                      - Outlet2
                      - Outlet3
                    Code: '2001'
                - title: With List Outlet ID
                  required:
                    - Code
                    - ListOutletID
                  type: object
                  properties:
                    ListOutletID:
                      type: array
                      description: List of multiple outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: cyyo5s1ytiwo2
                    Code:
                      type: string
                      description: >-
                        Variant code of product this is primary key for the
                        object
                  example:
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    Code: '2001'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Inventory:
                      type: integer
                      description: OnHand Quantity
                    I:
                      type: object
                      properties:
                        OnHand:
                          type: integer
                          description: OnHand Quantity
                        Allocated:
                          type: integer
                          description: Allocated Quantity
                        Available:
                          type: integer
                          description: Available Quantity
                x-examples:
                  Example 1:
                    - Outlet: Outlet1
                      Inventory: 140
                      I:
                        OnHand: 140
                        Allocated: 50
                        Available: 90
                    - Outlet: Outlet2
                      Inventory: 10
                      I:
                        OnHand: 10
                        Allocated: 6
                        Available: 4
              example:
                - Outlet: Outlet1
                  Inventory: 140
                  I:
                    OnHand: 140
                    Allocated: 50
                    Available: 90
                - Outlet: Outlet2
                  Inventory: 10
                  I:
                    OnHand: 10
                    Allocated: 6
                    Available: 4
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Inventory/Log:
    get:
      tags:
        - Inventory Log
      operationId: GetInventoryLog
      summary: Get Inventory Log
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get an Inventory Log based on Code


        Required Group Role: "**Inventory**" - "**VIEW**" 
      parameters:
        - in: query
          name: Code
          required: true
          schema:
            type: string
          description: >-
            Variant Code of product. Use this if there in no property query
            VariantID
        - in: query
          name: VariantID
          required: true
          schema:
            type: string
          description: Variant ID of product. Use this if there in no property query Code
        - in: query
          name: Outlet
          required: false
          schema:
            type: string
          description: Outlet's Name
        - in: query
          name: OutletID
          required: false
          schema:
            type: string
            format: guid
            description: Guid of Outlet ID
        - in: query
          name: From
          required: false
          schema:
            type: string
            format: date
          description: Start Date filter
        - in: query
          name: To
          required: false
          schema:
            type: string
            format: date
          description: End Date filter
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Code
                  type: object
                  properties:
                    Code:
                      type: string
                      description: >-
                        Variant Code of product. this is primary key for the
                        object
                    Outlet:
                      type: string
                      description: Outlet's Name
                    From:
                      type: string
                      description: Start Date filter
                    To:
                      type: string
                      description: End Date filter
                  example:
                    Code: '2016'
                    Outlet: Outlet1
                    From: '2019-01-04'
                    To: '2019-12-31'
                - title: With Outlet ID
                  required:
                    - Code
                  type: object
                  properties:
                    Code:
                      type: string
                      description: >-
                        Variant Code of product. this is primary key for the
                        object
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: 0v9bcbl8vywa7
                    From:
                      type: string
                      description: Start Date filter
                    To:
                      type: string
                      description: End Date filter
                  example:
                    Code: '2016'
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    From: '2019-01-04'
                    To: '2019-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: outlet's name
                    TransDate:
                      type: string
                      description: transaction date was created
                    Number:
                      type: string
                      description: transaction number of the invoice
                    Name:
                      type: string
                      description: Customer's name
                    Cost:
                      type: integer
                      description: the cost of the variant
                    Price:
                      type: integer
                      description: the price of the variant
                    LogType:
                      type: string
                      description: the type of the transaction that make inventory movement
                    Note:
                      type: string
                      description: Transaction note
                    In:
                      type: integer
                      description: total incoming stock of the variant
                    Out:
                      type: integer
                      description: total outcoming stock of the variant
                    Inventory:
                      type: integer
                      description: On Hand Quantity
                    EntryDate:
                      type: string
                      description: the date and time of the transaction
                    UserName:
                      type: string
                      description: user who create this transaction
              example:
                - Outlet: Outlet1
                  TransDate: 14 Nov 2019
                  Number: '05002'
                  Name: Hendry
                  Cost: 20000
                  Price: 50000
                  LogType: InventoryAdjustment
                  Note: '05002'
                  In: 10
                  Out: 0
                  Inventory: 10
                  EntryDate: '2019-11-14T15:19:17.743'
                  UserName: dealpos
                - Outlet: Outlet1
                  TransDate: 14 Nov 2019
                  Number: '05002'
                  Name: Fer D Rahman
                  Cost: 20000
                  Price: 50000
                  LogType: InventoryAdjustment
                  Note: '05002'
                  In: 2
                  Out: 0
                  Inventory: 1
                  EntryDate: '2019-11-14T15:18:39.483'
                  UserName: dealpos
                - Outlet: Outlet1
                  TransDate: 23 May 2018
                  Number: Testts2
                  Name: ''
                  Cost: 0
                  Price: 0
                  LogType: InventoryAdjustment
                  Note: Testts2
                  In: 0
                  Out: 1
                  Inventory: -1
                  EntryDate: '2019-11-14T13:35:42.12'
                  UserName: dealpos
                - Outlet: Outlet1
                  TransDate: 23 May 2018
                  Number: Testts2
                  Name: Ezza
                  Cost: 20000
                  Price: 50000
                  LogType: InventoryAdjustment
                  Note: testts2
                  In: 2
                  Out: 0
                  Inventory: 1
                  EntryDate: '2019-11-14T13:29:59.64'
                  UserName: dealpos
                - Outlet: Outlet1
                  TransDate: 23 Oct 2019
                  Number: 05.23.2018.000002
                  Name: Zan
                  Cost: 20000
                  Price: 50000
                  LogType: InventoryAdjustment
                  Note: 05.23.2018.000002
                  In: 0
                  Out: 1
                  Inventory: -1
                  EntryDate: '2019-11-07T09:45:03.877'
                  UserName: dealpos
        '400':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Inventory/Log/Modified:
    get:
      tags:
        - Inventory Log
      operationId: GetInventoryLogModified
      summary: Get Inventory Log Modified Since Date
      description: |-
        Get an Inventory Log modified since the given date-time

        Required Group Role: "**Inventory**" - "**VIEW**"  get:
          summary: Get inventory details
      parameters:
        - in: query
          name: PageNumber
          schema:
            type: integer
          required: true
          description: Page number for pagination
          example: 1
        - in: query
          name: PageSize
          schema:
            type: integer
          required: true
          description: The size of one page. Max=500
          example: 20
        - in: query
          name: Since
          schema:
            type: string
            format: date-time
          required: true
          description: Filter records since the given date-time
          example: '2025-01-08T07:01:21'
      responses:
        '200':
          description: A list of inventory items
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Code:
                      type: string
                      description: Variant Code of the product
                    OnHand:
                      type: integer
                      description: Quantity on hand
                    Modified:
                      type: string
                      format: date-time
                      description: Date and time of the last modify
              example:
                - Outlet: Kemang
                  Code: '001'
                  OnHand: 50
                  Modified: '2025-01-08T07:01:21'
                - Outlet: PIK
                  Code: '001'
                  OnHand: 35
                  Modified: '2025-01-08T07:01:21'
                - Outlet: PIK
                  Code: '002'
                  OnHand: 35
                  Modified: '2025-01-08T07:01:21'
  /Inventory/CodeArray:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByCodeArray
      summary: Get Inventory By Code Array
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Inventory for Multiple Code, this is an enhancement from previous
        api

        /inventory/code which can only query single Code


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Code
                    - ListOutletID
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: array
                      description: List of Outlet Name
                      items:
                        type: string
                    Code:
                      type: array
                      description: List of Variants Code of product. Max=100 variants code
                      items:
                        type: string
                  example:
                    Outlet:
                      - Jakarta
                      - Surabaya
                    Code:
                      - '907'
                      - '908'
                      - '909'
                - title: With List Outlet ID
                  required:
                    - Code
                    - ListOutletID
                    - Outlet
                  type: object
                  properties:
                    ListOutletID:
                      type: array
                      description: List of multiple outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: do01kd71ks5wq
                    Code:
                      type: array
                      description: List of Variants Code of product. Max=50 variants code
                      items:
                        type: string
                  example:
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    Code:
                      - '907'
                      - '908'
                      - '909'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Variant Code of product
                    Inventory:
                      type: integer
                      description: On Hand Quantity
              example:
                - Code: '907'
                  Inventory: 140
                - Code: '908'
                  Inventory: 20
                - Code: '909'
                  Inventory: 7
        '400':
          description: ''
          content:
            Example 1:
              example:
                Message: Code must not exceed max allowed more than 50 Variants Code
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
  /Inventory/CodeArrayGroupByOutlet:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByListCodeGroupByOutlet
      summary: Get Inventory By ListCode Group by Outlet
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Inventory for Multiple Code group by Outlet, this is an enhancement
        from previous api

        /inventory/code which can only query single Code


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Code
                  type: object
                  properties:
                    Outlet:
                      type: array
                      description: List of Outlet Name
                      items:
                        type: string
                    Code:
                      type: array
                      description: List of Variants Code of variant. Max=50 Variants Code
                      items:
                        type: string
                  example:
                    Outlet:
                      - Jakarta
                      - Surabaya
                    Code:
                      - '907'
                      - '908'
                - title: With Outlet Code
                  required:
                    - Code
                  type: object
                  properties:
                    OutletCode:
                      type: array
                      description: >-
                        List of Outlet Code. (it will check this property first
                        if requested)
                      items:
                        type: string
                    Code:
                      type: array
                      description: List of Variants Code of variant. Max=50 Variants Code
                      items:
                        type: string
                  example:
                    OutletCode:
                      - JKT
                      - SBY
                    Code:
                      - '907'
                      - '908'
                - title: With Outlet ID
                  required:
                    - Code
                  type: object
                  properties:
                    OutletID:
                      type: array
                      description: List of multiple outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: b30mxcnk4vsn9
                    Code:
                      type: array
                      description: List of Variants Code of variant. Max=50 Variants Code
                      items:
                        type: string
                  example:
                    OutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    Code:
                      - '907'
                      - '908'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Code:
                      type: string
                      description: Variant Code
                    Inventories:
                      type: array
                      items:
                        type: object
                        properties:
                          Outlet:
                            type: string
                            description: Outlet Name
                          Inventory:
                            type: integer
                            description: On Hand Inventory
                          I:
                            type: object
                            properties:
                              OnHand:
                                type: integer
                                description: On Hand Quantity
                              Allocated:
                                type: integer
                                description: Allocated Quantity
                              Available:
                                type: integer
                                description: Available Quantity
                x-examples:
                  Example 1:
                    - Code: '907'
                      Inventories:
                        - Outlet: Jakarta
                          Inventory: 140
                          I:
                            OnHand: 140
                            Allocated: 50
                            Available: 90
                        - Outlet: Surabaya
                          Inventory: 10
                          I:
                            OnHand: 10
                            Allocated: 6
                            Available: 4
                    - Code: '908'
                      Inventories:
                        - Outlet: Jakarta
                          Inventory: 140
                          I:
                            OnHand: 140
                            Allocated: 100
                            Available: 40
                        - Outlet: Surabaya
                          Inventory: 10
                          I:
                            OnHand: 10
                            Allocated: 6
                            Available: 4
              example:
                - Code: '907'
                  Inventories:
                    - Outlet: Jakarta
                      Inventory: 140
                      I:
                        OnHand: 140
                        Allocated: 50
                        Available: 90
                    - Outlet: Surabaya
                      Inventory: 10
                      I:
                        OnHand: 10
                        Allocated: 6
                        Available: 4
                - Code: '908'
                  Inventories:
                    - Outlet: Jakarta
                      Inventory: 140
                      I:
                        OnHand: 140
                        Allocated: 100
                        Available: 40
                    - Outlet: Surabaya
                      Inventory: 10
                      I:
                        OnHand: 10
                        Allocated: 6
                        Available: 4
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet is mandatory!
            Code Exceed max not allowed:
              example:
                Message: Code Exceed max not allowed more than 50 Variants Code
      x-codegen-request-body-name: body
  /Inventory/ListID:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByListID
      summary: Get Inventory By List ID
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Inventory By List Outlet and List ID


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With List Outlet Name
                  required:
                    - ListID
                    - ListOutlet
                  type: object
                  properties:
                    ListID:
                      type: array
                      description: Variants ID. Max=50
                      items:
                        type: string
                    ListOutlet:
                      type: array
                      description: >-
                        Outlets Name. (if empty it will be show inventory of all
                        outlet)
                      items:
                        type: string
                    CalculateCompositeInventory:
                      type: boolean
                      description: >-
                        Only effect product type Composite (if true OnHand will
                        be show, if false OnHand always 0)
                      example: false
                      default: false
                    IncludeParentInventory:
                      type: boolean
                      description: Show detail inventory of Parents Product
                      example: false
                      default: false
                    IncludeChildrenInventory:
                      type: boolean
                      description: Show detail inventory of Children Product
                      example: false
                      default: false
                  example:
                    ListOutlet:
                      - Outlet1
                      - Outlet2
                    ListID:
                      - 69b2a2cd-406a-44ac-b1e2-8df079f50304
                      - d94579c0-eeb5-4b03-893e-d24cc624786c
                    CalculateCompositeInventory: true
                    IncludeParentInventory: true
                    IncludeChildrenInventory: true
                - title: With List Outlet ID
                  required:
                    - ListID
                    - ListOutletID
                  type: object
                  properties:
                    ListID:
                      type: array
                      description: Variants ID. Max=50
                      items:
                        type: string
                    ListOutletID:
                      type: array
                      description: List of multiple outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: fbk4chid35wqm
                    CalculateCompositeInventory:
                      type: boolean
                      description: >-
                        Only effect product type Composite (if true OnHand will
                        be show, if false OnHand always 0)
                      example: false
                      default: false
                    IncludeParentInventory:
                      type: boolean
                      description: Show detail inventory of Parents Product
                      example: false
                      default: false
                    IncludeChildrenInventory:
                      type: boolean
                      description: Show detail inventory of Children Product
                      example: false
                      default: false
                  example:
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    ListID:
                      - 69b2a2cd-406a-44ac-b1e2-8df079f50304
                      - d94579c0-eeb5-4b03-893e-d24cc624786c
                    CalculateCompositeInventory: true
                    IncludeParentInventory: true
                    IncludeChildrenInventory: true
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Variant's ID
                    Code:
                      type: string
                      description: Variant's Code
                    I:
                      type: object
                      properties:
                        OnHand:
                          type: integer
                          description: OnHand quantity
                        Allocated:
                          type: integer
                          description: Allocated quantity
                        AllocatedDirect:
                          type: integer
                          description: Quantity of items allocated from the direct variant
                        AllocatedInDirect:
                          type: integer
                          description: >-
                            Quantity of items allocated from the indirect
                            variant
                        Available:
                          type: integer
                          description: Available quantity
                    Children:
                      type: array
                      items:
                        type: object
                        properties:
                          ID:
                            type: string
                            description: Variant's ID
                          Code:
                            type: string
                            description: Variant's Code
                          I:
                            type: object
                            properties:
                              OnHand:
                                type: integer
                                description: OnHand quantity
                              Allocated:
                                type: integer
                                description: Allocated quantity
                              AllocatedDirect:
                                type: integer
                                description: >-
                                  Quantity of items allocated from the direct
                                  variant
                              AllocatedInDirect:
                                type: integer
                                description: >-
                                  Quantity of items allocated from the indirect
                                  variant
                              Available:
                                type: integer
                                description: Available quantity
                example:
                  - ID: 9c82ec2f-2646-4327-8ec7-640fa01522c4
                    Code: sausage
                    I:
                      OnHand: 9
                      Allocated: 6
                      Available: 3
                    Parent:
                      - ID: efd658dd-c333-4f1a-a5a7-f520eedebde0
                        Code: hotdog
                        I:
                          OnHand: -4
                          Allocated: 6
                          Available: -10
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: There is no Outlet with the name [Outlet 2]
            ID Exceed max not allowed:
              example:
                Message: ListID Exceed max not allowed more than 50 Variants ID
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace message
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.TryGetProperty...'
      x-codegen-request-body-name: body
  /Inventory/ListCode:
    get:
      tags:
        - Inventory
      operationId: GetInventoryByListCode
      summary: Get Inventory By List Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Inventory By List Outlet and List Code


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With List Outlet Name
                  type: object
                  properties:
                    ListOutlet:
                      type: array
                      description: >-
                        Outlets Name. (if empty it will be show inventory of all
                        outlet)
                      items:
                        type: string
                    ListCode:
                      type: array
                      description: List of Variants Code of variant. Max=50
                      items:
                        type: string
                  example:
                    ListOutlet:
                      - Outlet1
                      - Outlet2
                    ListCode:
                      - T001
                      - T002
                - title: With List Outlet ID
                  type: object
                  properties:
                    ListOutletID:
                      type: array
                      description: List of multiple outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: v0a8mh7vnvnfu
                    ListCode:
                      type: array
                      description: List of Variants Code of variant. Max=50
                      items:
                        type: string
                  example:
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    ListCode:
                      - T001
                      - T002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Variants ID
                    Code:
                      type: string
                      description: Variant's Code
                    I:
                      type: object
                      properties:
                        OnHand:
                          type: integer
                          description: OnHand quantity
                        Allocated:
                          type: integer
                          description: Allocated quantity
                        Available:
                          type: integer
                          description: Available quantity
                x-examples:
                  Example 1:
                    - ID: 9c82ec2f-2646-4327-8ec7-640fa01522c4
                      Code: T001
                      I:
                        OnHand: 9
                        Allocated: 6
                        Available: 3
                    - ID: 9c82ec2f-2646-4327-8ec7-640fa01522c4
                      Code: T002
                      I:
                        OnHand: 10
                        Allocated: 6
                        Available: 4
              example:
                - ID: 9c82ec2f-2646-4327-8ec7-640fa01522c4
                  Code: T001
                  I:
                    OnHand: 9
                    Allocated: 6
                    Available: 3
                - ID: 9c82ec2f-2646-4327-8ec7-640fa01522c4
                  Code: T002
                  I:
                    OnHand: 10
                    Allocated: 6
                    Available: 4
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with the name [Outlet 2]
            Code Exceed max not allowed:
              example:
                Message: Code Exceed max not allowed more than 50 Variants Code
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: "   at System.Text.Json.JsonElement.TryGetProperty(String propertyName, JsonElement& value)\r\n   at POS.Library.Helper.JSONPropertyChecker.HasProperty(JsonElement obj, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 124\r\n   at POS.WEB.Controllers.v3.InventoryController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InventoryController.cs:line 326"
      x-codegen-request-body-name: body
  /Inventory/WithTotalCount:
    get:
      tags:
        - Inventory
      operationId: GetInventoryWithTotalCount
      summary: Get List Inventory With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get list of Inventory


        Required Group Role: "**Inventory**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Name of the outlet that have the stock.
                    Category:
                      type: string
                      description: Name of category products
                    QuantityFrom:
                      type: integer
                      description: Starting quantity of the product
                    Discontinued:
                      type: string
                      description: Product that has been discontinued
                      default: 'false'
                      enum:
                        - 'True'
                        - 'False'
                    PageNumber:
                      type: integer
                      description: Page number of get inventory
                    PageSize:
                      type: integer
                      description: The size of one page. Max=500
                  example:
                    Outlet: Outlet1
                    Category: Top
                    QuantityFrom: 1
                    Discontinued: false
                    PageNumber: 1
                    PageSize: 500
                - title: With Outlet ID
                  required:
                    - PageNumber
                    - PageSize
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: 3nhd53zndm8cy
                    Category:
                      type: string
                      description: Name of category products
                    QuantityFrom:
                      type: integer
                      description: Starting quantity of the product
                    Discontinued:
                      type: string
                      description: Product that has been discontinued
                      default: 'false'
                      enum:
                        - 'True'
                        - 'False'
                    PageNumber:
                      type: integer
                      description: Page number of get inventory
                    PageSize:
                      type: integer
                      description: The size of one page. Max=500
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Category: Top
                    QuantityFrom: 1
                    Discontinued: false
                    PageNumber: 1
                    PageSize: 500
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Category:
                          type: string
                          description: Product Category Name
                        Product:
                          type: string
                          description: Product Name
                        Variant:
                          type: string
                          description: Product's Variant name
                        Code:
                          type: string
                          description: Product Variant Code
                        Inventory:
                          type: integer
                          description: On Hand Quantity
                  TotalCount:
                    type: integer
              example:
                Data:
                  - Category: Top/Men
                    Product: Captain America T-Shirt
                    Variant: Captain America T-Shirt (Large)
                    Code: 1003L
                    Inventory: 10
                  - Category: Top/Men
                    Product: Captain America T-Shirt
                    Variant: Captain America T-Shirt (Medium)
                    Code: 1003M
                    Inventory: 5
                  - Category: Top/Men
                    Product: Denim Shirt
                    Variant: Denim Shirt (L)
                    Code: 1342L
                    Inventory: 50
                  - Category: Top/Men
                    Product: Denim Shirt
                    Variant: Denim Shirt (M)
                    Code: 1342M
                    Inventory: 10
                  - Category: Top/Men
                    Product: Jacket
                    Variant: Jacket (L)
                    Code: 1021L
                    Inventory: 11
                  - Category: Top/Men
                    Product: Jacket
                    Variant: Jacket (M)
                    Code: 1021M
                    Inventory: 18
                  - Category: Top/Men
                    Product: Jacket
                    Variant: Jacket (S)
                    Code: 1021S
                    Inventory: 20
                TotalCount: 100
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name Outlet1 Or NO ACCESS
            PageSize Exceed max not allowed:
              example:
                Message: PageSize Exceed max not allowed
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.TryGetProperty...'
      x-codegen-request-body-name: body
  /Invoice/Number:
    get:
      tags:
        - Invoice
      operationId: GetInvoiceByNumber
      summary: Get Invoice By Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get an Invoice based on Number


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                    - OutletID
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: wgxaibhygvo92
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 18.10.00009
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Unique ID of the invoice
                  Outlet:
                    type: string
                    description: Name of the outlet
                  Number:
                    type: string
                    description: Number of the invoice transasction
                  Date:
                    type: string
                    description: Sell date of the invoice transaction
                  DueDate:
                    type: string
                    description: Due date of the invoice transaction
                  Tag:
                    type: string
                    description: >-
                      Channel Tagging system. (ex:Offline / Whatsapp / Shopee /
                      Tokopedia) used in marketplace.dealpos.app. Backwards
                      Compatibility with property request "SalesType"
                  SalesPerson:
                    type: string
                    description: Sales person name of the invoice transaction
                  Customer:
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Unique Code of the customer
                      Email:
                        type: string
                        description: E-mail of the customer
                      Mobile:
                        type: string
                        description: Mobile Phone Number of the customer
                      Name:
                        type: string
                        description: Name of the customer
                      Phone:
                        type: string
                        description: Phone number of the customer
                  CreatorID:
                    type: string
                    description: Unique ID of the creator
                  Created:
                    type: string
                    description: |
                      Invoice created Transaction Date by system
                  Discount1:
                    type: integer
                    description: Percentage of discount 1
                  Discount2:
                    type: integer
                    description: Percentage of discount 2
                  DiscountAmount:
                    type: number
                    description: Amount of Discount amount-based
                  Gross:
                    type: number
                    description: Total amount of the transaction before discounted
                  DiscountTotal:
                    type: number
                    description: Total accumulation of the discounts
                  TaxType:
                    type: string
                    description: Type name of the tax
                  Tax:
                    type: number
                    description: Total amount of the taxes
                  TaxRate:
                    type: number
                    description: Rate of Tax in percentage
                    x-stoplight:
                      id: f3iosfcfnch91
                  Sales:
                    type: number
                    description: Total amount of the sales after subtraction
                  Surcharge:
                    type: number
                    description: 'Additional expense (ex: from credit card)'
                  SalesNTax:
                    type: number
                    description: Total amount of sales after taxes
                  Coupon:
                    type: string
                    description: Promotion Coupon Key
                  Note:
                    type: string
                    description: Note of the invoice transaction
                  InvoiceID:
                    type: string
                    description: Unique ID of the invoice
                  PointUsed:
                    type: integer
                    description: Total point used in the transaction
                  PointsEarned:
                    type: integer
                    description: Total point earned from the transaction
                  Fulfillment:
                    type: string
                    description: |
                      delivery status / progres of the invoice
                    enum:
                      - Sent
                      - Unsent
                      - Partial
                  LogisticServiceCode:
                    type: string
                    description: Code of Logistic Service Option
                    x-stoplight:
                      id: y62h8lln99i47
                  Payment:
                    type: string
                    description: payment status / state of the invoice
                  Void:
                    type: string
                    description: Void state / status of the invoice
                  Bin:
                    type: boolean
                    description: Recycle bin state/status of the invoice
                  ReferenceInvoiceNumber:
                    type: string
                    description: >-
                      Another Invoice that is associated with this Invoice ex:
                      SalesReturn scenario, null when it is normal Sales
                      transaction
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        VariantID:
                          type: string
                          description: Product Variant ID
                        Name:
                          type: string
                          description: Product Variant Name
                        Code:
                          type: string
                          description: Product Variant Code
                        Quantity:
                          type: integer
                          description: Quantity of the product variant
                        UnitQuantity:
                          type: integer
                          description: Unit Quantity Messurement of the product variant
                        Cost:
                          type: integer
                          description: Unit Cost of the product variant
                        Price:
                          type: integer
                          description: Selling Price of the product variant
                        PriceOriginal:
                          type: integer
                          description: >-
                            Original Price (before discounted) of the product
                            variant
                        Discount:
                          type: integer
                          description: Discount Percentage (%) of the product variant
                        DiscountAmount:
                          type: integer
                          description: Discount Amount of the product variant
                        Taxable:
                          type: boolean
                          description: Taxable state/status of the invoice transaction
                        LoyaltyPoint:
                          type: boolean
                          description: Loyalty state/status of the invoice transaction
                        Expense:
                          type: integer
                          description: Additional Expense of the product variant
                        Sales:
                          type: integer
                          description: >-
                            Net Sales for the Product (after deducted by
                            Discount - DiscountAmount - TaxInclude)
                          x-stoplight:
                            id: z512zkumpn6x3
                        Tax:
                          type: integer
                          description: >-
                            Tax applied for the product depending on chosen
                            TaxType (Rate + Calculation)
                          x-stoplight:
                            id: nixjrsddw2r6l
                        Commission:
                          type: integer
                          description: Sales commision of the invoice transaction
                        SalesName:
                          type: string
                          description: Sales Person Name of the transaction
                        PriceTypeID:
                          type: integer
                          description: Sales price type of the transaction
                        Note:
                          type: string
                          description: Product Variant Note of the invoice transaction
                  OutboundLogistics:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet_Name_of_Outbound_Logistic
                          x-stoplight:
                            id: bbzgvmvkhq8n4
                        Number:
                          type: string
                          description: Outbound_Logistic_Number
                          x-stoplight:
                            id: ofyrjtnsli5ap
                        Date:
                          type: string
                          description: Date of Outbound Logistic
                          x-stoplight:
                            id: vok3apb9s0973
                      x-stoplight:
                        id: elw8t6uzp0kgl
                  Payments:
                    type: array
                    items:
                      type: object
                      properties:
                        Date:
                          type: string
                          description: Date of the payment
                        Amount:
                          type: integer
                          description: Total amount of the payment
                        Method:
                          type: string
                          description: Payment method of the invoice transaction
                        Code:
                          type: string
                          description: Code of the payment method
                        Note:
                          type: string
                          description: Note of the payment method
                      x-stoplight:
                        id: wbfphw1v5m13s
              example:
                ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                Outlet: Outlet1
                Number: 20.05.00157
                Date: '2020-05-27T00:00:00'
                DueDate: '0001-01-01T00:00:00'
                Tag: Offline
                SalesPerson: Sales 1
                Customer:
                  Code: HW0001
                  Email: hendry@dealpos.com
                  Mobile: '0815161688'
                  Name: hendry
                  Phone: '0815161688'
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2020-05-27T11:10:50.57'
                Discount1: 20
                Discount2: 0
                DiscountAmount: 20000
                Gross: 100000
                DiscountTotal: 48800
                TaxType: No Tax
                Tax: 0
                TaxRate: 0
                Sales: 51200
                Surcharge: 1000
                SalesNTax: 51200
                Coupon: '889977'
                Note: Test Note
                InvoiceID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                PointUsed: 0
                PointsEarned: 0
                Fulfillment: Sent
                LogisticServiceCode: JNE-R
                Payment: Paid
                Void: 'No'
                Bin: false
                ReferenceInvoiceNumber: 20.05.00156
                Variants:
                  - VariantID: d23adf38-6739-4083-ac7b-4c665b6ba76f
                    Name: Muffin (Medium)
                    Code: MM3002
                    Quantity: 1
                    UnitQuantity: 1
                    Cost: 50000
                    Price: 100000
                    PriceOriginal: 100000
                    Discount: 10
                    DiscountAmount: 1000
                    Taxable: true
                    LoyaltyPoint: true
                    Expense: 10000
                    Sales: 89000
                    Tax: 0
                    Commission: 0
                    SalesName: Jane
                    PriceTypeID: 1
                    Note: Item note
                OutboundLogistics:
                  - Outlet: Outlet2
                    Number: 20.05.00157
                    Date: '2020-05-27T00:00:00'
                Payments:
                  - Date: '2020-05-27T00:00:00'
                    Amount: 52200
                    Method: Cash
                    Code: C001
                    Note: Payment Note
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the exception
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Invoice/ID:
    get:
      tags:
        - Invoice
      operationId: GetInvoiceByID
      summary: Get Invoice By ID
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get an Invoice based on Invoice ID


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ID
              type: object
              properties:
                ID:
                  type: string
                  description: ID of Invoice
            example:
              ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Unique ID of the invoice
                  Outlet:
                    type: string
                    description: Name of the outlet
                  Number:
                    type: string
                    description: Number of the invoice transasction
                  Date:
                    type: string
                    description: Sell date of the invoice transaction
                  DueDate:
                    type: string
                    description: Due date of the invoice transaction
                  Tag:
                    type: string
                    description: >-
                      Channel Tagging system. (ex:Offline / Whatsapp / Shopee /
                      Tokopedia) used in marketplace.dealpos.app. Backwards
                      Compatibility with property request "SalesType"
                  SalesPerson:
                    type: string
                    description: Sales person name of the invoice transaction
                  Customer:
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Unique Code of the customer
                      Email:
                        type: string
                        description: E-mail of the customer
                      Mobile:
                        type: string
                        description: Mobile Phone Number of the customer
                      Name:
                        type: string
                        description: Name of the customer
                      Phone:
                        type: string
                        description: Phone number of the customer
                  CreatorID:
                    type: string
                    description: Unique ID of the creator
                  Created:
                    type: string
                    description: |
                      Invoice created Transaction Date by system
                  Discount1:
                    type: integer
                    description: Percentage of discount 1
                  Discount2:
                    type: integer
                    description: Percentage of discount 2
                  DiscountAmount:
                    type: number
                    description: Amount of Discount amount-based
                  Gross:
                    type: number
                    description: Total amount of the transaction before discounted
                  DiscountTotal:
                    type: number
                    description: Total accumulation of the discounts
                  TaxType:
                    type: string
                    description: Type name of the tax
                  Tax:
                    type: number
                    description: Total amount of the taxes
                  Sales:
                    type: number
                    description: Total amount of the sales after subtraction
                  Surcharge:
                    type: number
                    description: 'Additional expense (ex: from credit card)'
                  SalesNTax:
                    type: number
                    description: Total amount of sales after taxes
                  Coupon:
                    type: string
                    description: Registered Coupon Name/Code
                  Note:
                    type: string
                    description: Note of the invoice transaction
                  InvoiceID:
                    type: string
                    description: Unique ID of the invoice
                  PointUsed:
                    type: integer
                    description: Total point used in the transaction
                  PointsEarned:
                    type: integer
                    description: Total point earned from the transaction
                  Fulfillment:
                    type: string
                    description: |
                      delivery status / progres of the invoice
                    enum:
                      - Sent
                      - Unsent
                      - Partial
                  Payment:
                    type: string
                    description: payment status / state of the invoice
                  Void:
                    type: string
                    description: Void state / status of the invoice
                  Bin:
                    type: boolean
                    description: Recycle bin state/status of the invoice
                  ReferenceInvoiceNumber:
                    type: string
                    description: >-
                      Another Invoice that is associated with this Invoice ex:
                      SalesReturn scenario, null when it is normal Sales
                      transaction
                  ReferenceNumber:
                    type: string
                    description: >-
                      Reference Number of the Sales Order: ex
                      PurchaseOrderNumber or Marketplace.OrderID
                    x-stoplight:
                      id: olxechknkh6tu
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        VariantID:
                          type: string
                          description: Product Variant ID
                        Name:
                          type: string
                          description: Product Variant Name
                        Code:
                          type: string
                          description: Product Variant Code
                        Quantity:
                          type: integer
                          description: Quantity of the product variant
                        UnitQuantity:
                          type: integer
                          description: Unit Quantity Messurement of the product variant
                        Cost:
                          type: integer
                          description: Unit Cost of the product variant
                        Price:
                          type: integer
                          description: Selling Price of the product variant
                        PriceOriginal:
                          type: integer
                          description: >-
                            Original Price (before discounted) of the product
                            variant
                        Discount:
                          type: integer
                          description: Discount Percentage (%) of the product variant
                        DiscountAmount:
                          type: integer
                          description: Discount Amount of the product variant
                        Taxable:
                          type: boolean
                          description: Taxable state/status of the invoice transaction
                        LoyaltyPoint:
                          type: boolean
                          description: Loyalty state/status of the invoice transaction
                        Expense:
                          type: integer
                          description: Additional Expense of the product variant
                        Sales:
                          type: integer
                          description: >-
                            Net Sales for the Product (after deducted by
                            Discount - DiscountAmount - TaxInclude)
                          x-stoplight:
                            id: wjoqc3q7wkgkk
                        Tax:
                          type: integer
                          description: >-
                            Tax applied for the product depending on chosen
                            TaxType (Rate + Calculation)
                          x-stoplight:
                            id: iw1qcz2yr4h46
                        Commission:
                          type: integer
                          description: Sales commision of the invoice transaction
                        SalesName:
                          type: string
                          description: Sales Person Name of the transaction
                        PriceTypeID:
                          type: integer
                          description: Sales price type of the transaction
                        Note:
                          type: string
                          description: Product Variant Note of the invoice transaction
                  OutboundLogistics:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet Name of outbound logistic
                          x-stoplight:
                            id: 4t5cb8zm663q5
                        Number:
                          type: string
                          description: Outbound_Logistic_Number
                          x-stoplight:
                            id: x3y6eejovt26r
                        Date:
                          type: string
                          description: Date of outbound logistic
                          x-stoplight:
                            id: wx0kehf4ctvy2
                      x-stoplight:
                        id: ywyezoie1p1ym
                  Payments:
                    type: array
                    items:
                      type: object
                      properties:
                        Date:
                          type: string
                          description: Date of the payment
                        Amount:
                          type: integer
                          description: Total amount of the payment
                        Method:
                          type: string
                          description: Payment method of the invoice transaction
                        Code:
                          type: string
                          description: Code of the payment method
                        Note:
                          type: string
                          description: Note of the payment method
                      x-stoplight:
                        id: eg3lv3oy3fl34
              example:
                ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                Outlet: Outlet1
                Number: 20.05.00157
                Date: '2020-05-27T00:00:00'
                DueDate: '0001-01-01T00:00:00'
                Tag: Offline
                SalesPerson: Sales 1
                Customer:
                  Code: HW0001
                  Email: hendry@dealpos.com
                  Mobile: '0815161688'
                  Name: hendry
                  Phone: '021234567'
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2020-05-27T11:10:50.57'
                Discount1: 20
                Discount2: 0
                DiscountAmount: 20000
                Gross: 100000
                DiscountTotal: 48800
                TaxType: No Tax
                Tax: 0
                Sales: 51200
                Surcharge: 1000
                SalesNTax: 51200
                Coupon: '223388'
                Note: Paid
                InvoiceID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                PointUsed: 0
                PointsEarned: 0
                Fulfillment: Sent
                Payment: Paid
                Void: 'No'
                Bin: false
                ReferenceInvoiceNumber: 20.05.00156
                ReferenceNumber: TKPD-001
                Variants:
                  - VariantID: d23adf38-6739-4083-ac7b-4c665b6ba76f
                    Name: Muffin (Medium)
                    Code: MM3002
                    Quantity: 1
                    UnitQuantity: 1
                    Cost: 50000
                    Price: 100000
                    PriceOriginal: 100000
                    Discount: 10
                    DiscountAmount: 1000
                    Taxable: true
                    LoyaltyPoint: true
                    Expense: 10000
                    Sales: 89000
                    Tax: 0
                    Commission: 0
                    SalesName: Jane
                    PriceTypeID: 1
                    Note: Item note
                OutboundLogistics:
                  - Outlet: Outlet2
                    Number: 20.05.00157
                    Date: '2020-05-27T00:00:00'
                Payments:
                  - Date: '2020-05-27T00:00:00'
                    Amount: 52200
                    Method: Cash
                    Code: C001
                    Note: Payment Note
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the exception
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /Invoice/IDByNumber:
    get:
      operationId: GetInvoiceIDByNumber
      tags:
        - Invoice
      summary: Get Invoice ID By Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Invoice ID by Number to check that available in POS


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                    Number:
                      type: string
                      description: Invoice number. this is primary key for the object
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 18.10.00009
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Unique ID from Invoice
              example:
                ID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /TransferOrder/Detail:
    get:
      operationId: GetTransferOrderDetail
      tags:
        - TransferOrder
      summary: Get TransferOrder by Number
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery/Detail. As for now, both the
        new & the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Outlet Delivery detail


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet source name
                Number:
                  type: string
                  description: Delivery number
            example:
              Outlet: Outlet1
              Number: 18.07.02.0000002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Number:
                    type: string
                    description: Outlet Delivery number
                  Date:
                    type: string
                    description: Outlet Delivery Date
                  Outlet:
                    type: string
                    description: Source of outlet delivery
                  OutletCode:
                    type: string
                    description: Code of source outlet delivery
                  Destination:
                    type: string
                    description: Destination of outlet delivery
                  DestinationCode:
                    type: string
                    description: Code of destination outlet delivery
                  Courier:
                    type: string
                    description: Courier Name
                  TypeName:
                    type: string
                    description: Outlet Delivery Type
                  StateLabel:
                    type: string
                    description: Outlet Delivery status
                  CreatedName:
                    type: string
                    description: User Creator of outlet delivery order
                  Note:
                    type: string
                    description: Outlet delivery note
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of variant
                        Code:
                          type: string
                          description: Code of variant
                        Qty:
                          type: integer
                          description: Variant quantity to be delivered
                        UnitPrice:
                          type: number
                          description: Price of variant
                        Total:
                          type: number
                          description: Total price of Quantity x UnitPrice
                        Note:
                          type: string
                          description: Note of variant
                  Total:
                    type: object
                    properties:
                      Quantity:
                        type: integer
                        description: Total all variant quantity to be delivered
                      Total:
                        type: integer
                        description: Total amount of whole delivery order
                  Delivery:
                    type: object
                    properties:
                      ReceivedNote:
                        type: string
                        description: Note when receive delivery order
                      ReceivedDate:
                        type: string
                        description: Date when delivery order received
                      ReceivedBy:
                        type: string
                        description: User who receive delivery order
              example:
                Number: 19.01.18.000000002
                Date: '2019-01-18T00:00:00'
                Outlet: Outlet 1
                OutletCode: OT1
                Destination: Outlet 2
                DestinationCode: OT2
                Courier: JNE
                TypeName: Restock
                StateLabel: Received
                CreatedName: Sys DealPOS
                Note: Paid
                Variants:
                  - Name: Cookies
                    Code: '2018'
                    Qty: 2
                    UnitPrice: 3500
                    Total: 7000
                    Note: Fresh
                Total:
                  Quantity: 2
                  Total: 7000
                Delivery:
                  ReceivedNote: Good quality
                  ReceivedDate: '2019-01-24T15:04:29.01'
                  ReceivedBy: Sys DealPOS
        '400':
          description: ''
          content:
            application/json:
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /TransferOrder/UpdateStatus:
    put:
      operationId: UpdateTransferOrderStatus
      tags:
        - TransferOrder
      summary: Update Status TransferOrder
      description: >-
        Update Status Delivery


        You must have "**EDIT**" role in "**Delivery**" Module  OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
                - State
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet source name
                Number:
                  type: string
                  description: Deliver number
                State:
                  type: string
                  description: Transfer Order Status
                  enum:
                    - Approved
                    - Dispatched
                    - Received
            example:
              Outlet: Outlet1
              Number: DO.0001
              State: Dispatched
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                description: Delivery has been updated
              example:
                Message: Outlet Delivery status has been updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Cannot change the backward status Dispatched to Request
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /TransferOrder/WithTotalCount:
    get:
      operationId: GetTransferOrderWithTotalCount
      tags:
        - TransferOrder
      summary: List TransferOrder With Total Count
      description: >-
        >Previous Endpoint: /api/v3/OutletDelivery/WithTotalCount. As for now,
        both the new & the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get list of Outlet Delivery with Total Count


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: 'From Date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To Date (format: yyyy-mm-dd)'
                PageNumber:
                  type: number
                  description: |
                    The number of page data to be displayed
                PageSize:
                  type: number
                  description: |
                    The number of rows returned by the API
            example:
              From: '2019-01-01'
              To: '2019-01-30'
              PageNumber: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Number:
                          type: string
                          description: Outlet Delivery Number
                        Date:
                          type: string
                          description: 'Date of Outlet Delivery '
                        Courier:
                          type: string
                          description: Name of Outlet Delivery courier
                        Outlet:
                          type: string
                          description: 'Name of origin outlet '
                        OutletCode:
                          type: string
                          description: 'Code of origin outlet '
                        Destination:
                          type: string
                          description: 'Name of destination outlet '
                        DestinationCode:
                          type: string
                          description: 'Code of destination outlet '
                        TypeName:
                          type: string
                          description: Type of the outlet delivery
                        Status:
                          type: string
                          description: Outlet delivery progress / state
                        Created:
                          type: string
                          description: |
                            Invoice created Transaction Date by system
                        Quantity:
                          type: integer
                          description: Invoice Quantity of the outlet delivery
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Number: 19.01.18.000000002
                    Date: '2019-01-18T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-18T15:14:48.64'
                    Quantity: 2
                  - Number: 19.01.18.000000001
                    Date: '2019-01-18T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Dispatched
                    Created: '2019-01-18T15:13:27.377'
                    Quantity: 2
                  - Number: 19.01.17.000000005
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-17T16:48:30.813'
                    Quantity: 8
                  - Number: 19.01.17.000000004
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Dispatched
                    Created: '2019-01-17T16:47:09.893'
                    Quantity: 5
                  - Number: 19.01.17.000000003
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-17T13:59:16.77'
                    Quantity: 1
                  - Number: 19.01.17.000000001
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-17T10:08:34.61'
                    Quantity: 1
                  - Number: 19.01.17.000000002
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 2
                    OutletCode: OT2
                    Destination: Outlet 3
                    DestinationCode: OT3
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-17T15:57:50.71'
                    Quantity: 7
                  - Number: 19.01.17.000000001
                    Date: '2019-01-17T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 2
                    OutletCode: OT2
                    Destination: Outlet 3
                    DestinationCode: OT3
                    TypeName: Restock
                    Status: Dispatched
                    Created: '2019-01-17T15:49:20.533'
                    Quantity: 7
                  - Number: 19.01.15.000000004
                    Date: '2019-01-15T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-15T11:15:57.027'
                    Quantity: 3
                  - Number: 19.01.15.000000003
                    Date: '2019-01-15T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-15T11:14:21.953'
                    Quantity: 7
                  - Number: 19.01.15.000000002
                    Date: '2019-01-15T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-15T11:07:44.59'
                    Quantity: 3
                  - Number: 19.01.15.000000001
                    Date: '2019-01-15T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-15T10:43:41.89'
                    Quantity: 2
                  - Number: 19.01.14.000000001
                    Date: '2019-01-14T00:00:00'
                    Courier: JNE
                    Outlet: Outlet 1
                    OutletCode: OT1
                    Destination: Outlet 2
                    DestinationCode: OT2
                    TypeName: Restock
                    Status: Received
                    Created: '2019-01-14T16:08:48.027'
                    Quantity: 10
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.GetRawText()...'
      x-codegen-request-body-name: body
  /LoyaltyPoint/EmailOrPhone:
    get:
      operationId: GetLoyaltyPointHistory
      tags:
        - Loyalty Point
      summary: Get History by Email or Phone
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Loyalty Point History for a specific customer by Email, MobilePhone
        or Phone


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                From:
                  type: string
                  description: From Date
                To:
                  type: string
                  description: To Date
                PageNumber:
                  type: number
                  description: The Page of data to be displayed
                PageSize:
                  type: number
                  description: The Number of rows returned by the API
                Email:
                  type: string
                  description: >-
                    Customer's email which will be used to pull the loyalty
                    point history
                MobilePhone:
                  type: string
                  description: >-
                    Customer's Mobile or Phone Number which will be used to pull
                    the loyalty point history
            example:
              From: '2024-01-01'
              To: '2024-12-31'
              PageNumber: 1
              PageSize: 10
              Email: customer@example.com
              MobilePhone: '1234567890'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    InvoiceID:
                      type: string
                      description: Invoice ID
                    Outlet:
                      type: string
                      description: Outlet Name
                    EntryDate:
                      type: string
                      description: >-
                        Date entry for transaction related to loyalty point
                        (earned/redeemed)
                    Action:
                      type: string
                      description: The cause of change in loyalty point
                    Invoice:
                      type: string
                      description: Invoice Number
                    Earned:
                      type: integer
                      description: Total Points earned/redeemed for the transaction
                      x-stoplight:
                        id: 5ezt07vzlkgqs
                    Balance:
                      type: integer
                      description: Total last points
                      x-stoplight:
                        id: drfulqafombie
                    Remaining:
                      type: integer
                      description: Points will be / already expired
                      x-stoplight:
                        id: oxfh9rpqgmmwf
                    ExpiryDate:
                      type: string
                      description: Point expired date
                    Note:
                      type: string
                      description: 'Note for History Point '
              example:
                - InvoiceID: c7224cbd-0292-4060-88f8-2f53f328f904
                  Outlet: Offline Store
                  EntryDate: '2024-05-08T14:46:00.01'
                  Action: Points Earned
                  Invoice: 24.05.00041
                  Earned: 50
                  Balance: 60
                  Remaining: 50
                  ExpiryDate: '2024-06-08T14:44:37'
                  Note: Paid
                - InvoiceID: a6ca59c2-4dd8-48ef-8dd7-96ba6427c3f8
                  Outlet: Offline Store
                  EntryDate: '2024-05-08T14:25:10.42'
                  Action: Point Expired
                  Invoice: 24.05.00039
                  Earned: -990
                  Balance: 10
                  Remaining: 0
                  ExpiryDate: '0001-01-01T00:00:00'
                  Note: Expired on 08 May 2024
                - InvoiceID: 40c52cfe-6941-421b-b8cd-5cb71b705281
                  Outlet: Offline Store
                  EntryDate: '2024-05-08T14:18:21.377'
                  Action: Points Earned
                  Invoice: 24.05.00040
                  Earned: 10
                  Balance: 1000
                  Remaining: 10
                  ExpiryDate: '2024-06-08T14:17:47'
                  Note: Paid
                - InvoiceID: 6ccc6cc6-fc59-41bf-ae5a-8e2d81e1ff31
                  Outlet: Offline Store
                  EntryDate: '2024-05-08T13:53:15.987'
                  Action: Points Redeemed
                  Invoice: 24.05.00037
                  Earned: -10
                  Balance: 990
                  Remaining: 0
                  ExpiryDate: '0001-01-01T00:00:00'
                  Note: Points Redeemed
                - InvoiceID: 7eb83722-99e4-4fb9-a2db-103673ad258e
                  Outlet: Offline Store
                  EntryDate: '2024-05-08T13:40:30.74'
                  Action: Points Earned
                  Invoice: 24.05.00036
                  Earned: 1000
                  Balance: 1000
                  Remaining: 0
                  ExpiryDate: '0001-01-01T00:00:00'
                  Note: Points Earned
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /LoyaltyPoint/ExpirationByEmail:
    get:
      operationId: GetLoyaltyPointExpirationByEmail
      tags:
        - Loyalty Point
      summary: Get Loyalty Point Expiration By Email
      description: |-
        Get Loyalty Point Expiration for a specific customer by Email

        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Email:
                  type: string
                  description: >-
                    Customer's email which will be used to pull the loyalty
                    point expiration date
            example:
              Email: ferdi@example.com
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Points:
                      type: integer
                      description: Total Points
                    ExpiryDate:
                      type: string
                      description: Date of expiration point
                x-examples:
                  Example 1:
                    - Point: 69
                      ExpiryDate: '2023-01-31'
                    - Point: 70
                      ExpiryDate: '2023-01-26'
                    - Point: 40
                      ExpiryDate: '2023-01-24'
              example:
                - Points: 69
                  ExpiryDate: '2023-01-31'
                - Points: 70
                  ExpiryDate: '2023-01-26'
                - Points: 40
                  ExpiryDate: '2023-01-24'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
      x-codegen-request-body-name: body
  /LoyaltyPoint/ExpirationByMobile:
    get:
      operationId: GetLoyaltyPointExpirationByMobile
      tags:
        - Loyalty Point
      summary: Get Loyalty Point Expiration By Mobile Phone
      description: |-
        Get Loyalty Point Expiration for a specific customer by Mobile Phone

        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                MobilePhone:
                  type: string
                  description: >-
                    Customer's Mobile or Phone Number which will be used to pull
                    the loyalty point expiration date
            example:
              MobilePhone: '08968484805'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Points:
                      type: integer
                      description: Total Points
                    ExpiryDate:
                      type: string
                      description: Date of expiration point
                x-examples:
                  Example 1:
                    - Point: 69
                      ExpiryDate: '2023-01-31'
                    - Point: 70
                      ExpiryDate: '2023-01-26'
                    - Point: 40
                      ExpiryDate: '2023-01-24'
              example:
                - Points: 69
                  ExpiryDate: '2023-01-31'
                - Points: 70
                  ExpiryDate: '2023-01-26'
                - Points: 40
                  ExpiryDate: '2023-01-24'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
      x-codegen-request-body-name: body
  /Report/OutletPerformance:
    get:
      operationId: GetOutletPerformance
      tags:
        - Report
      summary: Get Outlet Performance
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Report Sales Performance by Outlet


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - To
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet name
                From:
                  type: string
                  description: From date
                To:
                  type: string
                  description: to date
            example:
              Outlet: Outlet1
              From: '2021-01-01'
              To: '2021-01-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: the outlet of the reports that shown
                    Transaction:
                      type: integer
                      description: Total Transaction per Outlet
                    Sales:
                      type: number
                      description: Total Amount after discount in invoice
                    Tax:
                      type: number
                      description: Tax value in invoice
                    SalesNTax:
                      type: number
                      description: Total Sales + Tax from invoice
                    Cost:
                      type: number
                      description: Total Cost per outlet transaction
                    Profit:
                      type: number
                      description: Total profit of the outlet transaction
              example:
                - Outlet: Outlet2
                  Transaction: 4
                  Sales: 25120260
                  Tax: 0
                  SalesNTax: 25120260
                  Cost: 10123590.91
                  Profit: 14996669.09
                - Outlet: Outlet1
                  Transaction: 23
                  Sales: 10024000
                  Tax: 0
                  SalesNTax: 10024000
                  Cost: 5835862.6
                  Profit: 4188137.4
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: An error has occurred.
  /Payment/Invoice:
    get:
      operationId: GetPaymentInvoice
      tags:
        - Invoice Payment
      summary: Received by Outlet
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Payment/Invoice/p)**


        <br>

        Invoice Payment Received By Outlet


        Required Group Role: "**Payment**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - To
              type: object
              properties:
                From:
                  type: string
                  description: From date
                To:
                  type: string
                  description: To date
            example:
              From: '2023-01-01'
              To: '2023-01-31'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: the outlet of the transaction
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Payment:
                            type: string
                            description: payment method of the payment report
                          Amount:
                            type: number
                            description: total amount of the payment
              example:
                - Outlet: Outlet1
                  Payments:
                    - Payment: Cash
                      Amount: 510
                    - Payment: Debit Card
                      Amount: 200
                    - Payment: Credit Card
                      Amount: 700
                - Outlet: Outlet2
                  Payments:
                    - Payment: Cash
                      Amount: 500
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    post:
      operationId: PostPaymentInvoice
      tags:
        - Invoice Payment
      summary: Add Payment
      description: >-
        <!-- theme: info -->


        > #### Terminology Changes

        >

        > **StateFilter**, will be changed into **UnpaidValidation** in the
        upcoming update, the old one will remain works.


        Add Payment in invoice


        You must have "**ADD**" role in "**Payment**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Without Validation
                  type: object
                  required:
                    - Number
                    - Outlet
                  properties:
                    Outlet:
                      type: string
                      description: Outlet of transaction
                    Number:
                      type: string
                      description: Invoice transaction number
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Date:
                            type: string
                            description: Date of payment made
                          Amount:
                            type: number
                            description: Amount of payment
                          Method:
                            type: string
                            description: Payment method available in the POS
                          Note:
                            type: string
                            description: Note of payment
                    UnpaidValidation:
                      type: boolean
                      description: If true, returns 409 when there's an existing payment
                      default: false
                  example:
                    Outlet: Outlet1
                    Number: 20.04.00019
                    Payments:
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Cash
                        Note: ''
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Debit - Outlet Outlet1
                        Note: ''
                - title: With Validation
                  type: object
                  required:
                    - Number
                    - Outlet
                  properties:
                    Outlet:
                      type: string
                      description: Outlet of transaction
                    Number:
                      type: string
                      description: Invoice transaction number
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Date:
                            type: string
                            description: Date of payment made
                          Amount:
                            type: number
                            description: Amount of payment
                          Method:
                            type: string
                            description: Payment method available in the POS
                          Note:
                            type: string
                            description: Note of payment
                    UnpaidValidation:
                      type: boolean
                      description: If true, returns 409 when there's an existing payment
                      default: false
                  example:
                    Outlet: Outlet1
                    Number: 20.04.00019
                    Payments:
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Cash
                        Note: ''
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Debit - Outlet Outlet1
                        Note: ''
                    UnpaidValidation: true
                - title: With Outlet ID
                  type: object
                  required:
                    - OutletID
                    - Number
                  properties:
                    OutletID:
                      type: string
                      description: GUID of Outlet ID
                    Number:
                      type: string
                      description: Invoice transaction number
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Date:
                            type: string
                            description: Date of payment made
                          Amount:
                            type: number
                            description: Amount of payment
                          Method:
                            type: string
                            description: Payment method available in the POS
                          Note:
                            type: string
                            description: Note of payment
                    UnpaidValidation:
                      type: boolean
                      description: If true, returns 409 when there's an existing payment
                      default: false
                  example:
                    OutletID: 123e4567-e89b-12d3-a456-426614174000
                    Number: 20.04.00019
                    Payments:
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Cash
                        Note: ''
                      - Date: '2023-01-01'
                        Amount: 100
                        Method: Debit - Outlet Outlet1
                        Note: ''
                    UnpaidValidation: true
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Invoice has been paid
              example:
                Message: Invoice Number 20.04.00019 has successfully completed a Paid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Cannot add payment, cause invoice 20.04.00019 had been voided
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '422':
          description: Unprocessable Entity cause Order not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Orders not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  StackTraceString:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
                  Source:
                    type: string
              example:
                ClassName: System.Exception
                Message: >-
                  There is no Payment Method with that name Debit - Outlet 
                  Outlet1
                StackTraceString: '   at POS.BLL.API.Model.PaymentAPIModel.TransformData...'
                RemoteStackIndex: 0
                HResult: -2146233088
                Source: POS.BLL
      x-codegen-request-body-name: body
    delete:
      operationId: DeletePaymentInvoice
      tags:
        - Invoice Payment
      summary: Delete Payment
      description: |-
        Delete Payment in invoice

        You must have "**Edit**" role in "**Payment**" Module 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name that you want to delete
                    Number:
                      type: string
                      description: Invoice number that you want to delete
                  example:
                    Outlet: Outlet1
                    Number: 21.10.00001
                - title: With OutletID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Outlet ID that you want to delete
                    Number:
                      type: string
                      description: Invoice number that you want to delete
                  example:
                    OutletID: 123e4567-e89b-12d3-a456-426614174000
                    Number: 21.10.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Invoice Number .21.10.00001 has successfully deleted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
              example:
                Message: >-
                  Cannot delete payment, cause invoice 20.04.00019 had been
                  voided
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Invoice not found
                StackTrace: '   at POS.BLL.API.Model.PaymentAPIModel.ConvertForProcessor[T]...'
      x-codegen-request-body-name: body
  /Payment/Invoice/AddPaymentFull:
    post:
      operationId: PostPaymentInvoiceFull
      tags:
        - Invoice Payment
      summary: Add Payment (Full Payment)
      description: >-
        <!-- theme: warning-->


        > #### Terminology Changes

        >

        > **StateFilter**, will be changed into **UnpaidValidation** in the
        upcoming update, the old one will remain works.


        > This endpoint is a fractions from API/V3/Payment/Invoice. In This
        endpoint, you will not need to fill the exact payment amount in order to
        fill the entire payments (fully paid). You will only need to fill the
        Amount to 0 (zero). Please see the request example attached.


        You must have "**ADD**" role in "**Payment**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: FullyPaidSchema
                  type: object
                  required:
                    - Number
                    - Outlet
                  properties:
                    Number:
                      type: string
                      description: Invoice transaction number
                    Outlet:
                      type: string
                      description: Outlet of transaction
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Date:
                            type: string
                            description: Date of payment made
                          Amount:
                            type: number
                            description: >-
                              When 0, the amount will be the same as the invoice
                              amount
                          Method:
                            type: string
                            description: Payment method available in the POS
                          Note:
                            type: string
                            description: Note of payment
                    UnpaidValidation:
                      type: boolean
                      description: If true, returns 409 when there's an existing payment
                      default: false
                  example:
                    Number: 20.04.00019
                    Outlet: Outlet Name
                    Payments:
                      - Date: '2020-04-01'
                        Amount: 0
                        Method: Cash
                        Note: ''
                    UnpaidValidation: false
                - title: WithOutletIDSchema
                  type: object
                  required:
                    - OutletID
                    - Number
                    - Outlet
                  properties:
                    OutletID:
                      type: string
                      description: GUID of the Outlet ID
                    Number:
                      type: string
                      description: Invoice transaction number
                    Outlet:
                      type: string
                      description: Outlet of transaction
                    Payments:
                      type: array
                      items:
                        type: object
                        properties:
                          Date:
                            type: string
                            description: Date of payment made
                          Amount:
                            type: number
                            description: >-
                              When 0, the amount will be the same as the invoice
                              amount
                          Method:
                            type: string
                            description: Payment method available in the POS
                          Note:
                            type: string
                            description: Note of payment
                    UnpaidValidation:
                      type: boolean
                      description: If true, returns 409 when there's an existing payment
                      default: false
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.04.00019
                    Outlet: Offline
                    Payments:
                      - Date: '2020-04-01'
                        Amount: 0
                        Method: Cash
                        Note: ''
                    UnpaidValidation: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Invoice has been paid
              example:
                Message: Invoice Number 20.04.00019 has successfully completed a Paid
      x-codegen-request-body-name: body
  /Payment/SupplierBill:
    post:
      operationId: PostPaymentSupplierBill
      tags:
        - Bill Payment
      summary: Add Payment
      description: >-
        Add Payment in Supplier Bill


        You must have "**ADD**" role in "**Payment**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet of transaction
                Number:
                  type: string
                  description: Invoice supplier bill number
                StateFilter:
                  type: boolean
                  description: >-
                    if "false" it will be process the payment, but if "true"
                    only process the payment with state "Unpaid"
                  default: false
                Payments:
                  type: array
                  items:
                    type: object
                    properties:
                      Date:
                        type: string
                        description: Date of Payment Made
                      Amount:
                        type: number
                        description: Amount of paid
                      Method:
                        type: string
                        description: Payment Method list that available in the POS
                      Note:
                        type: string
                        description: Note of payment
            example:
              Outlet: Outlet1
              Number: 20.04.00019
              StateFilter: false
              Payments:
                - Date: '2021-04-01T00:00:00'
                  Amount: 1000000
                  Method: Cash
                  Note: Payment for Invoice Number 20.04.00019
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Invoice has been paid
              example:
                Message: Invoice Number 20.04.00019 has successfully completed a Paid
        '401':
          description: ''
          content: {}
        '500':
          description: ''
          content: {}
      x-codegen-request-body-name: body
    delete:
      operationId: DeletePaymentSupplierBill
      tags:
        - Bill Payment
      summary: Delete Payment
      description: |-
        Delete Payment in invoice

        You must have "**Edit**" role in "**Payment**" Module 
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name that you want to delete
                Number:
                  type: string
                  description: Invoice number that you want to delete
            example:
              Outlet: Outlet1
              Number: 21.10.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Invoice Number .21.10.00001 has successfully deleted
      x-codegen-request-body-name: body
  /Estimate:
    get:
      operationId: GetEstimateList
      tags:
        - Estimate
      summary: Get Estimate List
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Estimate/p)**


        <br>

        Get list of estimate order


        Required Group Role: "**Orders**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: The number of page data to be display
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
                From:
                  type: string
                  description: From date. this is the primary key for tje object
                To:
                  type: string
                  description: To date. this is primary key for the object
            example:
              PageNumber: 1
              PageSize: 20
              From: '2019-12-01T00:00:00'
              To: '2019-12-31T23:59:59'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name
                    Number:
                      type: string
                      description: Number of estimate order
                    Customer:
                      type: string
                      description: 'Name of Customer '
                    Date:
                      type: string
                      description: Date of estimate order
                    Status:
                      type: string
                      description: >-
                        Status of convert estimate order to sales order /
                        invoice (Waiting / Approved)
                    Created:
                      type: string
                      description: Created Time estimate
              example:
                - Outlet: Outlet1
                  Number: 19.12.00102
                  Customer: Hendry
                  Date: '2019-12-31T00:00:00'
                  Created: '2019-12-31T09:30:01'
                - Outlet: Outlet1
                  Number: Estimate001
                  Customer: Hendry
                  Date: '2019-12-05T00:00:00'
                  Status: Approved
                  Created: '2019-12-05T08:45:08'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    put:
      operationId: PutEstimate
      tags:
        - Estimate
      summary: Update Estimate
      description: >-
        Update an Estimate based on order


        You must have "**EDIT**" role in "**Estimate**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/estimate'
            example:
              Outlet: Outlet 1
              Number: OTL1.23.01.005
              Date: '2023-01-20'
              Discount: 20
              DiscountAmount: 10000
              TaxType: No Tax
              Tag: Walk In
              Customer:
                Email: Hendry@dealpos.com
                Name: Hendry
                Mobile: 85693145151
                Address: Jl. Muara Karang P3T No.30
                Gender: '1'
                Code: HW001
              Variants:
                - Code: Bj001
                  Quantity: 1
                  Cost: 200000
                  Price: 500000
                  Discount: 10
                  Note: New Arrival
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Estimate has been updated
              example:
                ID: c1b2c529-fa67-4e81-ac65-10d315051824
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
    post:
      operationId: PostEstimate
      tags:
        - Estimate
      summary: Create an Estimate
      description: >-
        Create an estimate based on order


        You must have "**CREATE**" role in "**Estimate**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/estimate'
            example:
              Outlet: Outlet 1
              Number: OTL1.23.01.005
              Date: '2023-01-20'
              Discount: 20
              DiscountAmount: 10000
              TaxType: No Tax
              Tag: Walk In
              Customer:
                Email: Hendry@dealpos.com
                Name: Hendry
                Mobile: 85693145151
                Address: Jl. Muara Karang P3T No.30
                Gender: '1'
                Code: HW001
              Variants:
                - Code: Bj001
                  Quantity: 1
                  Cost: 200000
                  Price: 500000
                  Discount: 10
                  Note: New Arrival
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Estimate has been created
              example:
                ID: 5d76bd2f-43e1-401f-98ad-c159b8c6ac6c
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
    delete:
      operationId: DeleteEstimate
      tags:
        - Estimate
      summary: Delete Estimate
      description: |-
        Delete an estimate invoice

        You must have "**Delete**" role in "**Estimate**" Module
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Estimer Number
            example:
              Outlet: Outlet1
              Number: Estimate001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Estimate befa74af-234f-4a43-bd87-054b41824a5e has been
                  deleted!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Estimate/Detail:
    get:
      operationId: GetEstimateDetail
      tags:
        - Estimate
      summary: Get Estimate Detail
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get an estimate detail


        Required Group Role: "**Orders**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: outlet of the created estimate
                Number:
                  type: string
                  description: estimate number. this is primary key for the object
            example:
              Outlet: Outlet 1
              Number: OTL1.23.01.005
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/estimate'
              example:
                Outlet: Outlet 1
                Number: OTL1.23.01.005
                Date: '2023-01-20'
                Discount: 20
                DiscountAmount: 10000
                TaxType: No Tax
                Tag: Walk In
                Customer:
                  Email: Hendry@dealpos.com
                  Name: Hendry
                  Mobile: 85693145151
                  Address: Jl. Muara Karang P3T No.30
                  Gender: '1'
                  Code: HW001
                Variants:
                  - Code: Bj001
                    Quantity: 1
                    Cost: 200000
                    Price: 500000
                    Discount: 10
                    Note: New Arrival
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Estimate/WithTotalCount:
    get:
      operationId: GetEstimateWithTotalCount
      tags:
        - Estimate
      summary: List Estimate With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**

        <br>

        Get list of estimate order with total count


        Required Group Role: "**Orders**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: |
                    The number of page data to be displayed
                PageSize:
                  type: integer
                  description: |
                    The number of rows returned by the API
                From:
                  type: string
                  description: 'From Date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To Date (format: yyyy-mm-dd)'
            example:
              PageNumber: 1
              PageSize: 20
              From: '2019-12-01'
              To: '2019-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Name of The origin outlet
                        Number:
                          type: string
                          description: Number of Estimate Invoice
                        Customer:
                          type: string
                          description: Name of the customer
                        Date:
                          type: string
                          description: Date of Estimate Invoice
                        Status:
                          type: string
                          description: Progress/State of the estimate Invoice
                        Created:
                          type: string
                          description: |
                            Invoice created Estimate Date by system
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 19.12.00102
                    Customer: Hendry
                    Date: '2019-12-31T00:00:00'
                    Status: Waiting
                    Created: '2019-12-31T09:30:01'
                  - Outlet: Outlet1
                    Number: Estimate001
                    Customer: Hendry
                    Date: '2019-12-05T00:00:00'
                    Status: Approved
                    Created: '2019-12-05T08:45:08'
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: String '20139-12-05' was not recognized as a valid DateTime.
                StackTrace: '   at System.DateTimeParse.Parse....)'
      x-codegen-request-body-name: body
  /Outlet:
    get:
      operationId: GetOutletList
      tags:
        - Outlet
      summary: List Outlets
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/Outlet/p)**


        <br>

        Get List of Outlets


        Required Group Role: "**Outlets**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                  description: Outlet Name (Can be searched keyword contain of outlet name)
                Access:
                  type: string
                  description: Access Restriction
                  example: Peek / Read / Write / All
                  default: All
                SuspendedStatus:
                  type: string
                  description: Outlet status
                  example: No / Yes / All
                  default: 'No'
            example:
              Name: Outlet
              Access: All
              SuspendedStatus: 'No'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Outlet ID
                    Name:
                      type: string
                      description: Outlet's name
                    Code:
                      type: string
                      description: Outlet's code
                    Suspended:
                      type: boolean
                      description: Outlet's status
              example:
                - ID: 227427f5-fb25-4f47-9e39-2370fa70d156
                  Name: Outlet1
                  Code: '001'
                  Suspended: false
                - ID: 28342qw5-fb25-4287-3259-2210faaf156
                  Name: Outlet2
                  Code: '002'
                  Suspended: false
                - ID: 30e4a41d-7fc6-46f5-9945-fd5e0642w3e3
                  Name: Outlet3
                  Code: '003'
                  Suspended: false
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    put:
      operationId: PutOutlet
      tags:
        - Outlet
      summary: Update an Outlet
      description: >-
        Update an Outlet


        You must have "**EDIT**" role in "**Outlets**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet name that will be updated
                Code:
                  type: string
                  description: Code of outlet
                Receipt:
                  type: string
                  description: Code Of receipt
                NegativeInventory:
                  type: string
                  description: Negative inventory configuration
                  enum:
                    - 'Yes'
                    - 'No'
            example:
              Outlet: Emporium Pluit
              Code: '001'
              Receipt: '001'
              NegativeInventory: 'Yes'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Outlet has been updated
              example:
                Message: Outlet has been updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Code not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                      HelpLink.ProdVer:
                        type: string
                      HelpLink.EvtSrc:
                        type: string
                      HelpLink.EvtID:
                        type: string
                      HelpLink.BaseHelpUrl:
                        type: string
                      HelpLink.LinkId:
                        type: string
                      SqlError 1:
                        type: string
                  StackTraceString:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
                  Source:
                    type: string
                  ClientConnectionId:
                    type: string
              example:
                ClassName: System.Data.SqlClient.SqlException
                Message: >-
                  The parameterized query '(@ID uniqueidentifier,@EntityGroupID
                  nvarchar(4000),@Code nvarch' expects the parameter '@Name',
                  which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 15.00.2000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '8178'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    System.Data.SqlClient.SqlError: The parameterized query
                    '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code
                    nvarch' expects the parameter '@Name', which was not
                    supplied.
                StackTraceString: '   at System.Data.SqlClient.SqlConnection....'
                RemoteStackIndex: 0
                HResult: -2146232060
                Source: Core .Net SqlClient Data Provider
                ClientConnectionId: 94b98778-7e64-4293-a569-112929bef8f4
      x-codegen-request-body-name: body
    post:
      operationId: PostOutlet
      tags:
        - Outlet
      summary: Create an Outlet
      description: |-
        Create an Outlet

        You must have "**CREATE**" role in "**Outlets**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Name
              type: object
              properties:
                Name:
                  type: string
                  description: Outlet's name that will be created
                Code:
                  type: string
                  description: Code of new outlet
                Receipt:
                  type: string
                  description: Code Of receipt
                NegativeInventory:
                  type: string
                  description: Negative inventory configuration
                  enum:
                    - 'Yes'
                    - 'No'
            example:
              Name: Emporium Pluit
              Code: '001'
              Receipt: '001'
              NegativeInventory: 'Yes'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Outlet has been created
              example:
                Message: Outlet has been created
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Code cannot duplicate
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                      HelpLink.ProdVer:
                        type: string
                      HelpLink.EvtSrc:
                        type: string
                      HelpLink.EvtID:
                        type: string
                      HelpLink.BaseHelpUrl:
                        type: string
                      HelpLink.LinkId:
                        type: string
                      SqlError 1:
                        type: string
                  StackTraceString:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
                  Source:
                    type: string
                  ClientConnectionId:
                    type: string
              example:
                ClassName: System.Data.SqlClient.SqlException
                Message: >-
                  The parameterized query '(@ID uniqueidentifier,@EntityGroupID
                  nvarchar(4000),@Code nvarch' expects the parameter '@Name',
                  which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 15.00.2000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '8178'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    System.Data.SqlClient.SqlError: The parameterized query
                    '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code
                    nvarch' expects the parameter '@Name', which was not
                    supplied.
                StackTraceString: '   at System.Data.SqlClient.SqlConnection...'
                RemoteStackIndex: 0
                HResult: -2146232060
                Source: Core .Net SqlClient Data Provider
                ClientConnectionId: 94b98778-7e64-4293-a569-112929bef8f4
      x-codegen-request-body-name: body
    delete:
      operationId: DeleteOutlet
      tags:
        - Outlet
      summary: Delete an Outlet
      description: |-
        Delete an Outlet

        You must have "**DELETE**" role in "**Outlets**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Code of outlet that will be deleted
            example:
              Code: emporium
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet Emporium Pluit has been deleted
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
              example:
                ClassName: System.Exception
                Message: Object reference not set to an instance of an objects.
                RemoteStackIndex: 0
                HResult: -2146233088
      x-codegen-request-body-name: body
  /Outlet/Detail:
    get:
      operationId: GetOutletDetail
      tags:
        - Outlet
      summary: Get Outlet Detail
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Outlet Detail


        Required Group Role: "**Outlet**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
                - Name
              type: object
              properties:
                Name:
                  minLength: 1
                  type: string
                  description: Outlet Name
                Code:
                  minLength: 1
                  type: string
                  description: Outlet Code
            example:
              Name: Shopee
              Code: Outlet2
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Outlet ID
                  Code:
                    type: string
                    description: Outlet Code
                  Name:
                    type: string
                    description: Outlet Name
                  Email:
                    type: string
                    description: Outlet's Email
                  SalesTarget:
                    type: integer
                    description: Target sales per outlet
                  Suspended:
                    type: boolean
                    description: Status of Outlet (false = unsuspend, true = suspend)
                  MinimumInventory:
                    type: integer
                    description: Reorder Point
                  EnabledKitchenDisplay:
                    type: boolean
                    description: 'Kitchen Display status '
                  ReceiptTemplate:
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Receipt template Code
                      OutletName:
                        type: string
                        description: Receipt outlet name
                      Address:
                        type: string
                        description: Receipt Address
                      ContactInfo:
                        type: string
              example:
                ID: 410ba2b7-8eff-4759-b5f1-cf47b33ef1cc
                Code: OTL1
                Name: Outlet1
                Email: hendry@gmail.com
                SalesTarget: 50000
                Suspended: false
                MinimumInventory: 0
                EnabledKitchenDisplay: false
                ReceiptTemplate:
                  Code: B1
                  OutletName: Outlet1
                  Address: "Muara Karang P 3 Timur No 30\r\nJakarta Utara, Indonesia"
                  ContactInfo: 'Phone: 021-66600886'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Customer/Code:
    get:
      operationId: GetCustomerByCode
      tags:
        - Customer
      summary: Get Customer By Code
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get customer based on customer code


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Member Code of customer. this is primary key of the object
            example:
              Code: HW008
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of customer
                  Name:
                    type: string
                    description: Name of customer
                  Email:
                    type: string
                    description: Email Address of customer
                  Title:
                    type: string
                    description: Title Name of customer
                  FirstName:
                    type: string
                    description: First name of customer
                  LastName:
                    type: string
                    description: Last name of customer
                  Gender:
                    type: string
                    description: Gender of customer
                  Code:
                    type: string
                    description: Code of customer
                  Phone:
                    type: string
                    description: Phone number of customer
                  MobilePhone:
                    type: string
                    description: Mobile number of customer
                  Fax:
                    type: string
                    description: Fax number of customer
                  Address:
                    type: string
                    description: Address of customer
                  City:
                    type: string
                    description: City of customer
                  Nationality:
                    type: string
                    description: Nationality of customer
                  ReferredBy:
                    type: string
                    description: Customer ID who referred this customer
                  Identification:
                    type: string
                    description: identification number of customer
                  Birthday:
                    type: string
                    description: Birthday of customer
                  JoinDate:
                    type: string
                    description: Join date of customer
                  Group:
                    type: string
                    description: Group of customer
                  ExpiredGroup:
                    type: string
                    description: Expired group of customer
                  SignUpOutlet:
                    type: string
                    description: Sign up oulet when created the new customer
                  ImageURL:
                    type: string
                    description: Image url of customer
                  LoyaltyPoint:
                    type: integer
                    description: Loyalty point of customer
                  Status:
                    type: string
                    description: 'Status Customer '
                    default: Active / WaitingForApproval / Suspended
              example:
                ID: 5acffe34-346f-4888-afd8-0a551e556681
                Name: Tafta tata
                Email: Tafta@dealpos.com
                Title: Mr.
                FirstName: Tafta
                LastName: tata
                Gender: Male
                Code: HW008
                Phone: 021-66698155
                MobilePhone: '081588818888'
                Fax: '6325894'
                Address: Jl. Lenteng Agung
                City: Jakarta
                Nationality: Indonesian
                ReferredBy: 449e35af-190d-4137-aa13-9cf2cf6af57a
                Identification: '3173656111'
                Birthday: 18 Mar 1994
                JoinDate: 22 Jul 2019
                Group: Gold
                ExpiredGroup: 31 Jul 2019
                SignUpOutlet: Outlet1
                ImageURL: >-
                  //res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg
                LoyaltyPoint: 88
                Status: Active
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Customer/MobilePhone:
    get:
      operationId: GetCustomerByMobilePhone
      tags:
        - Customer
      summary: Get Customer By MobilePhone
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get a customer based on customer mobile phone number


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - MobilePhone
              type: object
              properties:
                MobilePhone:
                  type: string
                  description: 'Phone / Mobile Phone Number of customer '
            example:
              MobilePhone: '081588818888'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of customer
                  Name:
                    type: string
                    description: Name of customer
                  Email:
                    type: string
                    description: Email Address of customer
                  Title:
                    type: string
                    description: Title Name of customer
                  FirstName:
                    type: string
                    description: First name of customer
                  LastName:
                    type: string
                    description: Last name of customer
                  Gender:
                    type: string
                    description: Gender of customer
                  Code:
                    type: string
                    description: Code of customer
                  Phone:
                    type: string
                    description: Phone number of customer
                  MobilePhone:
                    type: string
                    description: >-
                      Mobile number of customer. this is primary key for the
                      object
                  Fax:
                    type: string
                    description: Fax number of customer
                  Address:
                    type: string
                    description: Address of customer
                  City:
                    type: string
                    description: City of customer
                  Nationality:
                    type: string
                    description: Nationality of customer
                  ReferredBy:
                    type: string
                    description: Customer ID who referred this customer
                  Identification:
                    type: string
                    description: identification number of customer
                  Birthday:
                    type: string
                    description: Birthday of customer
                  JoinDate:
                    type: string
                    description: Join date of customer
                  Group:
                    type: string
                    description: Group of customer
                  ExpiredGroup:
                    type: string
                    description: Expired group of customer
                  SignUpOutlet:
                    type: string
                    description: Sign up oulet when created the new customer
                  ImageURL:
                    type: string
                    description: Image url of customer
                  LoyaltyPoint:
                    type: integer
                    description: Loyalty point of customer
                  Status:
                    type: string
                    description: Customer Activation Status
                    default: Active / WaitingForApproval / Suspended
              example:
                ID: 5acffe34-346f-4888-afd8-0a551e556681
                Name: Tafta tata
                Email: Tafta@dealpos.com
                Title: Mr.
                FirstName: Tafta
                LastName: tata
                Gender: Male
                Code: HW008
                Phone: 021-66698155
                MobilePhone: '081588818888'
                Fax: '6325894'
                Address: Jl. Lenteng Agung
                City: Jakarta
                Nationality: Indonesian
                ReferredBy: 449e35af-190d-4137-aa13-9cf2cf6af57a
                Identification: '3173656111'
                Birthday: 18 Mar 1994
                JoinDate: 22 Jul 2019
                Group: Gold
                ExpiredGroup: 31 Jul 2019
                SignUpOutlet: Outlet1
                ImageURL: >-
                  //res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg
                LoyaltyPoint: 88
                Status: Active
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection.....)'
      x-codegen-request-body-name: body
  /Customer/ByCode:
    put:
      operationId: UpdateCustomerByCode
      tags:
        - Customer
      summary: Update Customer By Code
      description: >-
        Update a customer based on customer code


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: the code of the customer. this is primary key for the object
                Name:
                  type: string
                  description: the name of customer
                FirstName:
                  type: string
                  description: first name of the customer
                LastName:
                  type: string
                  description: last name of the customer
                Birthdate:
                  type: string
                  description: birthdate of the customer
                Email:
                  type: string
                  description: email of the customer
                Phone:
                  type: string
                  description: phone number of the customer
                Mobile:
                  type: string
                  description: mobile phone of the customer
                Address:
                  type: string
                  description: address of the customer
                Gender:
                  type: string
                  description: gender of the customer
                Group:
                  type: string
                  description: group of the customer
                ExpiredGroup:
                  type: string
                  description: expiry date of the customer group
                LoyaltyPoint:
                  type: integer
                  description: loyalty point of the customer
                ImageURL:
                  type: string
                  description: picture of the customer
                Status:
                  type: string
                  description: Status Customer
                  enum:
                    - Active
                    - WaitingForApproval
                    - Suspended
                ReferredByID:
                  type: string
                  format: guid
                  description: the ID of the customer who refer this customer
            example:
              Code: '0011'
              Name: Hendry Wijaya
              FirstName: Hendry
              LastName: Wijaya
              Birthdate: '1994-03-21'
              Email: hendryw@gmail.com
              Phone: '0216892235'
              Mobile: '081589632178'
              Address: Jl.Pluit Karang Jelita no 51
              Gender: Male
              Group: Gold
              ExpiredGroup: '2020-12-12'
              LoyaltyPoint: 80
              Status: Active
              ReferredByID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Response'
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Message: Record updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Customer/ByID:
    put:
      operationId: UpdateCustomerByID
      tags:
        - Customer
      summary: Update Customer By ID
      description: >-
        Update a customer based on customer ID


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ID:
                  type: string
                  description: Customer ID
                Name:
                  type: string
                  description: the name of customer
                Code:
                  type: string
                  description: the code of the customer. this is primary key for the object
                FirstName:
                  type: string
                  description: first name of the customer
                LastName:
                  type: string
                  description: last name of the customer
                Birthdate:
                  type: string
                  description: birthdate of the customer
                Email:
                  type: string
                  description: email of the customer
                Phone:
                  type: string
                  description: phone number of the customer
                Mobile:
                  type: string
                  description: mobile phone of the customer
                Address:
                  type: string
                  description: address of the customer
                Gender:
                  type: string
                  description: gender of the customer
                Group:
                  type: string
                  description: group of the customer
                ExpiredGroup:
                  type: string
                  description: expiry date of the customer group
                LoyaltyPoint:
                  type: integer
                  description: loyalty point of the customer
                ImageURL:
                  type: string
                  description: picture of the customer
                Status:
                  type: string
                  description: Status Customer
                  enum:
                    - Active
                    - WaitingForApproval
                    - Suspended
            example:
              ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
              Name: Hendry Wijaya
              Code: '0011'
              FirstName: Hendry
              LastName: Wijaya
              Birthdate: '1994-03-21'
              Email: hendryw@gmail.com
              Phone: '0216892235'
              Mobile: '081589632178'
              Address: Jl.Pluit Karang Jelita no 51
              Gender: Male
              Group: Gold
              ExpiredGroup: '2020-12-12'
              LoyaltyPoint: 80
              Status: Active
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Response'
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Message: Record updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Customer/ByMobilePhone:
    put:
      operationId: UpdateCustomerByMobilePhone
      tags:
        - Customer
      summary: Update Customer By MobilePhone
      description: >-
        Update a customer based on customer' mobile phone


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Mobile
              type: object
              properties:
                Mobile:
                  type: string
                  description: mobile phone of the customer
                Name:
                  type: string
                  description: the name of customer
                FirstName:
                  type: string
                  description: first name of the customer
                LastName:
                  type: string
                  description: last name of the customer
                Birthdate:
                  type: string
                  description: birthdate of the customer
                Code:
                  type: string
                  description: the code of the customer. this is primary key for the object
                Email:
                  type: string
                  description: email of the customer
                Phone:
                  type: string
                  description: phone number of the customer
                Address:
                  type: string
                  description: address of the customer
                Gender:
                  type: string
                  description: gender of the customer
                Group:
                  type: string
                  description: group of the customer
                ExpiredGroup:
                  type: string
                  description: expiry date of the customer group
                LoyaltyPoint:
                  type: integer
                  description: loyalty point of the customer
                ImageURL:
                  type: string
                  description: picture of the customer
                Status:
                  type: string
                  description: Status Customer.
                  enum:
                    - Active
                    - WaitingForApproval
                    - Suspended
            example:
              Code: '0011'
              Name: Hendry Wijaya
              FirstName: Hendry
              LastName: Wijaya
              Birthdate: '1994-03-21'
              Email: hendryw@gmail.com
              Phone: '0216892235'
              Mobile: '081589632178'
              Address: Jl.Pluit Karang Jelita no 51
              Gender: Male
              Group: Gold
              ExpiredGroup: '2020-12-12'
              LoyaltyPoint: 80
              Status: Active
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Response'
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Message: Record updated
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Customer/VerifyMobile:
    put:
      operationId: VerifyCustomerMobile
      tags:
        - Customer
      summary: Verify Customer's Mobile
      description: |-
        Use to verify customer's mobile phone

        You must have "**EDIT**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Mobile
                - MobileVerified
              type: object
              properties:
                Mobile:
                  type: string
                  description: MobilePhone of the customer
                MobileVerified:
                  type: boolean
                  description: >-
                    true means customer's mobile phone is valid, false means
                    customer's mobile phone is invalid
              example:
                Mobile: '081574945443'
                MobileVerified: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Update Mobile Verified is success
              example:
                Message: Update Mobile Verified is success
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Mobile Phone is not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Customer/VerifyEmail:
    put:
      operationId: VerifyCustomerEmail
      tags:
        - Customer
      summary: Verify Customer's Email
      description: |-
        Use to verify customer's email

        You must have "**EDIT**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Email
                - EmailVerified
              type: object
              properties:
                Email:
                  type: string
                  description: Email of the customer
                EmailVerified:
                  type: boolean
                  description: >-
                    true means customer's email is valid, false means customer's
                    email is invalid
              example:
                Email: raizaldi.achmad@gmail.com
                EmailVerified: true
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Update Email Verified is success
              example:
                Message: Update Email Verified is success
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Email is not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Customer/DeleteByCode:
    delete:
      operationId: DeleteCustomerByCode
      tags:
        - Customer
      summary: Delete Customer By Code
      description: |-
        Delete a customer based on customer code

        You must have "**DELETE**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: >-
                    customer code of the customer. this is primary key for the
                    object
            example:
              Code: '0011'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Customer has been deleted successfully.
              example:
                Message: >-
                  Customer ID: 4b237266-a20d-4979-87e9-685b8fd41658 has been
                  deleted successfully.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection.....)'
      x-codegen-request-body-name: body
  /Customer/WithTotalCount:
    get:
      operationId: ListCustomerWithTotalCount
      tags:
        - Customer
      summary: List Customer With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        List Customer With Total Count


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: The Number of page data to be displayed
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
                From:
                  type: string
                  description: Selected start of a date prefix range
                To:
                  type: string
                  description: Selected end of a date prefix range
            example:
              PageNumber: 1
              PageSize: 20
              From: '2021-01-01'
              To: '2021-01-28'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Customer Name
                        Code:
                          type: string
                          description: Customer code
                        Phone:
                          type: string
                          description: Customer Phone number
                        Mobile:
                          type: string
                          description: Customer mobile phone
                        Email:
                          type: string
                          description: Customer email
                        City:
                          type: string
                          description: Customer city
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Name: A WI
                    Code: TIA20887
                    Phone: '0811698616'
                    Mobile: ''
                    Email: secyliac@gmail.com
                    City: ''
                  - Name: a. asyura alikha
                    Code: TIA9981
                    Phone: '082188891313'
                    Mobile: ''
                    Email: asyuraalikha@gmail.com
                    City: ''
                  - Name: A. Dalaisa A. Beso
                    Code: TIA21264
                    Phone: '087884993345'
                    Mobile: ''
                    Email: ndisabeni@yahoo.com
                    City: ''
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: String '20321-01-01' was not recognized as a valid DateTime.
                StackTrace: '   at System.DateTimeParse.Parse....3'
      x-codegen-request-body-name: body
  /Customer/Suspend:
    put:
      operationId: SuspendCustomer
      tags:
        - Customer
      summary: Suspend a Customer
      description: >-
        Suspend a Customer by their ID, Code, Email, & Phone. You can choose ONE
        of those options because those options have this hierarchy tier:


        1. ID

        2. Code

        3. Email

        4. Phone


        If ID is not found, we will search for the Code, and so on base on those
        hierarchy


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ID:
                  type: string
                Code:
                  type: string
                Email:
                  type: string
                Phone:
                  type: string
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Code: HWCISAP
                Email: hendryw@gmail.com
                Phone: '0216892235'
        required: false
      responses:
        '200':
          description: OK
          content:
            '200':
              example:
                Message: The contact has been successfully suspended.
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: The contact has been successfully suspended.
      x-codegen-request-body-name: body
  /Customer/Unsuspend:
    put:
      operationId: UnsuspendCustomer
      tags:
        - Customer
      summary: Unsuspend a Customer
      description: >-
        Unsuspend a Customer by their ID, Code, Email, & Phone. You can choose
        ONE of those options because those options have this hierarchy tier:


        1. ID

        2. Code

        3. Email

        4. Phone


        If ID is not found, we will search for the Code, and so on base on those
        hierarchy


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ID:
                  type: string
                Code:
                  type: string
                Email:
                  type: string
                Phone:
                  type: string
              example:
                ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
                Code: HWCISAP
                Email: hendryw@gmail.com
                Phone: '0216892235'
        required: false
      responses:
        '200':
          description: OK
          content:
            '200':
              example:
                Message: The contact has been successfully unsuspended.
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: The contact has been successfully suspended.
      x-codegen-request-body-name: body
  /Customer/NewCode:
    get:
      operationId: GetNewCustomerCode
      tags:
        - Customer
      summary: Get New Customer Code
      description: >-
        This API is only working if you use Customer Code Generator (auto
        increment customer code [Learn more
        Here](https://support.dealpos.com/en/articles/4773848-auto-generate-contact-code)). 


        With this API, you can get the Next Customer code that the generator
        could assign. For example, the last customer code existed is MM-003, the
        API will return "MM-004" as the response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: The contact has been successfully suspended.
      x-stoplight:
        id: un76skvr8jfba
  /Supplier:
    get:
      operationId: ListSupplier
      tags:
        - Supplier
      summary: List Supplier
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: Number of page begin. this is primary key for the object
                PageSize:
                  type: integer
                  description: >-
                    Page size of list supplier. this is primary key for the
                    object
              example:
                PageNumber: 1
                PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: the name of supplier to be shown
                    Code:
                      type: string
                      description: the supplier code of the supplier to be shown
                    Phone:
                      type: string
                      description: the phone number of supplier to be shown
                    Mobile:
                      type: string
                      description: the mobile phone number of supplier to be shown
                    Email:
                      type: string
                      description: the email of the supplier to be shown
              example:
                - Name: A WI
                  Code: TIA20887
                  Phone: '0811698616'
                  Mobile: '0811698616'
                  Email: secyliac@gmail.com
                - Name: a. asyura alikha
                  Code: TIA9981
                  Phone: '082188891313'
                  Mobile: '082188891313'
                  Email: asyuraalikha@gmail.com
                - Name: A. Dalaisa A. Beso
                  Code: TIA21264
                  Phone: '087884993345'
                  Mobile: '087884993345'
                  Email: ndisabeni@yahoo.com
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.GetRawText...'
      x-codegen-request-body-name: body
    post:
      operationId: CreateSupplier
      tags:
        - Supplier
      summary: Create Supplier
      description: |-
        Create a supplier based on the name

        You must have **“CREATE”** role in **“Contacts”** Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/supplier'
            example:
              Email: hendry@outlook.com
              Name: Hendry Wijaya
              FirstName: Hendry
              LastName: Wijaya
              Phone: '0216892235'
              Mobile: '0815896321227'
              Address: Jl.Pluit Karang Jelita no 51
              Gender: Male
              Status: Active
              Code: HW0021
              Group: Gold
              ImageURL: >-
                https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR5MITQo_ngwwEGEZqlw7PQLiaO21AoYmLRSkSF5Q2UwJuPgYZx
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of supplier created
              example:
                ID: 8e92164f-4826-4984-8d1d-7a7280851170
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Code is already registered.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: "Cannot insert the value NULL into column 'Name', table 'tokoferdi2.dbo.Supplier'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."
                StackTrace: '   at Microsoft.Data.SqlClient.SqlConnection....'
      x-codegen-request-body-name: body
  /Supplier/ByCode:
    put:
      operationId: UpdateSupplierByCode
      tags:
        - Supplier
      summary: Update Supplier By Code
      description: >-
        Update a supplier based on customer code


        You must have "**EDIT**" role in "**Contacts**" Module OR "**EDIT**"
        role in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/supplier'
            example:
              Code: '0011'
              Name: Hendry Wijaya
              FirstName: Hendry
              LastName: Wijaya
              Email: hendryw@gmail.com
              Phone: '0216892235'
              Mobile: '081589632178'
              Address: Jl.Pluit Karang Jelita no 51
              Gender: Male
              Group: Gold
              Status: Active
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Supplier has been deleted successfully
              example:
                ID: 4b237266-a20d-4979-87e9-685b8fd41658
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Code of the supplier does not exist.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.TryGetProperty...'
      x-codegen-request-body-name: body
  /Supplier/DeleteByCode:
    delete:
      operationId: DeleteSupplierByCode
      tags:
        - Supplier
      summary: Delete Supplier By Code
      description: |-
        Delete a supplier based on customer code

        You must have "**DELETE**" role in "**Contacts**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: >-
                    Supplier code of the customer. this is primary key for the
                    object
            example:
              Code: '000015'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: the supplier has been deleted
              example:
                Message: >-
                  Customer ID: 4b237266-a20d-4979-87e9-685b8fd41658 has been
                  deleted successfully.
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Supplier with code not Found!
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: >-
                  Procedure or function 'GetSupplierIDByCode' expects parameter
                  '@Code', which was not supplied.
                StackTrace: '   at Microsoft.Data.SqlClient.SqlConnection....'
      x-codegen-request-body-name: body
  /Supplier/Code:
    get:
      operationId: GetSupplierByCode
      tags:
        - Supplier
      summary: Get Supplier By Code
      description: |-
        Get supplier based on supplier code

        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Member Code of supplier. this is primary key of the object
            example:
              Code: '0011'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Name:
                    type: string
                    description: Supplier's name
                  Email:
                    type: string
                    description: Supplier's email
                  Title:
                    type:
                      - string
                      - 'null'
                    description: Supplier's title
                  FirstName:
                    type: string
                    description: Supplier's first name
                  LastName:
                    type: string
                    description: Supplier's last name
                  Gender:
                    type: string
                    description: Supplier's gender
                  Code:
                    type: string
                    description: Supplier's code
                  Phone:
                    type: string
                    description: Supplier's phone
                  MobilePhone:
                    type: string
                    description: Supplier's mobile phone
                  Address:
                    type: string
                    description: Supplier's address
                  ImageURL:
                    type: string
                    description: Supplier's imageURL
                  Status:
                    type: string
                    description: Supplier's status
              example:
                Name: Hendry
                Email: hendry@outlook.comm
                Title: Mr
                FirstName: Hendry
                LastName: Wijaya
                Gender: Male
                Code: AR012345
                Phone: '0216892235'
                MobilePhone: '081574945443111'
                Address: Jl.Pluit Karang Jelita no 51
                ImageURL: >-
                  //res.cloudinary.com/dealposdev/image/upload/Contact/7d8bb3dc-cbd1-4b56-98a7-ff3557347817/images
                Status: Active
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no supplier with Code 0011
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Unrecognized Guid format.
                StackTrace: '   at System.Guid.GuidResult.SetFailure...'
      x-codegen-request-body-name: body
  /Supplier/WithTotalCount:
    get:
      operationId: ListSupplierWithTotalCount
      tags:
        - Supplier
      summary: List Supplier With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        List Supplier With Total Count


        Required Group Role: "**Orders**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: The number of page data to be displayed
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
              example:
                PageNumber: 1
                PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: the name of supplier to be shown
                        Code:
                          type: string
                          description: the supplier code of the supplier to be shown
                        Phone:
                          type: string
                          description: the phone number of supplier to be shown
                        Mobile:
                          type: string
                          description: the mobile phone number of suppleir to be shown
                        Email:
                          type: string
                          description: the email of the supplier to be shown
                        City:
                          type: string
                          description: the supplier's city name to be shown
                  TotalCount:
                    type: integer
                    description: the total result
              example:
                Data:
                  - Name: A WI
                    Code: TIA20887
                    Phone: '0811698616'
                    Mobile: '0811698616'
                    Email: secyliac@gmail.com
                    City: Jakarta
                  - Name: a. asyura alikha
                    Code: TIA9981
                    Phone: '082188891313'
                    Mobile: '0811698616'
                    Email: asyuraalikha@gmail.com
                    City: Jakarta
                  - Name: A. Dalaisa A. Beso
                    Code: TIA21264
                    Phone: '087884993345'
                    Mobile: '0811698616'
                    Email: ndisabeni@yahoo.com
                    City: Jakarta
                TotalCount: 100
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.GetRawText()..'
      x-codegen-request-body-name: body
  /SalesOrder:
    post:
      operationId: CreateSalesOrder
      tags:
        - Sales Order
      summary: Create Sales Order
      description: >-
        Create Sales Order


        You must have "**Create**" role in "**Sell**" Module OR "**EDIT**" role
        in "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet Name
                  required:
                    - Outlet
                    - Number
                    - Date
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Invoice Number
                    Date:
                      type: string
                      description: Date of customer invoice created (YYYY-MM-DD)
                    SalesPerson:
                      type: string
                      description: Sales Person name
                    TaxType:
                      type: string
                      description: Tax Type
                    Discount1:
                      type: integer
                      description: Discount 1 percentage
                    Discount2:
                      type: integer
                      description: Discount 2 percentage
                    DiscountAmount:
                      type: integer
                      description: Discount amount
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number that associated with a specific invoice issued to
                        a customer which gets from invoice Marketplace channel.
                        (Backwards Compatibility with property
                        PurchaseOrderNumber)
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer
                        Email:
                          type: string
                          description: Email of Customer
                        Phone:
                          type: string
                          description: Phone of Customer
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer
                        Code:
                          type: string
                          description: Code of Customer
                    Variants:
                      type: array
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant Code
                          Quantity:
                            type: string
                            description: 'Quantity of Variant '
                          Price:
                            type: string
                            description: Unit Price per item
                          PriceOriginal:
                            type: string
                            description: >-
                              Original Unit Price per item. If value less than
                              Price, it does not take effect
                            x-stoplight:
                              id: 70gsy94cgm4ft
                          Discount:
                            type: integer
                            description: Discount percentage
                          Note:
                            type: string
                            description: Note per Item
                  example:
                    Outlet: Outlet1
                    Number: 20.06.00001
                    Date: '2020-06-24'
                    SalesPerson: Sales 1
                    TaxType: No Tax
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    LogisticServiceCode: JNE-R
                    ReferenceNumber: TKPD-001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                    Variants:
                      - Code: '200536'
                        Quantity: '10'
                        Price: '3500'
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: '10'
                        Price: '4000'
                        Discount: 0
                        Note: Item 2
                - title: with Outlet ID
                  required:
                    - OutletID
                    - Number
                    - Date
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                    Number:
                      type: string
                      description: Invoice Number
                    Date:
                      type: string
                      description: Date of customer invoice created (YYYY-MM-DD)
                    SalesPerson:
                      type: string
                      description: Sales Person name
                    TaxType:
                      type: string
                      description: Tax Type
                    Discount1:
                      type: integer
                      description: Discount 1 percentage
                    Discount2:
                      type: integer
                      description: Discount 2 percentage
                    DiscountAmount:
                      type: integer
                      description: Discount amount
                    LogisticServiceCode:
                      type: string
                      description: Code of Logistic Service Option
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number that associated with a specific invoice issued to
                        a customer which gets from invoice Marketplace channel.
                        (Backwards Compatibility with property
                        PurchaseOrderNumber)
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of Customer
                        Email:
                          type: string
                          description: Email of Customer
                        Phone:
                          type: string
                          description: Phone of Customer
                        Mobile:
                          type: string
                          description: Mobile Phone of Customer
                        Code:
                          type: string
                          description: Code of Customer
                    Variants:
                      type: array
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Variant Code
                          Quantity:
                            type: string
                            description: 'Quantity of Variant '
                          Price:
                            type: string
                            description: Unit Price per item
                          PriceOriginal:
                            type: string
                            description: >-
                              Original Unit Price per item. If value less than
                              Price, it does not take effect
                            x-stoplight:
                              id: 70gsy94cgm4ft
                          Discount:
                            type: integer
                            description: Discount percentage
                          Note:
                            type: string
                            description: Note per Item
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.06.00001
                    Date: '2020-06-24'
                    SalesPerson: Sales 1
                    TaxType: No Tax
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    LogisticServiceCode: JNE-R
                    ReferenceNumber: TKPD-001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                    Variants:
                      - Code: '200536'
                        Quantity: '10'
                        Price: '3500'
                        Discount: 0
                        Note: Item 1
                      - Code: 1315L
                        Quantity: '10'
                        Price: '4000'
                        Discount: 0
                        Note: Item 2
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Sales order ID which has been made
                  Number:
                    type: string
                    description: Sales Order Number which has been made
              example:
                ID: 21e0dbb6-f240-4bda-8f03-769362f88d10
                Number: 20.06.00001
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet not found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: >-
                  Procedure or function 'GetSalesOrderIDByEntityNNumber' expects
                  parameter '@Number', which was not supplied.
                StackTrace: '   at Microsoft.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
    delete:
      operationId: DeleteSalesOrder
      tags:
        - Sales Order
      summary: Delete Sales Order
      description: |-
        Delete Sales Order

        You must have "**Delete**" role in "**Sell**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet.Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Sales Order Number
                  example:
                    Outlet: Outlet1
                    Number: 20.06.00001
                - title: with Outlet.ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Outlet ID
                    Number:
                      type: string
                      description: Sales Or
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.06.00001
              required:
                - Number
                - Outlet
                - OutletID
              type: object
              properties:
                OutletID:
                  type: string
                  description: Guid of Outlet ID
                  x-stoplight:
                    id: z5l8vrtxu516a
                Outlet:
                  type: string
                  description: Outlet name
                Number:
                  type: string
                  description: Invoice number to be deleted
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: SalesOrder  21.02.00011 has been deleted
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  There is no sales order with Number 20.02.00011 - at Outlet
                  Outlet1
      x-codegen-request-body-name: body
  /SalesOrder/ConvertInvoice:
    put:
      operationId: ConvertSalesOrderToInvoice
      tags:
        - Sales Order
      summary: Convert Sales Order to Invoice
      description: >-
        Convert Sales Order to Invoice


        You must have “**Create**” role in “**Sell**” Module OR “EDIT” role in
        “Global” Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: jx9dhvaoclrab
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Sales Order Number
                  example:
                    Outlet: Outlet1
                    Number: 20.06.00001
                - title: with Customer Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                    Number:
                      type: string
                    Customer:
                      type: object
                      properties:
                        Name:
                          type: string
                        Email:
                          type: string
                          format: email
                        Phone:
                          type: string
                        Mobile:
                          type: string
                        Code:
                          type: string
                  example:
                    Outlet: Outlet1
                    Number: 20.07.00001
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: 216515156
                      Mobile: 81514515156
                      Code: HW021
                - title: with Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: jx9dhvaoclrab
                    Number:
                      type: string
                      description: Sales Order Number
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.06.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Invoice ID
                  Number:
                    type: string
                    description: Invoice Number
              example:
                ID: 21e0dbb6-f240-4bda-8f03-769362f88d10
                Number: 20.06.00001
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet not found
            Sales Order Voided:
              example:
                Message: >-
                  Cannot Convert Sales Order to Invoice, cause [SONumber] had
                  been voided
        '409':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  There is an invoice with number 21.01.00001 in outlet Outlet1
                  is already exist
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  StackTraceString:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
                  Source:
                    type: string
              example:
                ClassName: System.NullReferenceException
                Message: Object reference not set to an instance of an object.
                StackTraceString: '   at POS.WEB.Controllers.v3.SalesOrderController...'
                RemoteStackIndex: 0
                HResult: -2147467261
                Source: POS.WEB
      x-codegen-request-body-name: body
  /SalesOrder/GetByListNumber:
    get:
      operationId: GetSalesOrderListByListNumber
      tags:
        - Sales Order
      summary: Get Sales Order By List Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Order List based on Number


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: array
                      description: Sales Order Numbers
                      items:
                        type: string
                  example:
                    Outlet: Outlet1
                    Number:
                      - 20.11.00003
                      - 20.11.00002
                      - 20.11.00001
                - title: with Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: t2xpx5xqn3tt3
                    Number:
                      type: array
                      description: Sales Order Numbers
                      items:
                        type: string
                  example:
                    Outlet: O0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number:
                      - 20.11.00003
                      - 20.11.00002
                      - 20.11.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name
                    Date:
                      type: string
                      description: Sales order date
                    Number:
                      type: string
                      description: Sales order number
                    InvoicedState:
                      type: string
                      description: status progress of the sales order
                    DeliveryState:
                      type: string
                      description: delivery status progres of the sales order
                      enum:
                        - Sent
                        - Unsent
                        - Partial
                    PaymentState:
                      type: string
                      description: payment status progress of the sales order
                    Bin:
                      type: boolean
                      description: Recycle bin status of the sales order
              example:
                - Outlet: Outlet1
                  Date: '2020-11-05T00:00:00'
                  Number: 20.11.00003
                  InvoicedState: Complete
                  DeliveryState: Sent
                  PaymentState: Paid
                  Bin: false
                - Outlet: Outlet1
                  Date: '2020-11-05T00:00:00'
                  Number: 20.11.00002
                  InvoicedState: Complete
                  DeliveryState: Sent
                  PaymentState: Paid
                  Bin: false
                - Outlet: Outlet1
                  Date: '2020-11-05T00:00:00'
                  Number: 20.11.00001
                  InvoicedState: Complete
                  DeliveryState: Sent
                  PaymentState: Paid
                  Bin: false
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name offlaine
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetSalesOrderListByListNumber..."
      x-codegen-request-body-name: body
  /SalesOrder/GetIDByNumber:
    get:
      operationId: GetSalesOrderIDByNumber
      tags:
        - Sales Order
      summary: Get Sales Order ID by Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Order ID by Number


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Sales Order Number
                  example:
                    Outlet: Outlet1
                    Number: 20.11.00003
                - title: with Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: t2xpx5xqn3tt3
                    Number:
                      type: string
                      description: Sales Order Number
                  example:
                    OutletID: O0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 20.11.00003
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Sales order ID
              example:
                ID: 90ad0fb6-0340-4254-90f5-15e213b95a82
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement.TryGetProperty...'
      x-codegen-request-body-name: body
  /SalesOrder/TotalCount:
    get:
      tags:
        - Sales Order
      summary: Get Sales Order Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Order Total Count based on selected outlet(s).


        Required Group Role: "**Orders**" - "**View**"
      operationId: salesorder-totalcount
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with Outlet Name
                  type: object
                  properties:
                    From:
                      type: string
                      description: Start Date of Sales Order Created
                      format: date
                      x-stoplight:
                        id: kjbw0kcojed4c
                    To:
                      type: string
                      description: 'Till Date of Sales Order Created '
                      format: date
                      x-stoplight:
                        id: ezqeoewhjecf9
                    ListOutletID:
                      type: array
                      description: Array of List OutletID
                      items:
                        type: string
                        x-stoplight:
                          id: yuki5dwjf40kt
                    Outlet:
                      type: array
                      description: Outlet Name
                      items:
                        type: string
                    Tag:
                      type: array
                      description: Channel Tagging System
                      items:
                        type: string
                  example:
                    Outlet:
                      - Outlet1
                      - Outlet2
                    Tag:
                      - Tokopedia
                      - Shopee
                - title: with Outlet ID
                  type: object
                  properties:
                    From:
                      type: string
                      description: Start Date of Sales Order Created
                      format: date
                      x-stoplight:
                        id: kjbw0kcojed4c
                    To:
                      type: string
                      description: 'Till Date of Sales Order Created '
                      format: date
                      x-stoplight:
                        id: ezqeoewhjecf9
                    ListOutletID:
                      type: array
                      description: Array of List OutletID
                      items:
                        type: string
                        x-stoplight:
                          id: yuki5dwjf40kt
                    Outlet:
                      type: array
                      description: Outlet Name
                      items:
                        type: string
                    Tag:
                      type: array
                      description: Channel Tagging System
                      items:
                        type: string
                  example:
                    ListOutletID:
                      - 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                      - 8846700d-3883-88b5-8b8a-84c870b5a881
                    Tag:
                      - Tokopedia
                      - Shopee
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Count:
                    type: integer
                    description: Total Sales Order of selected outlet
                x-examples:
                  example-1:
                    Count: 550
              example:
                Count: 550
      x-codegen-request-body-name: body
  /PrepaidPackage/CheckIn:
    post:
      operationId: CheckInPrepaidPackage
      tags:
        - Prepaid Package
      summary: Check In for Prepaid Package
      description: |-
        Check In prepaid packages

        You must have "**CREATE**" role in "**Prepaid Packages**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - MemberCode
              type: object
              properties:
                MemberCode:
                  type: string
                  description: Code member of customer
                Package:
                  type: string
                  description: Prepaid package that the customer want to use (Optional)
                Doctor:
                  type: string
                  description: The doctor/trainer that do the prepaid package (optional)
            example:
              MemberCode: '12345'
              Package: Gym Package
              Doctor: Dr. Smith
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Member has been checked in
              example:
                Message: >-
                  Success register with number 20.03.00024 And Use Package Amd
                  Gym(1x) With Customer Achmad raizaldi
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                      HelpLink.ProdVer:
                        type: string
                      HelpLink.EvtSrc:
                        type: string
                      HelpLink.EvtID:
                        type: string
                      HelpLink.BaseHelpUrl:
                        type: string
                      HelpLink.LinkId:
                        type: string
                      SqlError 1:
                        type: string
                  StackTraceString:
                    type: string
              example:
                ClassName: Microsoft.Data.SqlClient.SqlException
                Message: >-
                  Procedure or function 'GetContactByCode' expects parameter
                  '@Code', which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 15.00.2000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '201'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    Microsoft.Data.SqlClient.SqlError: Procedure or function
                    'GetContactByCode' expects parameter '@Code', which was not
                    supplied.
                StackTraceString: '   at Microsoft.Data.SqlClient.SqlConnection...'
      x-codegen-request-body-name: body
  /SalesOrder/GetParked:
    get:
      operationId: GetParkedOrder
      tags:
        - Sales Order
      summary: Get Parked Order
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Parked Order List with multiple outlet
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: with List Outlet Name
                  required:
                    - From
                    - ListOutletID
                    - Outlet
                    - PageNumber
                    - PageSize
                    - Tag
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date Sales Order created
                      x-stoplight:
                        id: w3w2pz3spjhd6
                    To:
                      type: string
                      description: Till Date Sales Order created
                      x-stoplight:
                        id: 6dr4pysaqwr5l
                    PageNumber:
                      type: integer
                      description: The number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The number of rows returned by the API
                    ListOutletID:
                      type: array
                      description: Array of List OutletID
                      items:
                        type: string
                        x-stoplight:
                          id: 2muet56qqttfy
                    Outlet:
                      type: array
                      description: Outlet Name
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging System.(ex: Tokopedia, Shopee)'
                      items:
                        type: string
                  example:
                    From: '2021-01-01'
                    To: '2021-01-31'
                    PageNumber: 1
                    PageSize: 20
                    Outlet:
                      - Outlet1
                      - Outlet2
                    Tag:
                      - Tokopedia
                      - Shopee
                - title: with List Outlet ID
                  required:
                    - From
                    - ListOutletID
                    - Outlet
                    - PageNumber
                    - PageSize
                    - Tag
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date Sales Order created
                      x-stoplight:
                        id: w3w2pz3spjhd6
                    To:
                      type: string
                      description: Till Date Sales Order created
                      x-stoplight:
                        id: 6dr4pysaqwr5l
                    PageNumber:
                      type: integer
                      description: The number of page data to be displayed
                    PageSize:
                      type: integer
                      description: The number of rows returned by the API
                    ListOutletID:
                      type: array
                      description: Array of List OutletID
                      items:
                        type: string
                        x-stoplight:
                          id: 2muet56qqttfy
                    Outlet:
                      type: array
                      description: Outlet Name
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging System.(ex: Tokopedia, Shopee)'
                      items:
                        type: string
                  example:
                    From: '2021-01-01'
                    To: '2021-01-31'
                    PageNumber: 1
                    PageSize: 20
                    Outlet:
                      - 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                      - 8846700d-3883-88b5-8b8a-84c870b5a881
                    Tag:
                      - Tokopedia
                      - Shopee
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Sales Order (Parked Order) ID
                    Outlet:
                      type: string
                      description: Outlet name
                    Number:
                      type: string
                      description: Sales order (parked order) number
                    Date:
                      type: string
                      description: Sales order (parked order) date
                    Created:
                      type: string
                      description: Sales order (parked order) created date
                    Customer:
                      type: string
                      description: Sales order (parked order) customer name
                    Tag:
                      type: string
                      description: 'Channel Tagging system. (ex: Tokopedia, Shopee)'
              example:
                - ID: 21a4168b-d2b5-48e8-8d60-ff63cd5e30f6
                  Outlet: Outlet2
                  Number: 21.01.00002
                  Date: '2021-01-21T00:00:00'
                  Created: '2021-01-21T09:36:14.07'
                  Customer: hendry
                  Tag: Tokopedia
                - ID: 21a4we8b-d995-48ty-8880-ff6abc5e30f6
                  Outlet: Outlet2
                  Number: 21.01.00001
                  Date: '2021-01-21T00:00:00'
                  Created: '2021-01-21T09:14:56.447'
                  Customer: Tafta
                  Tag: Shopee
                - ID: 21yu169b-dio5-48e8-8pp0-ff63bh5e30f6
                  Outlet: Outlet1
                  Number: 21.01.00093
                  Date: '2021-01-07T00:00:00'
                  Created: '2021-01-07T16:18:30.837'
                  Customer: Aldi
                  Tag: Tokopedia
                - ID: 21a41vvb-d2b5-4ve8-8ven-ff63cd5ev0f6
                  Outlet: Outlet1
                  Number: 21.01.00092
                  Date: '2021-01-07T00:00:00'
                  Created: '2021-01-07T16:13:27.2'
                  Customer: Syakri
                  Tag: Tokopedia
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.SalesOrderController.GetParked(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\SalesOrderController.cs:line 290"
      x-codegen-request-body-name: body
  /PrepaidPackage/CheckOut:
    post:
      operationId: CheckOutPrepaidPackage
      tags:
        - Prepaid Package
      summary: Check Out for Prepaid Package
      description: |-
        Check Out prepaid packages

        You must have "**CREATE**" role in "**Prepaid Packages**" Module
      requestBody:
        content:
          application/json:
            schema:
              required:
                - MemberCode
              type: object
              properties:
                MemberCode:
                  type: string
                  description: Code member of customer
            example:
              MemberCode: '123456'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Member has been checked out
              example:
                Message: ' Check Out : 16:35 - Mr Achmad raizaldi - 65478 - P:1029348 - ID:4455221445 - Point(s) remaining :4,781.8  Expired on :16 Mar 2020 (4 Days),'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                      HelpLink.ProdVer:
                        type: string
                      HelpLink.EvtSrc:
                        type: string
                      HelpLink.EvtID:
                        type: string
                      HelpLink.BaseHelpUrl:
                        type: string
                      HelpLink.LinkId:
                        type: string
                      SqlError 1:
                        type: string
                  StackTraceString:
                    type: string
              example:
                ClassName: Microsoft.Data.SqlClient.SqlException
                Message: >-
                  Procedure or function 'GetContactByCode' expects parameter
                  '@Code', which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 15.00.2000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '201'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    Microsoft.Data.SqlClient.SqlError: Procedure or function
                    'GetContactByCode' expects parameter '@Code', which was not
                    supplied.
                StackTraceString: '   at Microsoft.Data.SqlClient.SqlConnection.....'
      x-codegen-request-body-name: body
  /PaymentMethod:
    get:
      operationId: ListPaymentMethod
      tags:
        - Payment Method
      summary: List Payment Method
      description: List of payment method
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: integer
                      description: Payment method ID
                    Name:
                      type: string
                      description: Payment method name
                    Type:
                      type: string
                      description: Payment method type / category
                    Suspended:
                      type: boolean
                      description: Payment method status
                x-examples:
                  Example 1:
                    - ID: 1
                      Name: Cash
                      Type: Cash
                      Suspended: false
                    - ID: 2
                      Name: Debit Card
                      Type: Card
                      Suspended: false
                    - ID: 2
                      Name: Credit Card
                      Type: Card
                      Suspended: true
              example:
                - ID: 1
                  Name: Cash
                  Type: Cash
                  Suspended: false
                - ID: 2
                  Name: Debit Card
                  Type: Card
                  Suspended: false
                - ID: 2
                  Name: Credit Card
                  Type: Card
                  Suspended: true
      x-codegen-request-body-name: body
  /Tax:
    get:
      operationId: ListTax
      tags:
        - Tax
      summary: List Tax
      description: List of Tax
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Unique ID of the selected Tax
                    Name:
                      type: string
                      description: Name of the Tax
                    Rate:
                      type: integer
                      description: Tax Percentage
                    Type:
                      type: string
                      example: Add , Include
              example:
                - ID: 58a4e4c8-36e8-478a-bdde-aae8c413f69b
                  Name: No Tax
                  Rate: 0
                  Type: Add
                - ID: bb57893b-58ad-4375-9ee1-7a39d3aeeadb
                  Name: PPN 10%
                  Rate: 10
                  Type: Include
      x-codegen-request-body-name: body
  /LogisticsService:
    get:
      operationId: ListLogisticsService
      tags:
        - Logistics Service
      summary: List Logistics Service
      description: List of Logistics Service
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: ID of Logistics Services Option
                    Name:
                      type: string
                      description: Name Of Logistic Service
                    Code:
                      type: string
                      description: Code of Logistic Service
                x-examples:
                  Example 1:
                    - ID: 09f0fe38-79b2-4535-a014-f45d3d18a5c8
                      Name: JNE (Regular)
                      Code: JNE-R
                    - ID: 09f0fe38-79b2-4535-a014-f45d3ah9828
                      Name: JNE (Express)
                      Code: JNE-E
              example:
                - ID: 09f0fe38-79b2-4535-a014-f45d3d18a5c8
                  Name: JNE (Regular)
                  Code: JNE-R
                - ID: 09f0fe38-79b2-4535-a014-f45d3ah9828
                  Name: JNE (Express)
                  Code: JNE-E
      x-codegen-request-body-name: body
  /Apps/List:
    get:
      operationId: ListApps
      tags:
        - Apps
      summary: List Apps
      description: List of Apps which can integrated with our system
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: integer
                      description: Unique ID of the Application
                    Name:
                      type: string
                      description: Name of the Application
              example:
                - ID: 1
                  Name: Marketplace
                - ID: 2
                  Name: TADA
                - ID: 3
                  Name: Jurnal
                - ID: 4
                  Name: Jubelio
      x-codegen-request-body-name: body
  /Apps/Active:
    get:
      operationId: ActiveApps
      tags:
        - Apps
      summary: Active Apps
      description: Detected apps which checklist in config POS
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
              example:
                - 1
                - 3
                - 4
      x-codegen-request-body-name: body
  /ClientSecret:
    get:
      operationId: GetClientSecret
      tags:
        - Client Secret
      summary: Get Client Secret
      description: Get Client Secret from existing client secret
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClientSecret:
                    type: string
              example:
                ClientSecret: 224e5f1a-3e19-4b2c-b8bf-a984e8e897f1
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The username and/or password is invalid!
                StackTrace: '   at POS.WEB.Controllers.v3.DeveloperController.GetClientSecret(JsonElement request) in D:\GITLAB\POSWEB-Prod\src\POS.WEB\Controllers\v3\DeveloperController.cs:line 102'
      x-codegen-request-body-name: body
  /rate_limit:
    get:
      operationId: RateLimitChecking
      tags:
        - Rate Limit
      summary: Rate Limit Checking
      description: Get number of PermitLimit, Window, QueueLimit
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  PermitLimit:
                    type: integer
                  Window:
                    type: integer
                  QueueLimit:
                    type: integer
              example:
                PermitLimit: 100
                Window: 60
                QueueLimit: 30
      x-codegen-request-body-name: body
  /ClientSecret/Update:
    put:
      operationId: UpdateClientSecret
      tags:
        - Client Secret
      summary: Generate Client Secret
      description: Generate New Client Secret
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClientSecret:
                    type: string
              example:
                ClientSecret: f7aef432-d548-45dc-a7a9-2d65f7374d85
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The username and/or password is invalid!
                StackTrace: '   at POS.WEB.Controllers.v3.DeveloperController.GenerateClientSecret(JsonElement request) in D:\GITLAB\POSWEB-Prod\src\POS.WEB\Controllers\v3\DeveloperController.cs:line 53'
      x-codegen-request-body-name: body
  /Barcode/ByBillNumber:
    get:
      operationId: GetBarcodeByBillNumber
      tags:
        - Barcode
      summary: Get Barcode by Bill Number
      description: Get List Variant by Bill Number
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Bill Number
              example:
                Outlet: Pluit
                Number: 2023.09.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    VariantID:
                      type: string
                      description: Product Variant ID
                    Name:
                      type: string
                      description: Variant Name
                    Code:
                      type: string
                      description: Variant Code
                    Quantity:
                      type: integer
                      description: Product Quantity Brought
                    UnitPrice:
                      type: integer
                      description: Unit price you pay for the product
              example:
                - VariantID: 6f96d108-1af5-45de-a593-74719a0ee8e2
                  Name: Cardigan (L)
                  Code: 1315L
                  Quantity: 10
                  UnitPrice: 280000
                - VariantID: bb5fd4fc-e7fb-4e99-92f4-b3caac23c183
                  Name: Boots (36)
                  Code: '200536'
                  Quantity: 15
                  UnitPrice: 540000
                - VariantID: f4adff17-6e0c-499d-af3f-db8c16e62375
                  Name: Cardigan (XL)
                  Code: 1315XL
                  Quantity: 20
                  UnitPrice: 280000
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet not found
      x-codegen-request-body-name: body
  /Barcode/ByOutletDeliveryNumber:
    get:
      operationId: GetBarcodeByOutletDeliveryNumber
      tags:
        - Barcode
      summary: Get Barcode By Outlet Delivery Number
      description: Get List Variant By Outlet Delivery Number
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Source Name
                Number:
                  type: string
                  description: Outlet Delivery Number
              example:
                Outlet: Pluit
                Number: 2023.09.00001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    VariantID:
                      type: string
                      description: Variant ID
                    Name:
                      type: string
                      description: Variant's Name
                    Code:
                      type: string
                      description: Variant's Code
                    Quantity:
                      type: integer
                      description: Quantity will be deliver to another outlet
                    UnitPrice:
                      type: integer
                      description: Unit Price
              example:
                - VariantID: 6f96d108-1af5-45de-a593-74719a0ee8e2
                  Name: Cardigan (L)
                  Code: 1315L
                  Quantity: 10
                  UnitPrice: 280000
                - VariantID: bb5fd4fc-e7fb-4e99-92f4-b3caac23c183
                  Name: Boots (36)
                  Code: '200536'
                  Quantity: 15
                  UnitPrice: 540000
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Outlet not found
      x-codegen-request-body-name: body
  /Report/WithItemNetSales:
    get:
      operationId: GetSalesInvoiceWithItemNetSales
      tags:
        - Report
      summary: Get Sales Invoice With Item Net Sales
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Invoice based on prorate nett sales calculation


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - PageNumber
                - PageSize
                - To
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                From:
                  type: string
                  description: From Date
                To:
                  type: string
                  description: To Date
                PageNumber:
                  type: integer
                  description: Page number of get inventory
                PageSize:
                  type: integer
                  description: Row count of get inventory
            example:
              Outlet: Outlet1
              From: '2021-01-01'
              To: '2021-01-31'
              PageNumber: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet's transaction
                        Number:
                          type: string
                          description: Transaction's number
                        Date:
                          type: string
                          description: Transaction's date
                        Created:
                          type: string
                          description: Transaction's date created
                        Discount1:
                          type: integer
                          description: Discount that applied in the transaction
                        Discount2:
                          type: integer
                          description: Special Discount that applied in the transaction
                        DiscountAmount:
                          type: integer
                          description: Discount amount that applied in the transaction
                        InvoiceID:
                          type: string
                          description: Unique ID of the Invoice Transaction
                        Gross:
                          type: number
                          description: Amount before tax and discount
                        DiscountTotal:
                          type: number
                          description: Total Amount of the discount
                        TaxType:
                          type: string
                          description: Tax applied to the transaction
                        TaxAmount:
                          type: number
                          description: Tax Amount applied in transaction
                        Sales:
                          type: number
                          description: Total Amount without tax
                        SalesNTax:
                          type: number
                          description: Sales + Tax
                        Surcharge:
                          type: number
                          description: Surcharge Amount
                        Tax:
                          type: number
                          description: Tax in percentage
                        Customer:
                          type: object
                          properties:
                            Name:
                              type: string
                              description: Customer's Name
                            Email:
                              type: string
                              description: Customer's Email
                            Phone:
                              type: string
                              description: Customer's Phone
                            Mobile:
                              type: string
                              description: Customer's Mobile Phone
                            Code:
                              type: string
                              description: Customer's Code
                            ID:
                              type: string
                              description: Customer's ID
                        Variants:
                          type: array
                          items:
                            required:
                              - Note
                            type: object
                            properties:
                              Name:
                                type: string
                                description: Name of Product Variant
                              Code:
                                type: string
                                description: Variant's code
                              Quantity:
                                type: integer
                                description: Quantity of variant sold in the transaction
                              UnitQuantity:
                                type: integer
                                description: >-
                                  Unit quantity of variant sold in the
                                  transaction
                              Cost:
                                type: number
                                description: Product Variant Unit Cost
                              Price:
                                type: number
                                description: Product variant Selling Price
                              PriceOriginal:
                                type: number
                                description: Price before edit
                              Discount:
                                type: integer
                                description: >-
                                  Discount applied for the variant in the
                                  transaction
                              DiscountAmount:
                                type: number
                                description: >-
                                  Discount amount applied in the variant in the
                                  transaction
                              Taxable:
                                type: boolean
                                description: Taxable status of the variant
                              LoyaltyPoint:
                                type: boolean
                                description: Loyalty point status of the variant
                              Expense:
                                type: integer
                                description: Additional Charge Amount
                              NetSales:
                                type: number
                                description: 'Net price per variant '
                              GrossSales:
                                type: number
                                description: Price before tax and discount
                              TaxAmount:
                                type: number
                                description: Tax applied per variant
                              PriceTypeID:
                                type: integer
                              Note:
                                type: string
                                description: Product Transaction Note
                        Payments:
                          type: array
                          items:
                            type: object
                            properties:
                              Date:
                                type: string
                                description: Payment Date
                              Amount:
                                type: number
                                description: Amount to pay in transaction
                              Method:
                                type: string
                                description: Payment method
                              Code:
                                type: string
                                description: Payment Code
                              Note:
                                type: string
                                description: Payment Note
                  TotalRow:
                    type: integer
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 21.03.00124
                    Date: '2021-03-10T00:00:00'
                    Created: '2021-03-09T13:03:12.903'
                    Discount1: 10
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 250f0917-d3be-42ef-9ac4-3be17ef7b21f
                    Gross: 50000
                    DiscountTotal: 5000
                    TaxType: PPN 10%
                    TaxAmount: 4500
                    Sales: 45000
                    SalesNTax: 49500
                    Surcharge: 0
                    Tax: 10
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7f4a
                    Variants:
                      - Name: Muffin (Medium)
                        Code: '03152'
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 10000
                        Price: 20000
                        PriceOriginal: 20000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetSales: 18000
                        GrossSales: 20000
                        TaxAmount: 1800
                        PriceTypeID: 0
                        Note: Paid
                      - Name: Muffin (Large)
                        Code: ML3001
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 30000
                        Price: 30000
                        PriceOriginal: 20000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetSales: 27000
                        GrossSales: 30000
                        TaxAmount: 2700
                        PriceTypeID: 0
                        Note: Paid
                    Payments:
                      - Date: '2021-03-10T00:00:00'
                        Amount: 49500
                        Method: Cash
                        Code: C001
                        Note: Paid
                TotalRow: 1
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
              example:
                Outlet: Outlet1
                From: 2020/03/16
                To: 2020/03/16
                PageNumber: 1
                PageSize: 20
      x-codegen-request-body-name: body
  /Report/DailySales:
    get:
      operationId: GetDailySales
      tags:
        - Report
      summary: Get Daily Sales By Month
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Daily Sales Transaction by Month


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Year
              type: object
              properties:
                Outlet:
                  type: array
                  description: List of Outlets Name
                  items:
                    type: string
                Year:
                  type: integer
                  description: 'Year of date (format: (YYYY))'
            example:
              Outlet:
                - Outlet1
              Year: 2021
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Month:
                      type: string
                      description: List of Months of selected Year
                    Trans:
                      type: integer
                      description: Total count of Invoice Transactions
                    SalesNTax:
                      type: number
                      description: Total Accumulation of Sales and Taxes
                    Cost:
                      type: number
                      description: Total accumulation of costs
              example:
                - Month: January
                  Trans: 34
                  SalesNTax: 1021000
                  Cost: 881615.75
                - Month: February
                  Trans: 376
                  SalesNTax: 135397168.68
                  Cost: 97501389.32
                - Month: March
                  Trans: 311
                  SalesNTax: 45215217.85
                  Cost: 34635477.25
                - Month: April
                  Trans: 86
                  SalesNTax: 18103161.03
                  Cost: 17157404.54
                - Month: May
                  Trans: 5
                  SalesNTax: 247000.12
                  Cost: 90522.17
                - Month: June
                  Trans: 94
                  SalesNTax: 13250883.61
                  Cost: 18746522.55
                - Month: July
                  Trans: 139
                  SalesNTax: 14682156.82
                  Cost: 17858903.23
                - Month: August
                  Trans: 38
                  SalesNTax: 1573348.5
                  Cost: 9734012.73
                - Month: September
                  Trans: 108
                  SalesNTax: 468493094.25
                  Cost: 17126179.21
                - Month: October
                  Trans: 152
                  SalesNTax: 34584026.75
                  Cost: 4806827.8
                - Month: November
                  Trans: 166
                  SalesNTax: 26655324
                  Cost: 14904432.27
  /Report/WithItemNetSalesComplete:
    get:
      operationId: GetSalesInvoiceWithItemNetSalesComplete
      tags:
        - Report
      summary: Get Sales Invoice With Item Net Sales Complete
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Sales Invoice based on prorate nett sales calculation


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - PageNumber
                - PageSize
                - To
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                From:
                  type: string
                  description: From Date
                To:
                  type: string
                  description: To Date
                PageNumber:
                  type: integer
                  description: Page number of get inventory
                PageSize:
                  type: integer
                  description: Row count of get inventory
            example:
              Outlet: Outlet1
              From: '2021-11-11'
              To: '2021-11-11'
              PageNumber: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet's transaction
                        Number:
                          type: string
                          description: Transaction's number
                        Date:
                          type: string
                          description: Transaction's date
                        Created:
                          type: string
                          description: Transaction's date created
                        Discount1:
                          type: integer
                          description: Discount that applied in the transaction
                        Discount2:
                          type: integer
                          description: Special Discount that applied in the transaction
                        DiscountAmount:
                          type: integer
                          description: Discount amount that applied in the transaction
                        InvoiceID:
                          type: string
                          description: Unique ID of the Invoice Transaction
                        Note:
                          type: string
                          description: Invoice Note
                        SalesType:
                          type: string
                          description: Sales order type
                        SalesPerson:
                          type: string
                          description: Name of sales person
                        Gross:
                          type: integer
                          description: Amount before tax and discount
                        DiscountTotal:
                          type: integer
                          description: Total Amount of the discount
                        TaxType:
                          type: string
                          description: Tax applied to the transaction
                        TaxAmount:
                          type: integer
                          description: Tax Amount applied in transaction
                        Sales:
                          type: integer
                          description: Total Amount without tax
                        SalesNTax:
                          type: integer
                          description: Sales + Tax
                        Surcharge:
                          type: integer
                          description: Surcharge Amount
                        Tax:
                          type: integer
                          description: Tax in percentage
                        Customer:
                          type: object
                          properties:
                            Name:
                              type: string
                              description: Customer's Name
                            Email:
                              type: string
                              description: Customer's Email
                            Phone:
                              type: string
                              description: Customer's Phone
                            Mobile:
                              type: string
                              description: Customer's MobilePhone
                            Code:
                              type: string
                              description: Customer's Code
                            ID:
                              type: string
                              description: Customer's ID
                        Variants:
                          type: array
                          items:
                            type: object
                            properties:
                              Name:
                                type: string
                                description: Name of Product Variant
                              Code:
                                type: string
                                description: Variant's code
                              Quantity:
                                type: integer
                                description: Quantity of variant sold in the transaction
                              UnitQuantity:
                                type: integer
                                description: >-
                                  Unit quantity of variant sold in the
                                  transaction
                              Cost:
                                type: number
                                description: Product Variant Unit Cost
                              Price:
                                type: integer
                                description: Product variant Selling Price
                              PriceOriginal:
                                type: integer
                                description: Price before edit
                              Discount:
                                type: integer
                                description: >-
                                  Discount applied for the variant in the
                                  transaction
                              DiscountAmount:
                                type: integer
                                description: >-
                                  Discount amount applied in the variant in the
                                  transaction
                              Taxable:
                                type: boolean
                                description: Taxable status of the variant
                              LoyaltyPoint:
                                type: boolean
                                description: Loyalty point status of the variant
                              Expense:
                                type: integer
                                description: Additional Charge Amount
                              NetSales:
                                type: integer
                                description: Net price per variant
                              GrossSales:
                                type: integer
                                description: Price before tax and discount
                              TaxAmount:
                                type: integer
                                description: Tax applied per variant
                              PriceTypeID:
                                type: integer
                              Note:
                                type: string
                                description: Product Transaction Note
                        Payments:
                          type: array
                          items:
                            type: object
                            properties:
                              Date:
                                type: string
                                description: Payment Date
                              Amount:
                                type: integer
                                description: Amount to pay in transaction
                              Method:
                                type: string
                                description: Payment method
                              Code:
                                type: string
                                description: Payment code
                              Note:
                                type: string
                                description: Payment note
                  TotalRow:
                    type: integer
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 1-OT/21/11/0112
                    Date: '2021-11-11T00:00:00'
                    Created: '2021-11-11T08:32:11.85'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: a1d8c308-c4ae-4f6a-9b6a-c976a99655ca
                    Note: test note api
                    SalesType: Online
                    SalesPerson: dea
                    Gross: 102000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    Sales: 102000
                    SalesNTax: 102000
                    Surcharge: 0
                    Tax: 0
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7f4a
                    Variants:
                      - Name: bango, nasi capcay
                        Code: BC
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 13786.41
                        Price: 102000
                        PriceOriginal: 100000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetSales: 102000
                        GrossSales: 102000
                        TaxAmount: 0
                        PriceTypeID: 0
                        Note: Paid
                    Payments:
                      - Date: '2021-11-11T00:00:00'
                        Amount: 102000
                        Method: Cash
                        Code: C001
                        Note: Paid
                TotalRow: 1
      x-codegen-request-body-name: body
  /Invoice/SendReceiptByEmail:
    post:
      operationId: SendReceiptByEmail
      tags:
        - Invoice
      summary: Send Receipt By Email
      description: |-
        Send Receipt to customer by email

        You must have "**View**" role in "**Orders**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Email
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Invoice number
                    Email:
                      type: string
                      description: >-
                        Email Customer will be sent the email. This is primary
                        of the API
                  example:
                    Outlet: Outlet1
                    Number: 18.10.00009
                    Email: ezzan212@dealpos.com
                - title: With Outlet ID
                  required:
                    - Email
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: sucb0xs5ldyr7
                    Number:
                      type: string
                      description: Invoice number
                    Email:
                      type: string
                      description: >-
                        Email Customer will be sent the email. This is primary
                        of the API
                  example:
                    OutletID: aad4a789-b802-49c1-b66f-f45fbc7ce17f
                    Number: 18.10.00009
                    Email: ezzan212@dealpos.com
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: Sent to email success
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Exception message
                  ExceptionType:
                    type: string
                    description: Exception type
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Invoice/GetCountMultipleOutlet:
    get:
      operationId: GetCountMultipleOutlet
      tags:
        - Invoice
      summary: Invoice Count
      description: >-
        Count total invoice with multiple outlet


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - From
                    - Outlet
                    - Tag
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: yyyy/mm/dd
                    To:
                      type: string
                      description: yyyy/mm/dd
                    Outlet:
                      type: array
                      description: List of multiple outlets
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging system. (ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    PaymentState:
                      type: string
                      description: Payment status / progress of the invoice
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: Delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Bin:
                      type: boolean
                      description: Invoice in bin or not
                      default: false
                  example:
                    From: '2022-09-01'
                    To: '2022-09-06'
                    Outlet:
                      - Outlet1
                      - Outlet2
                    Tag:
                      - Tokopedia
                      - Shopee
                    PaymentState: Paid
                    Fulfillment: Sent
                    Bin: false
                - title: With List Outlet ID
                  required:
                    - From
                    - ListOutletID
                    - Tag
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: yyyy/mm/dd
                    To:
                      type: string
                      description: yyyy/mm/dd
                    ListOutletID:
                      type: array
                      description: Array of List Outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: 0mywr1cthupbs
                    Tag:
                      type: array
                      description: 'Channel Tagging system. (ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    PaymentState:
                      type: string
                      description: Payment status / progress of the invoice
                      enum:
                        - Paid
                        - Partial
                        - Unpaid
                    Fulfillment:
                      type: string
                      description: Delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Unsent
                    Bin:
                      type: boolean
                      description: Invoice in bin or not
                      default: false
                  example:
                    From: '2022-09-01'
                    To: '2022-09-06'
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    Tag:
                      - Tokopedia
                      - Shopee
                    PaymentState: Paid
                    Fulfillment: Sent
                    Bin: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Count:
                    type: number
                    description: Total invoice count
                x-examples:
                  example-1:
                    Count: 37
              example:
                Count: 37
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace of the exception
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetTotalInvoiceMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 529\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetCountMultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 523"
      x-codegen-request-body-name: body
  /Bill/GetCountMultipleOutlet:
    get:
      operationId: GetCountMultipleOutlets
      tags:
        - Bill
      summary: Bill Count
      description: >-
        Count total bill with multiple outlet


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - Outlet
                - To
              type: object
              properties:
                From:
                  type: string
                  description: yyyy/mm/dd
                To:
                  type: string
                  description: yyyy/mm/dd
                Outlet:
                  type: array
                  description: List of multiple outlets
                  items:
                    type: string
                PaymentState:
                  type: string
                  description: Payment status / progress of the bill
                  enum:
                    - Paid
                    - Partial
                    - Unpaid
                DeliveryState:
                  type: string
                  description: Delivery status / progress of the bill
                  enum:
                    - Waiting
                    - Partial
                    - Received
                Bin:
                  type: boolean
                  description: Invoice in bin or not
                  default: false
                  enum:
                    - true
                    - false
            example:
              From: 2021/01/01
              To: 2021/01/31
              Outlet:
                - Outlet 1
                - Outlet 2
              PaymentState: Paid
              DeliveryState: Received
              Bin: false
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Count:
                    type: number
              example:
                Count: 37
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetTotalInvoiceMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 529\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetCountMultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 523"
      x-codegen-request-body-name: body
  /Invoice/GetByListNumber:
    get:
      operationId: GetByListNumber
      tags:
        - Invoice
      summary: List Invoice by Number
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get List Invoices By Number


        Required Group Role: "**Orders**" - "**View**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name
                    Number:
                      type: array
                      description: Number of Invoices
                      items:
                        type: string
                  example:
                    Outlet: Outlet1
                    Number:
                      - 20.10.00087
                      - 20.10.00086
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: jfooxpiw0fvdv
                    Number:
                      type: array
                      description: Number of Invoices
                      items:
                        type: string
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number:
                      - 20.10.00087
                      - 20.10.00086
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: the outlet name where the invoice has been made
                    Number:
                      type: string
                      description: invoice number
                    Customer:
                      type: string
                      description: customer name
                    Date:
                      type: string
                      description: sell date
                    EventDate:
                      type: string
                    Due:
                      type: string
                      description: due date of the invoice
                    Amount:
                      type: integer
                      description: |
                        invoice transaction total amount
                    Payment:
                      type: string
                      description: |
                        payment state of the invoice
                    Fulfillment:
                      type: string
                      description: |
                        delivery status of the invoice
                      enum:
                        - Sent
                        - Unsent
                        - Partial
                    Created:
                      type: string
                      description: sell date created by system
              example:
                - Outlet: Outlet1
                  Number: 20.10.00087
                  Customer: Achmad raizaldi
                  Date: '2020-10-14T00:00:00'
                  EventDate: '2020-10-14T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 24310
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2020-10-14T14:53:01.79'
                - Outlet: Outlet1
                  Number: 20.10.00086
                  Customer: ''
                  Date: '2020-10-14T00:00:00'
                  EventDate: '2020-10-14T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 22100
                  Payment: Paid
                  Fulfillment: Sent
                  Created: '2020-10-14T14:51:42.603'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: There is no Outlet with that name Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace of the exception
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListByListNumber(POSContext ctx, JsonElement request, List`1 listEntityID, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 562\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetByListNumber(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 549"
      x-codegen-request-body-name: body
  /Invoice/MultipleOutletNPayment:
    get:
      operationId: GetInvoiceMultipleOutletNPayment
      tags:
        - Invoice
      summary: List Invoice Multiple Outlet and Payment
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        Get Invoice List by Multiple Outlet and Payment
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Fulfillment
                    - Outlet
                    - PageNumber
                    - PageSize
                    - PaymentState
                    - Tag
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    Outlet:
                      type: array
                      description: List of multiple outlet names
                      items:
                        type: string
                    PaymentState:
                      type: array
                      description: List of multiple payment status
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging system. (ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    Fulfillment:
                      type: string
                      description: delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Partial
                        - Unsent
                    Bin:
                      type: boolean
                      description: >-
                        Recycle Bin status (whether the invoice is in the
                        Recycle Bin or Not)
                      default: false
                  example:
                    PageNumber: 1
                    PageSize: 20
                    Outlet:
                      - Outlet1
                      - Outlet2
                    PaymentState:
                      - Paid
                      - Unpaid
                    Tag:
                      - Tokopedia
                      - Shopee
                      - Offline
                - title: With List Outlet ID
                  required:
                    - Fulfillment
                    - ListOutletID
                    - PageNumber
                    - PageSize
                    - PaymentState
                    - Tag
                  type: object
                  properties:
                    PageNumber:
                      type: number
                      description: The number of page data to be displayed
                    PageSize:
                      type: number
                      description: The size of one page. Max=500
                    ListOutletID:
                      type: array
                      description: Array of List Outlet ID
                      items:
                        type: string
                        x-stoplight:
                          id: gbozm5l32vhy5
                    PaymentState:
                      type: array
                      description: List of multiple payment status
                      items:
                        type: string
                    Tag:
                      type: array
                      description: 'Channel Tagging system. (ex: Tokopedia, Shopee)'
                      items:
                        type: string
                    Fulfillment:
                      type: string
                      description: delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Partial
                        - Unsent
                    Bin:
                      type: boolean
                      description: >-
                        Recycle Bin status (whether the invoice is in the
                        Recycle Bin or Not)
                      default: false
                  example:
                    PageNumber: 1
                    PageSize: 20
                    ListOutletID:
                      - 65ba885e-cf19-4b68-ad6a-80164788adfd
                      - 72784126-b1bc-45e3-8d29-f20f212cb29f
                    PaymentState:
                      - Paid
                      - Unpaid
                    Tag:
                      - Tokopedia
                      - Shopee
                      - Offline
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: Invoice ID
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Number:
                      type: string
                      description: Number of the invoice
                    Customer:
                      type: string
                      description: Name of the customer
                    Date:
                      type: string
                      description: Invoice Transaction Date
                    EventDate:
                      type: string
                    Due:
                      type: string
                      description: due date of the invoice
                    Amount:
                      type: number
                      description: Total amount transaction of the invoice
                    Payment:
                      type: string
                      description: payment status / progress of the invoice
                    Fulfillment:
                      type: string
                      description: delivery status / progres of the invoice
                      enum:
                        - Sent
                        - Unsent
                        - Partial
                    Created:
                      type: string
                      description: Invoice created Transaction Date by system
                    Tag:
                      type: string
                      description: >-
                        Channel Tagging system. (ex:Offline / Whatsapp / Shopee
                        / Tokopedia) used in marketplace.dealpos.app.
              example:
                - ID: 3c76f9b5-d1b8-4159-85a0-0630ac0caa47
                  Outlet: Outlet1
                  Number: 20.03.00336
                  Customer: adera simalungun
                  Date: '2020-03-27T00:00:00'
                  EventDate: '2020-03-27T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 11250000
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2020-03-27T13:50:16.627'
                  Tag: Tokopedia
                - ID: 3076b3af-1773-4bf9-9073-279be7b76327
                  Outlet: Outlet1
                  Number: .20.02.00080
                  Customer: ''
                  Date: '2020-02-06T00:00:00'
                  EventDate: '2020-02-06T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 75000
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2020-02-06T09:43:25.163'
                  Tag: Shopee
                - ID: 3076b3af-1773-4bf9-9883-279be7b76as7
                  Outlet: Outlet2
                  Number: 19.12.00088
                  Customer: ''
                  Date: '2019-12-18T00:00:00'
                  EventDate: '2019-12-18T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 2655000
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2019-12-18T11:34:41.947'
                  Tag: Offline
                - ID: 6576b3af-1773-4bf4-9073-279be7b76789
                  Outlet: Outlet2
                  Number: 19.12.00087
                  Customer: ''
                  Date: '2019-12-18T00:00:00'
                  EventDate: '2019-12-18T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 30000
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2019-12-18T10:16:40.623'
                  Tag: Tokopedia
                - ID: 307628af-1993-4bf9-9573-279be7b76555
                  Outlet: Outlet1
                  Number: 19.12.04.000000020
                  Customer: ''
                  Date: '2019-12-04T00:00:00'
                  EventDate: '2019-12-04T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 92500
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2019-12-04T16:02:28.897'
                  Tag: Tokopedia
                - ID: 3076b3af-1723-4bf9-9011-279be7b76123
                  Outlet: Outlet1
                  Number: 19.12.00019
                  Customer: ''
                  Date: '2019-12-04T00:00:00'
                  EventDate: '2019-12-04T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 150000
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2019-12-04T16:45:54.507'
                  Tag: Whatsapp
                - ID: 307ab3af-1cd3-4bf9-9073-279be7b763ef
                  Outlet: Outlet1
                  Number: 19.09.24.000000039
                  Customer: ''
                  Date: '2019-09-23T00:00:00'
                  EventDate: '2019-09-23T00:00:00'
                  Due: '0001-01-01T00:00:00'
                  Amount: 5500
                  Payment: Paid
                  Fulfillment: Partial
                  Created: '2019-09-24T16:27:22.767'
                  Tag: Offline
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace message
              example:
                Message: The given key was not present in the dictionary.
                StackTrace: "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceByMultipleOutletNPayment(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 720\r\n   at POS.WEB.Controllers.v3.InvoiceController.MultipleOutletNPayment(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 575"
      x-codegen-request-body-name: body
  /Invoice/Void:
    put:
      operationId: VoidInvoice
      tags:
        - Invoice
      summary: Void Invoice
      description: >
        Void Invoice to recycle bin


        You must have "**EDIT**" role in "**Sell**" Module OR "**VoidInvoice**"
        role in "**Orders**" Module
      requestBody:
        description: >-
          Request can be send with payload Outlet+Number / OutletID + Number
          /InvoiceID only
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet's name
                    Number:
                      type: string
                      description: Invoice number
                    Note:
                      type: string
                      description: Note for the voided invoice
                  example:
                    Outlet: Outlet1
                    Number: 2020.06.00005
                    Note: Void invoice
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: r9hbkst5es46u
                    Number:
                      type: string
                      description: Invoice number
                    Note:
                      type: string
                      description: Note for the voided invoice
                  example:
                    OutletID: 9f527088-35a3-4ft8-988a-888c37885a88
                    Number: 2020.06.00005
                    Note: Void invoice
                - title: With Invoice ID
                  required:
                    - InvoiceID
                  type: object
                  properties:
                    InvoiceID:
                      type: string
                      description: ID of Invoice
                      x-stoplight:
                        id: ybb2ed6tcxsp3
                    Note:
                      type: string
                      description: Note for the voided invoice
                  example:
                    InvoiceID: 9f527088-35a3-4ft8-988a-888c37885a88
                    Note: Void invoice
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: Invoice has been Updated!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  There is no invoice with Number 2020.06.00005 - at Outlet
                  Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                    description: Exception class name
                  Message:
                    type: string
                    description: Exception message
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                        description: Product name
                      HelpLink.ProdVer:
                        type: string
                        description: Product version
                      HelpLink.EvtSrc:
                        type: string
                        description: Event source
                      HelpLink.EvtID:
                        type: string
                        description: Event ID
                      HelpLink.BaseHelpUrl:
                        type: string
                        description: Base help URL
                      HelpLink.LinkId:
                        type: string
                        description: Link ID
                      SqlError 1:
                        type: string
                        description: SQL error message
                  StackTraceString:
                    type: string
                    description: Stack trace string
                  RemoteStackIndex:
                    type: integer
                    description: Remote stack index
                  HResult:
                    type: integer
                    description: HResult
                  Source:
                    type: string
                    description: Source
                  ClientConnectionId:
                    type: string
                    description: Client connection ID
              example:
                ClassName: Microsoft.Data.SqlClient.SqlException
                Message: >-
                  Procedure or function 'GetSalesOrderIDByEntityNNumber' expects
                  parameter '@Number', which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 15.00.2000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '201'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    Microsoft.Data.SqlClient.SqlError: Procedure or function
                    'GetSalesOrderIDByEntityNNumber' expects parameter
                    '@Number', which was not supplied.
                StackTraceString: '   at Microsoft.Data.SqlClient.SqlConnection....'
                RemoteStackIndex: 0
                HResult: -2146232060
                Source: Core Microsoft SqlClient Data Provider
                ClientConnectionId: 18fca457-7d5e-46a6-bec9-5aa01e1c4093
      x-codegen-request-body-name: body
  /Invoice/Restore:
    put:
      operationId: RestoreInvoice
      tags:
        - Invoice
      summary: Restore Invoice
      description: >
        Restore Invoice from recycle bin


        You must have "**EDIT**" role in "**Sell**" Module OR "**EDIT**" role in
        "**Global**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet's name
                    Number:
                      type: string
                      description: Invoice number
                    Note:
                      type: string
                      description: Note for the voided invoice
                  example:
                    Outlet: Outlet1
                    Number: 2020.06.00005
                    Note: Restore invoice
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: h7skb0lny22yw
                    Number:
                      type: string
                      description: Invoice number
                    Note:
                      type: string
                      description: Note for the voided invoice
                  example:
                    OutletID: 0d46700d-35a3-4fb5-9b3a-644c370b5af1
                    Number: 2020.06.00005
                    Note: Restore invoice
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: Invoice has been Updated!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: There is no Outlet with that name Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Stack trace of the error
              example:
                Message: >-
                  Procedure or function 'GetInvoiceIDByEntityNNumber' expects
                  parameter '@Number', which was not supplied.
                StackTrace: '   at Microsoft.Data.SqlClient.SqlConnection.....'
      x-codegen-request-body-name: body
  /Invoice/Erase:
    delete:
      tags:
        - Invoice
      summary: Erase Invoice
      description: >
        <!-- theme: danger -->


        > Please keep in mind that erased Invoice cannot be restored


        Permanently Delete Invoice if its already on Recycle Bin


        You must have "**DELETE**" role in "**ORDER**" Module OR "**DELETE**"
        role in "**Global**" Module
      operationId: invoice-erase
      requestBody:
        description: >-
          Request can be send with payload Outlet+Number / OutletID + Number
          /InvoiceID only
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Invoice Number
                  example:
                    Outlet: Offline
                    Number: B1.22.08.00003
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Outlet ID
                      x-stoplight:
                        id: 7gsttobcv134a
                    Number:
                      type: string
                      description: Invoice Number
                  example:
                    OutletID: 9f527088-35a3-4ft8-988a-888c37885a88
                    Number: B1.22.08.00003
                - title: With Invoice ID
                  required:
                    - InvoiceID
                  type: object
                  properties:
                    InvoiceID:
                      type: string
                      description: ID of Invoice
                      x-stoplight:
                        id: rscuxp01bqha4
                  example:
                    InvoiceID: 9f527088-35a3-4ft8-988a-888c37885a88
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: Invoice has been Erased!
      x-codegen-request-body-name: body
  /LoyaltyPoint/Mobile:
    put:
      tags:
        - Loyalty Point
      summary: Add / Redeem Loyalty Point by Mobile
      description: Add / Redeem Loyalty Point Customer by Mobile
      operationId: put-LoyaltyPoint-Mobile
      requestBody:
        content:
          application/json:
            schema:
              required:
                - LoyaltyPoint
                - MobilePhone
              type: object
              properties:
                MobilePhone:
                  type: string
                  description: Customer mobile phone. This is primary key for the object
                LoyaltyPoint:
                  type: integer
                  description: The number of loyalty points you want to add / redeem
                Note:
                  type: string
                  description: Note add loyalty point
              example:
                MobilePhone: '081251545454'
                LoyaltyPoint: 1000
                Note: Add loyalty point
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              examples:
                add:
                  summary: Points Added
                  value:
                    Message: Your loyalty point has been added by 100 points
                redeem:
                  summary: Points Redeemed
                  value:
                    Message: Your loyalty points have been redeemed by 1000 points
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                x-examples:
                  Example 1:
                    Message: MobilePhone Not Found
            Example 1:
              example:
                Message: MobilePhone Not Found
      x-codegen-request-body-name: body
  /LoyaltyPoint:
    get:
      operationId: GetLoyaltyPoint
      tags:
        - Loyalty Point
      summary: Get Loyalty Point
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/LoyaltyPoint/p)**


        <br>

        Get Loyalty Point History


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: number
                  description: The page of data to be displayed
                PageSize:
                  type: number
                  description: The Number of rows returned by The API
            example:
              PageNumber: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: Customer's Name
                    Code:
                      type: string
                      description: Customer's member code
                    Email:
                      type: string
                      description: Customer's email
                    LoyaltyPoint:
                      type: integer
                      description: Customer's loyalty point
                    Timestamp:
                      type: string
                      description: >-
                        Last transaction time related to loyalty point
                        (earned/redeemed)
                    ExpiryDate:
                      type: string
                      description: Loyalty point expired date
                    Redeemed:
                      type: integer
                      description: Total of redeemed loyalty point
              example:
                - Name: John Doe
                  Code: ABC-001
                  Email: ''
                  LoyaltyPoint: 25
                  Timestamp: '2020-03-04T15:08:15.997'
                  ExpiryDate: ''
                  Redeemed: 8
                - Name: Jane Doe
                  Code: ABC-002
                  Email: ''
                  LoyaltyPoint: 15
                  Timestamp: '2019-08-22T14:00:48.36'
                  ExpiryDate: ''
                  Redeemed: 5
                - Name: Richard
                  Code: ABC-003
                  Email: ''
                  LoyaltyPoint: 100
                  Timestamp: '2020-02-18T16:53:58.697'
                  ExpiryDate: ''
                  Redeemed: 50
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
    put:
      operationId: AddRedeemLoyaltyPointByEmail
      tags:
        - Loyalty Point
      summary: Add / Redeem Loyalty Point By Email
      description: |
        Add / Redeem Loyalty Point Customer by Email
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Email
                - LoyaltyPoint
              type: object
              properties:
                Email:
                  type: string
                  description: Customer email address. This is primary key for the object
                LoyaltyPoint:
                  type: integer
                  description: The number of loyalty points you want to add / redeem
                Note:
                  type: string
                  description: Note add loyalty point
            example:
              Email: riyan@gmail.com
              LoyaltyPoint: 100
              Note: Adding loyalty points for promotion
        required: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Description of loyalty point action
              examples:
                add:
                  summary: Points Added
                  value:
                    Message: Your loyalty point has been added by 100 points
                redeem:
                  summary: Points Redeemed
                  value:
                    Message: Your loyalty points have been redeemed by 1000 points
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Email Not Found
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ClassName:
                    type: string
                  Message:
                    type: string
                  Data:
                    type: object
                    properties:
                      HelpLink.ProdName:
                        type: string
                      HelpLink.ProdVer:
                        type: string
                      HelpLink.EvtSrc:
                        type: string
                      HelpLink.EvtID:
                        type: string
                      HelpLink.BaseHelpUrl:
                        type: string
                      HelpLink.LinkId:
                        type: string
                      SqlError 1:
                        type: string
                  StackTraceString:
                    type: string
                  RemoteStackIndex:
                    type: integer
                  HResult:
                    type: integer
                  Source:
                    type: string
                  ClientConnectionId:
                    type: string
              example:
                ClassName: System.Data.SqlClient.SqlException
                Message: >-
                  Procedure or function 'GetContactByEmail' expects parameter
                  '@Customer', which was not supplied.
                Data:
                  HelpLink.ProdName: Microsoft SQL Server
                  HelpLink.ProdVer: 14.00.1000
                  HelpLink.EvtSrc: MSSQLServer
                  HelpLink.EvtID: '201'
                  HelpLink.BaseHelpUrl: http://go.microsoft.com/fwlink
                  HelpLink.LinkId: '20476'
                  SqlError 1: >-
                    System.Data.SqlClient.SqlError: Procedure or function
                    'GetContactByEmail' expects parameter '@Customer', which was
                    not supplied.
                StackTraceString: '   at System.Data.SqlClient.SqlConnection....'
                RemoteStackIndex: 0
                HResult: -2146232060
                Source: Core .Net SqlClient Data Provider
                ClientConnectionId: eca58533-f8e4-4020-8256-b5c795242410
      x-codegen-request-body-name: body
  /LoyaltyPoint/EarnAndRedeem:
    get:
      operationId: GetEarnAndRedeemLoyaltyPoint
      tags:
        - Loyalty Point
      summary: Get Total Earn and Redeem Loyalty Point
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        (endpoint: /api/v3/LoyaltyPoint/p)**


        <br>

        Get total Earn and Redeem Loyalty Point according period define


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                From:
                  type: string
                To:
                  type: string
                Email:
                  type: string
                MobilePhone:
                  type: string
              example:
                From: '2023-01-01'
                To: '2023-01-31'
                Email: hendry@dealpos.com
                MobilePhone: '081231234546'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Earn:
                    type: integer
                  Redeem:
                    type: integer
              example:
                Earn: 100
                Redeem: -28
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection.....)'
      x-codegen-request-body-name: body
  /LoyaltyPoint/WithTotalCount:
    get:
      operationId: GetLoyaltyPointWithTotalCount
      tags:
        - Loyalty Point
      summary: Get Loyalty Point With Total Count
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Loyalty Point With Total Count


        Required Group Role: "**Contacts**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - PageNumber
                - PageSize
              type: object
              properties:
                PageNumber:
                  type: number
                  description: The number of page data to be displayed
                PageSize:
                  type: number
                  description: The number of rows returned by the API
            example:
              PageNumber: 1
              PageSize: 20
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Name of the customer
                        Code:
                          type: string
                          description: Unique Code of the customer
                        Email:
                          type: string
                          description: E-mail detail of the customer
                        LoyaltyPoint:
                          type: integer
                          description: Total account loyalty point of the customer
                        Timestamp:
                          type: string
                          description: Customer loyalty point time stamp
                        ExpiryDate:
                          type: string
                          description: Customer loyalty point expiry date
                        Redeemed:
                          type: integer
                          description: Customer loyalty point total that has been redeemed
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Name: John Doe
                    Code: ABC-001
                    Email: ''
                    LoyaltyPoint: 25
                    Timestamp: '2020-03-04T15:08:15.997'
                    ExpiryDate: ''
                    Redeemed: 8
                  - Name: Jane Doe
                    Code: ABC-002
                    Email: ''
                    LoyaltyPoint: 15
                    Timestamp: '2019-08-22T14:00:48.36'
                    ExpiryDate: ''
                    Redeemed: 5
                  - Name: Richard
                    Code: ABC-003
                    Email: ''
                    LoyaltyPoint: 100
                    Timestamp: '2020-02-18T16:53:58.697'
                    ExpiryDate: ''
                    Redeemed: 50
                TotalCount: 100
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Authentication failed, invalid Bearer Token!
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: '   at System.Text.Json.JsonElement...'
      x-codegen-request-body-name: body
  /OutboundLogistic/Number:
    get:
      operationId: GetOutboundLogisticByNumber
      tags:
        - OutboundLogistic
      summary: Get OutboundLogistic By Number
      description: >-
        >Previous Endpoint:
        https://brand.dealpos.net/api/v3/CustomerDelivery/Number. As for now,
        both the new & the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Customer Delivery By Number


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name of customer delivery
                    Number:
                      type: string
                      description: Number of customer delivery
                  example:
                    Outlet: Outlet1
                    Number: 20.04.00018
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                    Number:
                      type: string
                      description: Number of customer delivery
                  example:
                    OutletID: 30b10eae-8a4e-43de-8a37-4bb2b1807280
                    Number: 20.04.00018
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Outlet:
                    type: string
                    description: Outlet where the transaction is created
                  Number:
                    type: string
                    description: Transaction Number
                  Date:
                    type: string
                    description: Transaction date
                  Customer:
                    type: object
                    properties: {}
                    description: Customer's data
                  CreatorID:
                    type: string
                    description: User who create the transaction
                  Created:
                    type: string
                    description: Transaction created date
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Variant's name
                        Code:
                          type: string
                          description: Variant's code
                        Quantity:
                          type: integer
                          description: Variant's quantity for the transaction
                        Price:
                          type: number
                          description: Variant's sold price
                        PriceOriginal:
                          type: number
                          description: Variant's original price
                        Discount:
                          type: number
                          description: Discount % applied for this variant
                        DiscountAmount:
                          type: number
                          description: Discount amount for the variant
                        NettPrice:
                          type: number
                          description: Price after discount
                        Note:
                          type: string
                          description: Note for the variant
                        VariantID:
                          type: string
                          description: Product Variant Unique ID
              example:
                Outlet: Outlet1
                Number: 20.04.00018
                Date: '2020-04-29T00:00:00'
                Customer: {}
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2020-04-29T12:02:26.903'
                Variants:
                  - Name: T-Shirt
                    Code: '2004'
                    Quantity: 1
                    Price: 200000
                    PriceOriginal: 200000
                    Discount: 0
                    DiscountAmount: 0
                    NettPrice: 200000
                    Note: ''
                    VariantID: 30b10eae-8a4e-43de-8a37-4bb2b1807280
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Error message
                  ExceptionType:
                    type: string
                    description: Error type
                  StackTrace:
                    type: string
                    description: Error stack trace
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /OutboundLogistic/byOrderNumber:
    get:
      tags:
        - OutboundLogistic
      summary: Get OutboundLogistic By Order Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Customer Delivery By Order / Invoice Number


        Required Group Role: "**Logistic**" - "**VIEW**"
      operationId: oubound-logistic-bynumber
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet name of customer delivery
                    Number:
                      type: string
                      description: Number of customer delivery
                  example:
                    Outlet: Outlet1
                    Number: 20.04.00018
                - title: With Outlet ID
                  required:
                    - Number
                    - OutletID
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                    Number:
                      type: string
                      description: Number of customer delivery
                  example:
                    OutletID: 30b10eae-8a4e-43de-8a37-4bb2b1807280
                    Number: 20.04.00018
        required: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                oneOf:
                  - title: Single Outlet Delivery
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Destination Outlet Name
                        Number:
                          type: string
                          description: Outbound Logistic Number
                        Date:
                          type: string
                          description: Transaction date
                        Created:
                          type: string
                          description: Transaction created date
                    example:
                      - Outlet: Outlet1
                        Number: 1-OLT1/22/07/0021
                        Date: '2022-07-06T00:00:00'
                        Created: '2022-07-06T09:37:53.937'
                      - Outlet: Outlet1
                        Number: 1-OLT1/22/07/0021_2
                        Date: '2022-07-06T00:00:00'
                        Created: '2022-07-06T09:38:05.857'
                  - title: Multiple Outlet Delivery
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Destination Outlet Name
                        Number:
                          type: string
                          description: Outbound Logistic Number
                        Date:
                          type: string
                          description: Transaction date
                        Created:
                          type: string
                          description: Transaction created date
                    example:
                      - Outlet: Outlet2
                        Number: 1-OLT2/22/07/0021
                        Date: '2022-07-06T00:00:00'
                        Created: '2022-07-06T09:37:53.937'
                      - Outlet: Outlet3
                        Number: 1-OLT3/22/07/0021_2
                        Date: '2022-07-06T00:00:00'
                        Created: '2022-07-06T09:38:05.857'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  ExceptionMessage:
                    type: string
                    description: Error message
                  ExceptionType:
                    type: string
                    description: Error type
                  StackTrace:
                    type: string
                    description: Error stack trace
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /OutboundLogistic/WithTotalCount:
    get:
      operationId: GetOutboundLogisticWithTotalCount
      tags:
        - OutboundLogistic
      summary: List OutboundLogistic With Total Count
      description: >-
        >Previous Endpoint:
        https://brand.dealpos.net/api/v3/CustomerDelivery/WithTotalCount. As for
        now, both the new & the old ones can be use.


        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get list of Customer Delivery with Total Count


        Required Group Role: "**Logistic**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: With Outlet Name
                  required:
                    - From
                    - Outlet
                    - OutletID
                    - PageNumber
                    - PageSize
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: 'From Date (format: yyyy-mm-dd)'
                    To:
                      type: string
                      description: 'To Date (format: yyyy-mm-dd)'
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: |
                        The number of rows returned by the API
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: ezaan7ox7naly
                    Outlet:
                      type: string
                      description: Name of the outlet
                  example:
                    From: '2020-04-01'
                    To: '2020-04-30'
                    PageNumber: 1
                    PageSize: 10
                    Outlet: Outlet1
                - title: With Outlet ID
                  required:
                    - From
                    - OutletID
                    - PageNumber
                    - PageSize
                    - To
                  type: object
                  properties:
                    From:
                      type: string
                      description: 'From Date (format: yyyy-mm-dd)'
                    To:
                      type: string
                      description: 'To Date (format: yyyy-mm-dd)'
                    PageNumber:
                      type: number
                      description: |
                        The number of page data to be displayed
                    PageSize:
                      type: number
                      description: |
                        The number of rows returned by the API
                    OutletID:
                      type: string
                      description: Guid of Outlet ID
                      x-stoplight:
                        id: ezaan7ox7naly
                  example:
                    From: '2020-04-01'
                    To: '2020-04-30'
                    PageNumber: 1
                    PageSize: 10
                    OutletID: 30b10eae-8a4e-43de-8a37-4bb2b1807280
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Name of the outlet
                        Number:
                          type: string
                          description: Number of the invoice customer delivery
                        Customer:
                          type: string
                          description: Name of the customer
                        Date:
                          type: string
                          description: Date of the Customer Delivery
                        Delivery:
                          type: string
                          description: |
                            delivery date time of the Customer Delivery
                        Time:
                          type: string
                          description: Time of Date of the customer delivery
                  TotalCount:
                    type: integer
                    description: Total Count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 20.04.00082
                    Customer: ''
                    Date: '2020-04-17T00:00:00'
                    Delivery: '2020-04-17T00:00:00'
                    Time: '2020-04-17T15:01:00'
                  - Outlet: Outlet1
                    Number: 20.04.00081
                    Customer: ''
                    Date: '2020-04-17T00:00:00'
                    Delivery: '2020-04-17T00:00:00'
                    Time: '2020-04-17T14:30:00'
                TotalCount: 100
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
              example:
                Message: There is no Outlet with that name Outlet1
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Error message
                  StackTrace:
                    type: string
                    description: Error stack trace
              example:
                Message: Operation is not valid due to the current state of the object.
                StackTrace: "   at System.Text.Json.JsonElement.GetRawText()\r\n   at POS.Library.Helper.JSONPropertyChecker.ToObject[T](JsonElement element) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 141\r\n   at POS.WEB.Controllers.v3.CustomerDeliveryController.WithTotalCount(JsonElement obj)"
      x-codegen-request-body-name: body
  /OutboundLogistic/Split:
    post:
      operationId: post-OutboundLogistic-Split
      tags:
        - Deprecated API
      summary: Send OutboundLogistic from Multiple Outlet
      description: >-
        >Previous Endpoints:
        https://brand.dealpos.net/api/v3/CustomerDelivery/Split. As for now,
        both the new & the old ones can be use.


        When an order is fulfilled from multiple locations.

        Multiple Outbound Logistic is created from DISTINCT outlet names
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
                - OutletID
                - Variants
              type: object
              properties:
                OutletID:
                  type: string
                  description: Guid of Outlet ID
                  x-stoplight:
                    id: grdl8dk1gxzbd
                Outlet:
                  type: string
                  description: Outlet name where the invoice created
                Number:
                  type: string
                  description: The invoice number
                Variants:
                  type: array
                  description: the variants in the invoice
                  items:
                    required:
                      - Code
                      - Outlet
                      - Quantity
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Variant code
                      Quantity:
                        type: integer
                        description: Quantity of the variant
                      Outlet:
                        type: string
                        description: Outlet name for sent the variant
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: 6e424252-ffe3-4a75-98b8-d0917acc487d
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Your outlet not found
      deprecated: true
      x-codegen-request-body-name: body
  /InboundLogistic:
    get:
      tags:
        - InboundLogistic
      summary: List InboundLogistic
      description: "Get list of Inbound Logistics\r\n\r\nYou must have \"**View**\" role in \"**Logistic**\" Module"
      operationId: get-InboundLogistic
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                From:
                  type: string
                  description: From Date
                To:
                  type: string
                  description: To Date
                PageNumber:
                  type: integer
                  description: The Page of data to be displayed
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
                Outlet:
                  type: string
                  description: Outlet name that you want to filter
            example:
              From: '2024-02-01'
              To: '2024-02-28'
              PageNumber: 1
              PageSize: 20
              Outlet: Outlet1
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet's Name
                    Number:
                      type: string
                      description: Transaction Number
                    Supplier:
                      type: string
                      description: Supplier's Name
                    PONumber:
                      type: string
                      description: Purchase Order Number
                    Date:
                      type: string
                      description: Date of Inbound Logistics created
              example:
                - Outlet: Outlet1
                  Number: 20.04.00082
                  Supplier: Stephen
                  PONumber: 20.04.00082
                  Date: '2024-02-20T15:01:00'
                - Outlet: Outlet1
                  Number: 20.04.00081
                  Supplier: Stephen
                  PONumber: 20.04.00081
                  Date: '2024-02-18T14:30:00'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name Outlet2
      x-stoplight:
        id: ji6zi2u1kjxe4
      x-codegen-request-body-name: body
    post:
      operationId: post-InboundLogistic
      tags:
        - InboundLogistic
      summary: Create InboundLogistic
      description: >-
        >Previous Endpoint: https://brand.dealpos.net/api/v3/SupplierDelivery.
        As for now, both the new & the old ones can be use.


        Receive supplier delivery based on number


        You must have "**DelC**" role in "**Logistic**" Module

        if config Workflow Buy Approve need "**PurA**" role in "**Buy**" Module
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: All Product
                  required:
                    - FulfillmentOutlet
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Number:
                      type: string
                      description: Number of the Customer Delivery
                    FulfillmentOutlet:
                      type: string
                      description: >-
                        Stock in this outlet will be reduced. Backwards
                        compatibility with property "DeliveryOutlet"
                  example:
                    Outlet: Outlet1
                    Number: 21.05.00007
                    FulfillmentOutlet: Outlet1
                - title: Partial Product
                  required:
                    - FulfillmentOutlet
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Name of the outlet
                    Number:
                      type: string
                      description: Number of the Customer Delivery
                    FulfillmentOutlet:
                      type: string
                      description: >-
                        Stock in this outlet will be reduced. Backwards
                        compatibility with property "DeliveryOutlet"
                    Variants:
                      type: array
                      description: >-
                        If object Variants filled with empty array or not send,
                        it will receive all products
                      items:
                        type: object
                        properties:
                          Code:
                            type: string
                            description: Code of Variant
                          Quantity:
                            type: integer
                            description: Quantity of stock will increase
                          Serial:
                            type: array
                            items:
                              type: object
                              properties:
                                Number:
                                  type: string
                                  description: Serial Number
                                  x-stoplight:
                                    id: 9y7y70gril7qt
                                Quantity:
                                  type: integer
                                  description: Quantity of Serial Number
                  example:
                    Outlet: Outlet1
                    Number: 21.05.00007
                    FulfillmentOutlet: Outlet1
                    Variants:
                      - Code: '907'
                        Quantity: 10
                      - Code: '908'
                        Quantity: 5
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                  OrderFulfillmentState:
                    type: string
                    example: Received / Partial
              example:
                ID: 712098c6-0703-4e36-9679-c14dbeb4e3fe
                OrderFulfillmentState: Received
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no invoice with Number 21.05.000ss07
        '409':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  The order 21.05.00007 delivery status is RECEIVED. Double
                  Delivery is not allowed
      x-codegen-request-body-name: body
    delete:
      tags:
        - InboundLogistic
      summary: Delete Inbound Logistic
      description: You must have "**DELETE**" role in "**Logistic**" Module
      operationId: delete-InboundLogistic
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Fulfillment Number
            example:
              Outlet: Outlet1
              Number: 21.12.00123
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Inbound Logistic number 21.12.00123 has been deleted!
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Inbound Logistic number 21.12.00124 not found
      x-stoplight:
        id: kle6pq2ad7ayk
      x-codegen-request-body-name: body
  /InboundLogistic/Partial:
    post:
      operationId: post-InboundLogistic-Partial
      tags:
        - Deprecated API
      summary: Receive Partial InboundLogistic
      description: >-
        >Previous Endpoint:
        https://brand.dealpos.net/api/v3/SupplierDelivery/Partial. As for now,
        both the new & the old ones can be use.


        Receive Partial delivery for Purchase Order from Supplier
      requestBody:
        content:
          application/json:
            schema:
              required:
                - DeliveryOutlet
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Bill Number
                DeliveryOutlet:
                  type: string
                  description: Outlet that will be received the purchase order
                Variants:
                  type: array
                  items:
                    required:
                      - Code
                      - Quantity
                    type: object
                    properties:
                      Code:
                        type: string
                        description: Variant's Code
                      Quantity:
                        type: string
                        description: Quantity of variant that will be received
                      Note:
                        type: string
                        description: Note of variant
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
              example:
                Message: Supplier Bill Delivery Number Bill001 created!
        '409':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  The order Bill001 delivery status is RECEIVED. Double Delivery
                  is not allowed
      deprecated: true
      x-codegen-request-body-name: body
  /Token/ClientSecret:
    post:
      operationId: GetTokenByClientSecret
      tags:
        - Deprecated API
      summary: Get Token by Client Secret
      description: Get Oauth 2.0 to access our API using username and API client...
      requestBody:
        description: Get Token from User Name and API Client Secret
        content:
          application/json:
            schema:
              required:
                - client_id
                - client_secret
              type: object
              properties:
                client_id:
                  type: string
                  description: Username
                client_secret:
                  type: string
                  description: '**API Client Secret** generated from **My Profile** page'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                token_type: Bearer
                expires_in: 172800
                expiredAt: '2021-01-23T10:01:55.7638103'
                access_token: >-
                  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGVhbHBvcyIsIlVzZXJJRCI6ImZmNzg0OGM5LTIxZjEtNGMwNS1hYzllLTFlNzFkODI5Y2M5YyIsIlNhbGVzSUQiOiIzNzQxNmNiMy1lYjEyLTQ2MTItOTcwZC1hNTcyN2MxNDRlZjkiLCJMaXZlQ2hhdEVuYWJsZWQiOiJUcnVlIiwiVHlwZSI6IlN5c3RlbSIsImRhdGFEYXlzUmFuZ2UiOjAsIlNlc3Npb25JRCI6IjZiNjE1ZjdhLTM2N2QtNDAzNi04NDU0LTQzNTMwOGU4YTg1NyIsIkVtYWlsIjoibG9jYWxob3N0LmRlYWxwb3NAZ21haWwuY29tIiwiRW50aXR5QWNjZXNzSlNPTiI6Ilt7XCJlXCI6XCJhMzk4ZTU1MC0xMTJkLTRhOTgtOGUyZi0wM2RkMjc5Y2FiMGNcIixcImFcIjozfSx7XCJlXCI6XCI4N2I3ZWM0MC0xNjgxLTQ0ZWMtOWIzOS0wZjIxODhkOGQxOTdcIixcImFcIjozfSx7XCJlXCI6XCI5YWQxZDZmYy0yOGFlLTRmZjMtOWY2NC0xNDQyYjc2ZDUxMThcIixcImFcIjozfSx7XCJlXCI6XCIxNWJkNWY1OS00ODlmLTQ5OGQtOWNlMC0xNTdiZWI0MGUzMTFcIixcImFcIjozfSx7XCJlXCI6XCI2Yjc4MGVmZC01ZTlhLTQ5ODQtYmI3Zi0xZTY1ZmM3N2Q3NGRcIixcImFcIjozfSx7XCJlXCI6XCJmMDQ1MTg3NC01NWNmLTQ2YjgtYThiZC0yMGE1ZDFhZTQ0ZGFcIixcImFcIjozfSx7XCJlXCI6XCI4YzM4MGVlMi0zMzY0LTRmNTItYmM4Zi0yYjcwY2M2ZDgxZjVcIixcImFcIjozfSx7XCJlXCI6XCIzYWQxYTc3Yi02NzBkLTQ0MjMtYTI0Ni00NTExYjFmYzM4MmJcIixcImFcIjozfSx7XCJlXCI6XCJmMDI3OWJlNy01YTRkLTRkZWMtYTk3ZC00N2IyNTYwMzE1NTZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZhMDk0OC0wYmZlLTQzMWQtYWFmMS01MGEyZmM1NDJiYzVcIixcImFcIjozfSx7XCJlXCI6XCI2MmMzYjdhOS1kNDFjLTQ2MTUtOGY0My01NzJkOGZlNDc3OGJcIixcImFcIjozfSx7XCJlXCI6XCJlNzY0NTFlMy00MTM5LTQxZjAtYTNjYy02NDMyYzMzZDQ0Y2FcIixcImFcIjozfSx7XCJlXCI6XCJmMDUzZDhiNC1mYzZjLTRhMGMtYmM2NC02YWU0MzQ5ODg4YWVcIixcImFcIjozfSx7XCJlXCI6XCIyNzcxZDcxMS1lZmRhLTRhMTMtYjgwMy02YjcwZDgyZmE0YzZcIixcImFcIjozfSx7XCJlXCI6XCIzOWUxOThmOC02OWQxLTRjZjktOWFjOC02ZTg0N2YxNmY5YjhcIixcImFcIjozfSx7XCJlXCI6XCI1OTFlZGE4Ny1lNDUyLTQxZTYtOWZlOS03MjVjZjM4NjQ3NGFcIixcImFcIjozfSx7XCJlXCI6XCI2NjU0MjliOS00NTBmLTQ5NTMtYjY5My03YmJlYTI1YmQyYWFcIixcImFcIjozfSx7XCJlXCI6XCJiMTBkMjlkZi0zNTg4LTQzZTYtOGUzOS04Y2FiNDlhZjAzYWFcIixcImFcIjozfSx7XCJlXCI6XCJkYTg2ZWIxZS05OTQ1LTRkN2MtOGQwNC05NDNjMmQyN2U1NDFcIixcImFcIjozfSx7XCJlXCI6XCJhMWM4MTdkMS04YmVkLTQzYjItODJkNy05OTVhNDk0M2I5ZjdcIixcImFcIjozfSx7XCJlXCI6XCJhZThkZWM3Yi05YmM2LTRlNDctOTViNC1hN2YxMjk1OWFhZjlcIixcImFcIjozfSx7XCJlXCI6XCJiZGQzMTU4My1jNWNhLTQ1NjYtODE2Yy1hOTEwNzVhNThjNDdcIixcImFcIjozfSx7XCJlXCI6XCIzOTFjZGIyNi1hMGFiLTQ0NTMtYjFjZi1hOWIxNjc5YjRkNzRcIixcImFcIjozfSx7XCJlXCI6XCJmNjA2YzE5YS0zZjc3LTQxOTgtODJkMy1hYTYyODBhZWI1MTRcIixcImFcIjozfSx7XCJlXCI6XCI1OWMwZjBmZi1mYWM1LTRlYzctYjkzNS1iMjdlZDI3YmU0MDJcIixcImFcIjozfSx7XCJlXCI6XCIyMjNkODJjMy04YmFhLTQyM2MtOTc1My1iM2MwYWNhODU4OThcIixcImFcIjozfSx7XCJlXCI6XCJiYTNmNTRjZC04Y2Q4LTQ1MGItOTFlNS1iNjI4YmRiOGFhODRcIixcImFcIjozfSx7XCJlXCI6XCJlMTYzMmEzNi1iNDU0LTRlNzktOTEzYS1iZTViYzc0YTc3YjZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZiZTQ2ZC1kMDE4LTRmZjAtYmEwMC1jNGZlY2VlYmUyMjVcIixcImFcIjozfSx7XCJlXCI6XCJjOTMzYjIwNS1lMzk0LTRhNTEtOTkwYS1jNTNhODljMmYyNmVcIixcImFcIjozfSx7XCJlXCI6XCI3NjYxZTYxOC1iYTY5LTQ5NTUtODFmMS1jOGVkYmQ1ZDU2ZDJcIixcImFcIjozfSx7XCJlXCI6XCJiMWZkOGMyMy1lZTRjLTRmYzMtOGVjMS1kNWM4MmE4YzdiMjdcIixcImFcIjozfSx7XCJlXCI6XCJmOTg4YzM0Yy0yNGVkLTRmNWEtOWMyNy1lOTMzNWU0YmZmNjBcIixcImFcIjozfSx7XCJlXCI6XCJmY2FhN2YxYi1hMzM0LTQ0NjAtODIxMy1lOTk5ZjM4NGUzMDlcIixcImFcIjozfSx7XCJlXCI6XCJjMzVjOGNjZS0xMWZlLTQyZmItOTY3Ni1mMzJkMmQxYWQ3M2NcIixcImFcIjozfSx7XCJlXCI6XCIwZThiYWFiOS0xOGI1LTRhM2EtYWExMi1mYjdjMjc3MzIwOWVcIixcImFcIjozfV0iLCJFbnRpdHlBY2Nlc3NTdG9yYWdlIjoiSldUVG9rZW4iLCJTdG9yZU5hbWUiOiJIZW5kcnkiLCJJc0F1dGhlbnRpY2F0ZWQiOiJ0cnVlIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIkVzdGltYXRlIiwiRXN0aW1hdGVFZGl0b3IiLCJDdXN0b21lckRpc3BsYXkiLCJQcm9maWxlIiwiUHJvbW90aW9uIiwiUmVwb3J0MiIsIlRvb2xzIiwiU2V0dXAiLCJLaXRjaGVuRGlzcGxheSIsIk91dGxldHMiLCJJbnZlbnRvcnkiLCJTZXJ2aWNlIiwiQmlyIiwiUmVwb3J0IiwiQWRqdXN0bWVudCIsIkdsb2JhbEVkaXRvciIsIkFjdGl2aXR5IiwiUGF5bWVudCIsIlByb2R1Y3RzIiwiU2hpZnQiLCJEZWJ0IiwiQWNjb3VudGluZyIsIlRyZWF0bWVudCIsIkNvbnRhY3RzIiwiTWFudWZhY3R1cmUiLCJEZXZlbG9wZXJUb29scyIsIk9yZGVycyIsIkNoYXJ0IiwiTWFya2V0cGxhY2UiLCJVc2VycyIsIkNhbGVuZGFyIiwiUGF5bWVudEVkaXRvciIsIkFkanVzdG1lbnRFZGl0b3IiLCJTaGlmdENyZWF0ZSIsIkRlYnRDcmVhdGUiLCJNYW51ZmFjdHVyZUNyZWF0ZSIsIlN1YnNjcmlwdGlvbiIsIkJ1eSIsIlJlcG9ydEFkdmFuY2VkIiwiQ29udGFjdHNDcmVhdGUiLCJJbnZlbnRvcnlFZGl0b3IiLCJPdXRsZXRzQ3JlYXRlIiwiU2VsbCIsIkFjY291bnRpbmdDcmVhdGUiLCJQcm9kdWN0c0NyZWF0ZSIsIlByb21vdGlvbkNyZWF0ZSIsIk5vdGlmaWNhdGlvbiIsIkRlbGl2ZXJ5IiwiVHJlYXRtZW50Q3JlYXRlIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiSnVybmFsIiwiVXNlcnNDcmVhdGUiLCJTZXR1cENyZWF0ZSIsIlRyZWF0bWVudEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiU2hpZnRFZGl0b3IiLCJQcm9tb3Rpb25FZGl0b3IiLCJBZGp1c3RtZW50Q3JlYXRlIiwiU2V0dXBFZGl0b3IiLCJTZWxsRGVsZXRlIiwiVXNlcnNFZGl0b3IiLCJPdXRsZXRzRWRpdG9yIiwiRGVsaXZlcnlFZGl0b3IiLCJQcm9maXQiLCJBY2NvdW50aW5nRWRpdG9yIiwiRXN0aW1hdGVEZWxldGUiLCJCdXlEZWxldGUiLCJNYW51ZmFjdHVyZUVkaXRvciIsIkNvbnRhY3RzRWRpdG9yIiwiRGVidEVkaXRvciIsIlByb2R1Y3RzRWRpdG9yIiwiVHJlYXRtZW50RGVsZXRlIiwiU2V0dXBEZWxldGUiLCJQYXltZW50RGVsZXRlIiwiRGF0ZUVkaXRvciIsIkFjY291bnRpbmdEZWxldGUiLCJTZWxsRWRpdG9yIiwiRGVidERlbGV0ZSIsIkludmVudG9yeVByb2R1Y3RDb3VudCIsIlByb21vdGlvbkRlbGV0ZSIsIk91dGxldHNEZWxldGUiLCJDb250YWN0c0RlbGV0ZSIsIk1hbnVmYWN0dXJlRGVsZXRlIiwiQWRqdXN0bWVudERlbGV0ZSIsIkRlbGl2ZXJ5RGVsZXRlIiwiU2hpZnREZWxldGUiLCJVc2Vyc0RlbGV0ZSIsIkJ1eUVkaXRvciIsIlByb2R1Y3RzRGVsZXRlIiwiV2ViaG9va1NldHVwIiwiR3JvdXBzIiwiV2ViaG9va0NvbmZpZ3VyYXRpb25WaWV3IiwiUGF5bWVudENyZWF0ZSIsIkxveWFsdHlQb2ludEVkaXRvciIsIk51bWJlckVkaXRvciIsIkNvc3QiLCJUcmVhdG1lbnRJbmNlbnRpdmUiLCJQcm9tb3Rpb25Db3Vwb24iLCJJbWFnZUVkaXRvciIsIlNoYXJlUGFja2FnZUVkaXRvciIsIkRldmVsb3BlclNldHVwIiwiQWNjb3VudGluZ0xlZGdlciIsIkRlbGl2ZXJ5Q3JlYXRlIiwiU2FsZXNtYW5FZGl0b3IiLCJSZXR1cm4iLCJEZWxpdmVyeURhdGVFZGl0b3IiLCJUcmVhdG1lbnROb3RlIiwiUHJpY2Vib29rIiwiRXhwZW5zZSIsIkRpc2NvdW50IiwiRGVsaXZlcnlSZWNlaXZlciIsIlVuaXRQcmljZUVkaXRvciIsIkJ1bmRsaW5nUHJpY2UiLCJEYXNoYm9hcmQiLCJEb2N0b3IiLCJFeHBvcnQiLCJNb25leSIsIlNlYXJjaCIsIkJlc3RTZWxsZXIiLCJUb3BDdXN0b21lcnMiLCJBdXRob3JpemF0aW9uS2V5IiwiTW9uaXRvciIsIlB1cmNoYXNlT3JkZXIiLCJTYWxlc1RyYW5zYWN0aW9uIiwiU2hpcHBpbmdFZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiQWNjb3VudGluZ0Nhc2hiYWxhbmNlIiwiRGVsZXRlQWxsT3V0bGV0UHJpY2UiLCJBZGp1c3RtZW50QXBwcm92YWwiLCJCdXlEYXRlRWRpdG9yIiwiUXVhbnRpdHkiLCJSZWN1cnJpbmciLCJQcmljZWJvb2tTZWxlY3RvciJdLCJleHAiOjE2MTEzNzA5MTUsImlzcyI6ImNocmlzdG9waGVyLmRlYWxwb3MubmV0IiwiYXVkIjoiY2hyaXN0b3BoZXIuZGVhbHBvcy5uZXQifQ.Zie2cYtqg4xmssBWFC6h6v_XAYSZrtdv22vL8npHdy0
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The username and/or password is invalid!
                StackTrace: '   at POS.BLL.JWT.AuthTokenProcessor.Login...'
      security: []
      x-codegen-request-body-name: body
  /Token/GoogleIDToken:
    post:
      tags:
        - Deprecated API
      summary: Get Token by Google ID
      description: Get Oauth 2.0 to access our API using Google ID Token
      operationId: googleid-token
      requestBody:
        description: Get Token from User Name and API Client Secret
        content:
          application/json:
            schema:
              type: object
              properties:
                IDToken:
                  type: string
                  description: Obtained from logging in with Google Account
              x-examples:
                example-1:
                  IDToken: >-
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjIwOWMwNTdkM2JkZDhjMDhmMmQ1NzM5Nzg4NjMyNjczZjdjNjI0MGYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiNDEyNDY1MTY1MTk0LTJ0Z2RvYWlqYTZwYjN1NDd2dG9yYXZtaGxpYzdtdDQ0LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiNDEyNDY1MTY1MTk0LTJ0Z2RvYWlqYTZwYjN1NDd2dG9yYXZtaGxpYzdtdDQ0LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTEyNTg2Mzg0NTkxMDA1NjE2NjQ4IiwiZW1haWwiOiJndWl2YW5vdmluY2VudDEzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoiWWs2aDlzRDJ5Sm1SWF9sMGFESGNudyIsImlhdCI6MTY2MzY2MDM4MCwiZXhwIjoxNjYzNjYzOTgwfQ.F86Wqn4s-zOXGQAOEhN0YPWRs8aEAivMmeYt0W9RgLrD4Oe8aX1AyohI9JbKdFpy2hRWNPYX_jMXXccDGDYLyuHCJb3J6XlvpbJQzXEbMxGuWLLjdvwD2grXtKdxxCBbTCinv5Css3jRWcr3Iy8Xccmj_sXx2YIBBty7i0oB69AzmJMhURQ2E4QA1KZBmQpuTcWKVo31vUR2uG1l6ZtcJPz-ci89t2hcYbY-SOH9Ldu7bD4LohN9Atmj_ToDeaGRFIT3QBlrXwyzL7PHnf4ntZx91vJthPaROmgnNakT71sUcPhdQPUstYNqquUqPVLs_dkpVUN9w00eUQE1vTmdOg
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                token_type: Bearer
                expires_in: 172800
                expiredAt: '2022-09-24T10:01:55.7638103'
                access_token: >-
                  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGVhbHBvcyIsIlVzZXJJRCI6ImZmNzg0OGM5LTIxZjEtNGMwNS1hYzllLTFlNzFkODI5Y2M5YyIsIlNhbGVzSUQiOiIzNzQxNmNiMy1lYjEyLTQ2MTItOTcwZC1hNTcyN2MxNDRlZjkiLCJMaXZlQ2hhdEVuYWJsZWQiOiJUcnVlIiwiVHlwZSI6IlN5c3RlbSIsImRhdGFEYXlzUmFuZ2UiOjAsIlNlc3Npb25JRCI6IjZiNjE1ZjdhLTM2N2QtNDAzNi04NDU0LTQzNTMwOGU4YTg1NyIsIkVtYWlsIjoibG9jYWxob3N0LmRlYWxwb3NAZ21haWwuY29tIiwiRW50aXR5QWNjZXNzSlNPTiI6Ilt7XCJlXCI6XCJhMzk4ZTU1MC0xMTJkLTRhOTgtOGUyZi0wM2RkMjc5Y2FiMGNcIixcImFcIjozfSx7XCJlXCI6XCI4N2I3ZWM0MC0xNjgxLTQ0ZWMtOWIzOS0wZjIxODhkOGQxOTdcIixcImFcIjozfSx7XCJlXCI6XCI5YWQxZDZmYy0yOGFlLTRmZjMtOWY2NC0xNDQyYjc2ZDUxMThcIixcImFcIjozfSx7XCJlXCI6XCIxNWJkNWY1OS00ODlmLTQ5OGQtOWNlMC0xNTdiZWI0MGUzMTFcIixcImFcIjozfSx7XCJlXCI6XCI2Yjc4MGVmZC01ZTlhLTQ5ODQtYmI3Zi0xZTY1ZmM3N2Q3NGRcIixcImFcIjozfSx7XCJlXCI6XCJmMDQ1MTg3NC01NWNmLTQ2YjgtYThiZC0yMGE1ZDFhZTQ0ZGFcIixcImFcIjozfSx7XCJlXCI6XCI4YzM4MGVlMi0zMzY0LTRmNTItYmM4Zi0yYjcwY2M2ZDgxZjVcIixcImFcIjozfSx7XCJlXCI6XCIzYWQxYTc3Yi02NzBkLTQ0MjMtYTI0Ni00NTExYjFmYzM4MmJcIixcImFcIjozfSx7XCJlXCI6XCJmMDI3OWJlNy01YTRkLTRkZWMtYTk3ZC00N2IyNTYwMzE1NTZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZhMDk0OC0wYmZlLTQzMWQtYWFmMS01MGEyZmM1NDJiYzVcIixcImFcIjozfSx7XCJlXCI6XCI2MmMzYjdhOS1kNDFjLTQ2MTUtOGY0My01NzJkOGZlNDc3OGJcIixcImFcIjozfSx7XCJlXCI6XCJlNzY0NTFlMy00MTM5LTQxZjAtYTNjYy02NDMyYzMzZDQ0Y2FcIixcImFcIjozfSx7XCJlXCI6XCJmMDUzZDhiNC1mYzZjLTRhMGMtYmM2NC02YWU0MzQ5ODg4YWVcIixcImFcIjozfSx7XCJlXCI6XCIyNzcxZDcxMS1lZmRhLTRhMTMtYjgwMy02YjcwZDgyZmE0YzZcIixcImFcIjozfSx7XCJlXCI6XCIzOWUxOThmOC02OWQxLTRjZjktOWFjOC02ZTg0N2YxNmY5YjhcIixcImFcIjozfSx7XCJlXCI6XCI1OTFlZGE4Ny1lNDUyLTQxZTYtOWZlOS03MjVjZjM4NjQ3NGFcIixcImFcIjozfSx7XCJlXCI6XCI2NjU0MjliOS00NTBmLTQ5NTMtYjY5My03YmJlYTI1YmQyYWFcIixcImFcIjozfSx7XCJlXCI6XCJiMTBkMjlkZi0zNTg4LTQzZTYtOGUzOS04Y2FiNDlhZjAzYWFcIixcImFcIjozfSx7XCJlXCI6XCJkYTg2ZWIxZS05OTQ1LTRkN2MtOGQwNC05NDNjMmQyN2U1NDFcIixcImFcIjozfSx7XCJlXCI6XCJhMWM4MTdkMS04YmVkLTQzYjItODJkNy05OTVhNDk0M2I5ZjdcIixcImFcIjozfSx7XCJlXCI6XCJhZThkZWM3Yi05YmM2LTRlNDctOTViNC1hN2YxMjk1OWFhZjlcIixcImFcIjozfSx7XCJlXCI6XCJiZGQzMTU4My1jNWNhLTQ1NjYtODE2Yy1hOTEwNzVhNThjNDdcIixcImFcIjozfSx7XCJlXCI6XCIzOTFjZGIyNi1hMGFiLTQ0NTMtYjFjZi1hOWIxNjc5YjRkNzRcIixcImFcIjozfSx7XCJlXCI6XCJmNjA2YzE5YS0zZjc3LTQxOTgtODJkMy1hYTYyODBhZWI1MTRcIixcImFcIjozfSx7XCJlXCI6XCI1OWMwZjBmZi1mYWM1LTRlYzctYjkzNS1iMjdlZDI3YmU0MDJcIixcImFcIjozfSx7XCJlXCI6XCIyMjNkODJjMy04YmFhLTQyM2MtOTc1My1iM2MwYWNhODU4OThcIixcImFcIjozfSx7XCJlXCI6XCJiYTNmNTRjZC04Y2Q4LTQ1MGItOTFlNS1iNjI4YmRiOGFhODRcIixcImFcIjozfSx7XCJlXCI6XCJlMTYzMmEzNi1iNDU0LTRlNzktOTEzYS1iZTViYzc0YTc3YjZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZiZTQ2ZC1kMDE4LTRmZjAtYmEwMC1jNGZlY2VlYmUyMjVcIixcImFcIjozfSx7XCJlXCI6XCJjOTMzYjIwNS1lMzk0LTRhNTEtOTkwYS1jNTNhODljMmYyNmVcIixcImFcIjozfSx7XCJlXCI6XCI3NjYxZTYxOC1iYTY5LTQ5NTUtODFmMS1jOGVkYmQ1ZDU2ZDJcIixcImFcIjozfSx7XCJlXCI6XCJiMWZkOGMyMy1lZTRjLTRmYzMtOGVjMS1kNWM4MmE4YzdiMjdcIixcImFcIjozfSx7XCJlXCI6XCJmOTg4YzM0Yy0yNGVkLTRmNWEtOWMyNy1lOTMzNWU0YmZmNjBcIixcImFcIjozfSx7XCJlXCI6XCJmY2FhN2YxYi1hMzM0LTQ0NjAtODIxMy1lOTk5ZjM4NGUzMDlcIixcImFcIjozfSx7XCJlXCI6XCJjMzVjOGNjZS0xMWZlLTQyZmItOTY3Ni1mMzJkMmQxYWQ3M2NcIixcImFcIjozfSx7XCJlXCI6XCIwZThiYWFiOS0xOGI1LTRhM2EtYWExMi1mYjdjMjc3MzIwOWVcIixcImFcIjozfV0iLCJFbnRpdHlBY2Nlc3NTdG9yYWdlIjoiSldUVG9rZW4iLCJTdG9yZU5hbWUiOiJIZW5kcnkiLCJJc0F1dGhlbnRpY2F0ZWQiOiJ0cnVlIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIkVzdGltYXRlIiwiRXN0aW1hdGVFZGl0b3IiLCJDdXN0b21lckRpc3BsYXkiLCJQcm9maWxlIiwiUHJvbW90aW9uIiwiUmVwb3J0MiIsIlRvb2xzIiwiU2V0dXAiLCJLaXRjaGVuRGlzcGxheSIsIk91dGxldHMiLCJJbnZlbnRvcnkiLCJTZXJ2aWNlIiwiQmlyIiwiUmVwb3J0IiwiQWRqdXN0bWVudCIsIkdsb2JhbEVkaXRvciIsIkFjdGl2aXR5IiwiUGF5bWVudCIsIlByb2R1Y3RzIiwiU2hpZnQiLCJEZWJ0IiwiQWNjb3VudGluZyIsIlRyZWF0bWVudCIsIkNvbnRhY3RzIiwiTWFudWZhY3R1cmUiLCJEZXZlbG9wZXJUb29scyIsIk9yZGVycyIsIkNoYXJ0IiwiTWFya2V0cGxhY2UiLCJVc2VycyIsIkNhbGVuZGFyIiwiUGF5bWVudEVkaXRvciIsIkFkanVzdG1lbnRFZGl0b3IiLCJTaGlmdENyZWF0ZSIsIkRlYnRDcmVhdGUiLCJNYW51ZmFjdHVyZUNyZWF0ZSIsIlN1YnNjcmlwdGlvbiIsIkJ1eSIsIlJlcG9ydEFkdmFuY2VkIiwiQ29udGFjdHNDcmVhdGUiLCJJbnZlbnRvcnlFZGl0b3IiLCJPdXRsZXRzQ3JlYXRlIiwiU2VsbCIsIkFjY291bnRpbmdDcmVhdGUiLCJQcm9kdWN0c0NyZWF0ZSIsIlByb21vdGlvbkNyZWF0ZSIsIk5vdGlmaWNhdGlvbiIsIkRlbGl2ZXJ5IiwiVHJlYXRtZW50Q3JlYXRlIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiSnVybmFsIiwiVXNlcnNDcmVhdGUiLCJTZXR1cENyZWF0ZSIsIlRyZWF0bWVudEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiU2hpZnRFZGl0b3IiLCJQcm9tb3Rpb25FZGl0b3IiLCJBZGp1c3RtZW50Q3JlYXRlIiwiU2V0dXBFZGl0b3IiLCJTZWxsRGVsZXRlIiwiVXNlcnNFZGl0b3IiLCJPdXRsZXRzRWRpdG9yIiwiRGVsaXZlcnlFZGl0b3IiLCJQcm9maXQiLCJBY2NvdW50aW5nRWRpdG9yIiwiRXN0aW1hdGVEZWxldGUiLCJCdXlEZWxldGUiLCJNYW51ZmFjdHVyZUVkaXRvciIsIkNvbnRhY3RzRWRpdG9yIiwiRGVidEVkaXRvciIsIlByb2R1Y3RzRWRpdG9yIiwiVHJlYXRtZW50RGVsZXRlIiwiU2V0dXBEZWxldGUiLCJQYXltZW50RGVsZXRlIiwiRGF0ZUVkaXRvciIsIkFjY291bnRpbmdEZWxldGUiLCJTZWxsRWRpdG9yIiwiRGVidERlbGV0ZSIsIkludmVudG9yeVByb2R1Y3RDb3VudCIsIlByb21vdGlvbkRlbGV0ZSIsIk91dGxldHNEZWxldGUiLCJDb250YWN0c0RlbGV0ZSIsIk1hbnVmYWN0dXJlRGVsZXRlIiwiQWRqdXN0bWVudERlbGV0ZSIsIkRlbGl2ZXJ5RGVsZXRlIiwiU2hpZnREZWxldGUiLCJVc2Vyc0RlbGV0ZSIsIkJ1eUVkaXRvciIsIlByb2R1Y3RzRGVsZXRlIiwiV2ViaG9va1NldHVwIiwiR3JvdXBzIiwiV2ViaG9va0NvbmZpZ3VyYXRpb25WaWV3IiwiUGF5bWVudENyZWF0ZSIsIkxveWFsdHlQb2ludEVkaXRvciIsIk51bWJlckVkaXRvciIsIkNvc3QiLCJUcmVhdG1lbnRJbmNlbnRpdmUiLCJQcm9tb3Rpb25Db3Vwb24iLCJJbWFnZUVkaXRvciIsIlNoYXJlUGFja2FnZUVkaXRvciIsIkRldmVsb3BlclNldHVwIiwiQWNjb3VudGluZ0xlZGdlciIsIkRlbGl2ZXJ5Q3JlYXRlIiwiU2FsZXNtYW5FZGl0b3IiLCJSZXR1cm4iLCJEZWxpdmVyeURhdGVFZGl0b3IiLCJUcmVhdG1lbnROb3RlIiwiUHJpY2Vib29rIiwiRXhwZW5zZSIsIkRpc2NvdW50IiwiRGVsaXZlcnlSZWNlaXZlciIsIlVuaXRQcmljZUVkaXRvciIsIkJ1bmRsaW5nUHJpY2UiLCJEYXNoYm9hcmQiLCJEb2N0b3IiLCJFeHBvcnQiLCJNb25leSIsIlNlYXJjaCIsIkJlc3RTZWxsZXIiLCJUb3BDdXN0b21lcnMiLCJBdXRob3JpemF0aW9uS2V5IiwiTW9uaXRvciIsIlB1cmNoYXNlT3JkZXIiLCJTYWxlc1RyYW5zYWN0aW9uIiwiU2hpcHBpbmdFZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiQWNjb3VudGluZ0Nhc2hiYWxhbmNlIiwiRGVsZXRlQWxsT3V0bGV0UHJpY2UiLCJBZGp1c3RtZW50QXBwcm92YWwiLCJCdXlEYXRlRWRpdG9yIiwiUXVhbnRpdHkiLCJSZWN1cnJpbmciLCJQcmljZWJvb2tTZWxlY3RvciJdLCJleHAiOjE2MTEzNzA5MTUsImlzcyI6ImNocmlzdG9waGVyLmRlYWxwb3MubmV0IiwiYXVkIjoiY2hyaXN0b3BoZXIuZGVhbHBvcy5uZXQifQ.Zie2cYtqg4xmssBWFC6h6v_XAYSZrtdv22vL8npHdy0
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
                x-examples:
                  example-1:
                    Message: >-
                      The USER associated with the email address
                      (guivanovincent13@gmail.com) could not be found. Please
                      use your current username and password and assign your
                      email.
                    StackTrace: '   at POS.BLL.JWT.BrowserAuthProcessor.AuthenticateUserByGoogleIDToken...'
              example:
                Message: >-
                  The USER associated with the email address
                  (guivanovincent13@gmail.com) could not be found. Please use
                  your current username and password and assign your email.
                StackTrace: '   at POS.BLL.JWT.BrowserAuthProcessor.AuthenticateUserByGoogleIDToken...'
      security: []
      x-codegen-request-body-name: body
  /Token/TOTP:
    post:
      tags:
        - Deprecated API
      summary: Get Token by TOTP Code (Coming Soon)
      description: Get Oauth 2.0 token to access our API using TOTP
      operationId: validate-totp
      requestBody:
        description: Get Token from User Name and API Client Secret
        content:
          application/json:
            schema:
              type: object
              properties:
                UserID:
                  type: string
                  description: Username
                TOTPCode:
                  type: string
                  description: OTP genarated from authenticator app
              x-examples:
                example-1:
                  IDToken: >-
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjIwOWMwNTdkM2JkZDhjMDhmMmQ1NzM5Nzg4NjMyNjczZjdjNjI0MGYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiNDEyNDY1MTY1MTk0LTJ0Z2RvYWlqYTZwYjN1NDd2dG9yYXZtaGxpYzdtdDQ0LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiNDEyNDY1MTY1MTk0LTJ0Z2RvYWlqYTZwYjN1NDd2dG9yYXZtaGxpYzdtdDQ0LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTEyNTg2Mzg0NTkxMDA1NjE2NjQ4IiwiZW1haWwiOiJndWl2YW5vdmluY2VudDEzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoiWWs2aDlzRDJ5Sm1SWF9sMGFESGNudyIsImlhdCI6MTY2MzY2MDM4MCwiZXhwIjoxNjYzNjYzOTgwfQ.F86Wqn4s-zOXGQAOEhN0YPWRs8aEAivMmeYt0W9RgLrD4Oe8aX1AyohI9JbKdFpy2hRWNPYX_jMXXccDGDYLyuHCJb3J6XlvpbJQzXEbMxGuWLLjdvwD2grXtKdxxCBbTCinv5Css3jRWcr3Iy8Xccmj_sXx2YIBBty7i0oB69AzmJMhURQ2E4QA1KZBmQpuTcWKVo31vUR2uG1l6ZtcJPz-ci89t2hcYbY-SOH9Ldu7bD4LohN9Atmj_ToDeaGRFIT3QBlrXwyzL7PHnf4ntZx91vJthPaROmgnNakT71sUcPhdQPUstYNqquUqPVLs_dkpVUN9w00eUQE1vTmdOg
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                token_type: Bearer
                expires_in: 172800
                expiredAt: '2022-09-24T10:01:55.7638103'
                access_token: >-
                  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGVhbHBvcyIsIlVzZXJJRCI6ImZmNzg0OGM5LTIxZjEtNGMwNS1hYzllLTFlNzFkODI5Y2M5YyIsIlNhbGVzSUQiOiIzNzQxNmNiMy1lYjEyLTQ2MTItOTcwZC1hNTcyN2MxNDRlZjkiLCJMaXZlQ2hhdEVuYWJsZWQiOiJUcnVlIiwiVHlwZSI6IlN5c3RlbSIsImRhdGFEYXlzUmFuZ2UiOjAsIlNlc3Npb25JRCI6IjZiNjE1ZjdhLTM2N2QtNDAzNi04NDU0LTQzNTMwOGU4YTg1NyIsIkVtYWlsIjoibG9jYWxob3N0LmRlYWxwb3NAZ21haWwuY29tIiwiRW50aXR5QWNjZXNzSlNPTiI6Ilt7XCJlXCI6XCJhMzk4ZTU1MC0xMTJkLTRhOTgtOGUyZi0wM2RkMjc5Y2FiMGNcIixcImFcIjozfSx7XCJlXCI6XCI4N2I3ZWM0MC0xNjgxLTQ0ZWMtOWIzOS0wZjIxODhkOGQxOTdcIixcImFcIjozfSx7XCJlXCI6XCI5YWQxZDZmYy0yOGFlLTRmZjMtOWY2NC0xNDQyYjc2ZDUxMThcIixcImFcIjozfSx7XCJlXCI6XCIxNWJkNWY1OS00ODlmLTQ5OGQtOWNlMC0xNTdiZWI0MGUzMTFcIixcImFcIjozfSx7XCJlXCI6XCI2Yjc4MGVmZC01ZTlhLTQ5ODQtYmI3Zi0xZTY1ZmM3N2Q3NGRcIixcImFcIjozfSx7XCJlXCI6XCJmMDQ1MTg3NC01NWNmLTQ2YjgtYThiZC0yMGE1ZDFhZTQ0ZGFcIixcImFcIjozfSx7XCJlXCI6XCI4YzM4MGVlMi0zMzY0LTRmNTItYmM4Zi0yYjcwY2M2ZDgxZjVcIixcImFcIjozfSx7XCJlXCI6XCIzYWQxYTc3Yi02NzBkLTQ0MjMtYTI0Ni00NTExYjFmYzM4MmJcIixcImFcIjozfSx7XCJlXCI6XCJmMDI3OWJlNy01YTRkLTRkZWMtYTk3ZC00N2IyNTYwMzE1NTZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZhMDk0OC0wYmZlLTQzMWQtYWFmMS01MGEyZmM1NDJiYzVcIixcImFcIjozfSx7XCJlXCI6XCI2MmMzYjdhOS1kNDFjLTQ2MTUtOGY0My01NzJkOGZlNDc3OGJcIixcImFcIjozfSx7XCJlXCI6XCJlNzY0NTFlMy00MTM5LTQxZjAtYTNjYy02NDMyYzMzZDQ0Y2FcIixcImFcIjozfSx7XCJlXCI6XCJmMDUzZDhiNC1mYzZjLTRhMGMtYmM2NC02YWU0MzQ5ODg4YWVcIixcImFcIjozfSx7XCJlXCI6XCIyNzcxZDcxMS1lZmRhLTRhMTMtYjgwMy02YjcwZDgyZmE0YzZcIixcImFcIjozfSx7XCJlXCI6XCIzOWUxOThmOC02OWQxLTRjZjktOWFjOC02ZTg0N2YxNmY5YjhcIixcImFcIjozfSx7XCJlXCI6XCI1OTFlZGE4Ny1lNDUyLTQxZTYtOWZlOS03MjVjZjM4NjQ3NGFcIixcImFcIjozfSx7XCJlXCI6XCI2NjU0MjliOS00NTBmLTQ5NTMtYjY5My03YmJlYTI1YmQyYWFcIixcImFcIjozfSx7XCJlXCI6XCJiMTBkMjlkZi0zNTg4LTQzZTYtOGUzOS04Y2FiNDlhZjAzYWFcIixcImFcIjozfSx7XCJlXCI6XCJkYTg2ZWIxZS05OTQ1LTRkN2MtOGQwNC05NDNjMmQyN2U1NDFcIixcImFcIjozfSx7XCJlXCI6XCJhMWM4MTdkMS04YmVkLTQzYjItODJkNy05OTVhNDk0M2I5ZjdcIixcImFcIjozfSx7XCJlXCI6XCJhZThkZWM3Yi05YmM2LTRlNDctOTViNC1hN2YxMjk1OWFhZjlcIixcImFcIjozfSx7XCJlXCI6XCJiZGQzMTU4My1jNWNhLTQ1NjYtODE2Yy1hOTEwNzVhNThjNDdcIixcImFcIjozfSx7XCJlXCI6XCIzOTFjZGIyNi1hMGFiLTQ0NTMtYjFjZi1hOWIxNjc5YjRkNzRcIixcImFcIjozfSx7XCJlXCI6XCJmNjA2YzE5YS0zZjc3LTQxOTgtODJkMy1hYTYyODBhZWI1MTRcIixcImFcIjozfSx7XCJlXCI6XCI1OWMwZjBmZi1mYWM1LTRlYzctYjkzNS1iMjdlZDI3YmU0MDJcIixcImFcIjozfSx7XCJlXCI6XCIyMjNkODJjMy04YmFhLTQyM2MtOTc1My1iM2MwYWNhODU4OThcIixcImFcIjozfSx7XCJlXCI6XCJiYTNmNTRjZC04Y2Q4LTQ1MGItOTFlNS1iNjI4YmRiOGFhODRcIixcImFcIjozfSx7XCJlXCI6XCJlMTYzMmEzNi1iNDU0LTRlNzktOTEzYS1iZTViYzc0YTc3YjZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZiZTQ2ZC1kMDE4LTRmZjAtYmEwMC1jNGZlY2VlYmUyMjVcIixcImFcIjozfSx7XCJlXCI6XCJjOTMzYjIwNS1lMzk0LTRhNTEtOTkwYS1jNTNhODljMmYyNmVcIixcImFcIjozfSx7XCJlXCI6XCI3NjYxZTYxOC1iYTY5LTQ5NTUtODFmMS1jOGVkYmQ1ZDU2ZDJcIixcImFcIjozfSx7XCJlXCI6XCJiMWZkOGMyMy1lZTRjLTRmYzMtOGVjMS1kNWM4MmE4YzdiMjdcIixcImFcIjozfSx7XCJlXCI6XCJmOTg4YzM0Yy0yNGVkLTRmNWEtOWMyNy1lOTMzNWU0YmZmNjBcIixcImFcIjozfSx7XCJlXCI6XCJmY2FhN2YxYi1hMzM0LTQ0NjAtODIxMy1lOTk5ZjM4NGUzMDlcIixcImFcIjozfSx7XCJlXCI6XCJjMzVjOGNjZS0xMWZlLTQyZmItOTY3Ni1mMzJkMmQxYWQ3M2NcIixcImFcIjozfSx7XCJlXCI6XCIwZThiYWFiOS0xOGI1LTRhM2EtYWExMi1mYjdjMjc3MzIwOWVcIixcImFcIjozfV0iLCJFbnRpdHlBY2Nlc3NTdG9yYWdlIjoiSldUVG9rZW4iLCJTdG9yZU5hbWUiOiJIZW5kcnkiLCJJc0F1dGhlbnRpY2F0ZWQiOiJ0cnVlIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIkVzdGltYXRlIiwiRXN0aW1hdGVFZGl0b3IiLCJDdXN0b21lckRpc3BsYXkiLCJQcm9maWxlIiwiUHJvbW90aW9uIiwiUmVwb3J0MiIsIlRvb2xzIiwiU2V0dXAiLCJLaXRjaGVuRGlzcGxheSIsIk91dGxldHMiLCJJbnZlbnRvcnkiLCJTZXJ2aWNlIiwiQmlyIiwiUmVwb3J0IiwiQWRqdXN0bWVudCIsIkdsb2JhbEVkaXRvciIsIkFjdGl2aXR5IiwiUGF5bWVudCIsIlByb2R1Y3RzIiwiU2hpZnQiLCJEZWJ0IiwiQWNjb3VudGluZyIsIlRyZWF0bWVudCIsIkNvbnRhY3RzIiwiTWFudWZhY3R1cmUiLCJEZXZlbG9wZXJUb29scyIsIk9yZGVycyIsIkNoYXJ0IiwiTWFya2V0cGxhY2UiLCJVc2VycyIsIkNhbGVuZGFyIiwiUGF5bWVudEVkaXRvciIsIkFkanVzdG1lbnRFZGl0b3IiLCJTaGlmdENyZWF0ZSIsIkRlYnRDcmVhdGUiLCJNYW51ZmFjdHVyZUNyZWF0ZSIsIlN1YnNjcmlwdGlvbiIsIkJ1eSIsIlJlcG9ydEFkdmFuY2VkIiwiQ29udGFjdHNDcmVhdGUiLCJJbnZlbnRvcnlFZGl0b3IiLCJPdXRsZXRzQ3JlYXRlIiwiU2VsbCIsIkFjY291bnRpbmdDcmVhdGUiLCJQcm9kdWN0c0NyZWF0ZSIsIlByb21vdGlvbkNyZWF0ZSIsIk5vdGlmaWNhdGlvbiIsIkRlbGl2ZXJ5IiwiVHJlYXRtZW50Q3JlYXRlIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiSnVybmFsIiwiVXNlcnNDcmVhdGUiLCJTZXR1cENyZWF0ZSIsIlRyZWF0bWVudEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiU2hpZnRFZGl0b3IiLCJQcm9tb3Rpb25FZGl0b3IiLCJBZGp1c3RtZW50Q3JlYXRlIiwiU2V0dXBFZGl0b3IiLCJTZWxsRGVsZXRlIiwiVXNlcnNFZGl0b3IiLCJPdXRsZXRzRWRpdG9yIiwiRGVsaXZlcnlFZGl0b3IiLCJQcm9maXQiLCJBY2NvdW50aW5nRWRpdG9yIiwiRXN0aW1hdGVEZWxldGUiLCJCdXlEZWxldGUiLCJNYW51ZmFjdHVyZUVkaXRvciIsIkNvbnRhY3RzRWRpdG9yIiwiRGVidEVkaXRvciIsIlByb2R1Y3RzRWRpdG9yIiwiVHJlYXRtZW50RGVsZXRlIiwiU2V0dXBEZWxldGUiLCJQYXltZW50RGVsZXRlIiwiRGF0ZUVkaXRvciIsIkFjY291bnRpbmdEZWxldGUiLCJTZWxsRWRpdG9yIiwiRGVidERlbGV0ZSIsIkludmVudG9yeVByb2R1Y3RDb3VudCIsIlByb21vdGlvbkRlbGV0ZSIsIk91dGxldHNEZWxldGUiLCJDb250YWN0c0RlbGV0ZSIsIk1hbnVmYWN0dXJlRGVsZXRlIiwiQWRqdXN0bWVudERlbGV0ZSIsIkRlbGl2ZXJ5RGVsZXRlIiwiU2hpZnREZWxldGUiLCJVc2Vyc0RlbGV0ZSIsIkJ1eUVkaXRvciIsIlByb2R1Y3RzRGVsZXRlIiwiV2ViaG9va1NldHVwIiwiR3JvdXBzIiwiV2ViaG9va0NvbmZpZ3VyYXRpb25WaWV3IiwiUGF5bWVudENyZWF0ZSIsIkxveWFsdHlQb2ludEVkaXRvciIsIk51bWJlckVkaXRvciIsIkNvc3QiLCJUcmVhdG1lbnRJbmNlbnRpdmUiLCJQcm9tb3Rpb25Db3Vwb24iLCJJbWFnZUVkaXRvciIsIlNoYXJlUGFja2FnZUVkaXRvciIsIkRldmVsb3BlclNldHVwIiwiQWNjb3VudGluZ0xlZGdlciIsIkRlbGl2ZXJ5Q3JlYXRlIiwiU2FsZXNtYW5FZGl0b3IiLCJSZXR1cm4iLCJEZWxpdmVyeURhdGVFZGl0b3IiLCJUcmVhdG1lbnROb3RlIiwiUHJpY2Vib29rIiwiRXhwZW5zZSIsIkRpc2NvdW50IiwiRGVsaXZlcnlSZWNlaXZlciIsIlVuaXRQcmljZUVkaXRvciIsIkJ1bmRsaW5nUHJpY2UiLCJEYXNoYm9hcmQiLCJEb2N0b3IiLCJFeHBvcnQiLCJNb25leSIsIlNlYXJjaCIsIkJlc3RTZWxsZXIiLCJUb3BDdXN0b21lcnMiLCJBdXRob3JpemF0aW9uS2V5IiwiTW9uaXRvciIsIlB1cmNoYXNlT3JkZXIiLCJTYWxlc1RyYW5zYWN0aW9uIiwiU2hpcHBpbmdFZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiQWNjb3VudGluZ0Nhc2hiYWxhbmNlIiwiRGVsZXRlQWxsT3V0bGV0UHJpY2UiLCJBZGp1c3RtZW50QXBwcm92YWwiLCJCdXlEYXRlRWRpdG9yIiwiUXVhbnRpdHkiLCJSZWN1cnJpbmciLCJQcmljZWJvb2tTZWxlY3RvciJdLCJleHAiOjE2MTEzNzA5MTUsImlzcyI6ImNocmlzdG9waGVyLmRlYWxwb3MubmV0IiwiYXVkIjoiY2hyaXN0b3BoZXIuZGVhbHBvcy5uZXQifQ.Zie2cYtqg4xmssBWFC6h6v_XAYSZrtdv22vL8npHdy0
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
                x-examples:
                  example-1:
                    Message: >-
                      The USER associated with the email address
                      (guivanovincent13@gmail.com) could not be found. Please
                      use your current username and password and assign your
                      email.
                    StackTrace: '   at POS.BLL.JWT.BrowserAuthProcessor.AuthenticateUserByGoogleIDToken...'
              example:
                Message: >-
                  The USER associated with the email address
                  (guivanovincent13@gmail.com) could not be found. Please use
                  your current username and password and assign your email.
                StackTrace: '   at POS.BLL.JWT.BrowserAuthProcessor.AuthenticateUserByGoogleIDToken...'
      security: []
      x-codegen-request-body-name: body
  /Shift:
    get:
      operationId: GetShiftList
      tags:
        - Shift
      summary: Get List Of Shifts
      description: 'Required Group Role: "**Shift**" - "**VIEW**"'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                From:
                  type: string
                  description: Date From result of shift list shown
                To:
                  type: string
                  description: Date To result of shift list shown
                PageNumber:
                  type: integer
                  description: Number of page begin
                PageSize:
                  type: integer
                  description: The size of one page. Max=500
            example:
              Outlet: Outlet1
              From: '2020-05-28'
              To: '2020-05-29'
              PageNumber: 1
              PageSize: 10
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Open:
                      type: string
                      description: Opening date and time of the shift
                    Close:
                      type: string
                      description: closing date and time of the shift
                    Cashier:
                      type: string
                      description: the name of the cashier that open the shift
                    Number:
                      type: string
                      description: Shift Number
                    SalesNTax:
                      type: number
                      description: total sales that was created on sales shift
                    TotalInvoice:
                      type: integer
                      description: total invoice was created on sales shift
                    Outlet:
                      type: string
                      description: outlet location of the shift
                    Register:
                      type: string
                      description: register information of the shift
                    Visitors:
                      type: integer
                      description: total visitor during sales shift
              example:
                - Open: '2020-05-28T15:24:45.293'
                  Close: '2020-05-28T15:25:27.68'
                  Cashier: dealpos
                  Number: 20.05.0001
                  SalesNTax: 16062.75
                  TotalInvoice: 1
                  Outlet: Outlet1
                  Register: Outlet1
                  Visitors: 10
                - Open: '2020-05-29T15:24:05.13'
                  Close: '2020-05-29T15:24:15.887'
                  Cashier: dealpos
                  Number: 20.05.0002
                  SalesNTax: 15000
                  TotalInvoice: 1
                  Outlet: Outlet1
                  Register: Outlet1
                  Visitors: 10
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
    put:
      operationId: CloseShift
      tags:
        - Shift
      summary: Close register/end shift
      description: 'Required Group Role: "**Shift**" - "**VIEW**"'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Register:
                  type: string
                  description: Register Name
            example:
              Register: Outlet1
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Number:
                      type: string
                      description: Shift Number
                    Sales:
                      type: integer
                      description: Total Sales that was created on sales shift
                    Tax:
                      type: integer
                      description: Total Tax Sales
                    Start:
                      type: string
                      description: Opening date and time of the shift
                    End:
                      type: string
                      description: closing date and time of the shift
              example:
                - Number: OLT1/21/12/0010
                  Sales: 60000
                  Tax: 2000
                  Start: '2021-12-15T14:09:06.567'
                  End: '2021-12-15T14:09:13.8907518+07:00'
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The register is not in the outlet list
                StackTrace: '   at POS.WEB.Controllers.v3.ShiftController.Put(JsonElement request) in D:\PROJECT\POS\src\POS.WEB\Controllers\v3\ShiftController.cs:line 336'
      x-codegen-request-body-name: body
    post:
      operationId: OpenShift
      tags:
        - Shift
      summary: Open Shift
      description: 'Required Group Role: "**Shift**" - "**VIEW**"'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Register:
                  type: string
                  description: Register Name
                OpAmount:
                  type: integer
                  description: Opening Cash
            example:
              Register: Outlet1
              OpAmount: 100000
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Shift success created
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: The register is not in the outlet list
                StackTrace: '   at POS.WEB.Controllers.v3.ShiftController.Post(JsonElement request) in D:\PROJECT\POS\src\POS.WEB\Controllers\v3\ShiftController.cs:line 66'
      x-codegen-request-body-name: body
    delete:
      operationId: DeleteShift
      tags:
        - Shift
      summary: Delete Shift
      description: |-
        Delete Previous Shift Invoice

        You must have "**Delete**" role in "**Shift**" Module
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Shift Number
            example:
              Outlet: Outlet1
              Number: 21.12.00007
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Shift 22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been deleted!
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is No Shift with Number 21.12.00007 - at Outlet2
      x-codegen-request-body-name: body
  /Shift/InvoiceDetail:
    get:
      operationId: GetShiftInvoiceDetail
      tags:
        - Shift
      summary: Get Shift Invoice Detail
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**



        <br>

        Get Shift Invoice Detail


        Required Group Role: "**Shift**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Register:
                  type: string
                  description: Register Name based on its Outlet
                Number:
                  type: string
                  description: Invoice Number of the transaction
                PageNumber:
                  type: integer
                  description: Page Number per-shift detail
                  x-stoplight:
                    id: hh1qx93svjsng
                PageSize:
                  type: integer
                  description: The size of one page. (default = 100) Max=500
            example:
              Register: Outlet1
              Number: 21.03.00115
              PageNumber: 1
              PageSize: 100
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    description: Array of data
                    items:
                      $ref: '#/components/schemas/ShiftDetail'
                  TotalRow:
                    type: integer
                    description: Total row of the data (invoice)
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 21.03.00115
                    Date: '2021-03-09T00:00:00'
                    Tag: Offline
                    Created: '2021-03-08T16:41:39.777'
                    DueDate: '0001-01-01T00:00:00'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 096abbe9-2bd5-412e-b6a8-47bbcc692185
                    Gross: 280000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    Sales: 280000
                    SalesNTax: 280000
                    Surcharge: 0
                    Customer:
                      Name: Hendry Wijaya
                      Email: Hendry@dealpos.com
                      Phone: '02165498468'
                      Mobile: '081514515156'
                      Code: HW021
                      ID: fdab116e-f6ae-4499-81b5-53f554fd7f4a
                    Variants:
                      - Name: Cardigan (L)
                        Code: 1315L
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 87289.13
                        Price: 280000
                        PriceOriginal: 280000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 280000
                        PriceTypeID: 0
                        Note: ''
                    Payments:
                      - Date: '2021-03-09T00:00:00'
                        Amount: 280000
                        Method: Cash
                        Code: ''
                        Note: ''
                    Void: 'No'
                    Bin: false
                    ReferenceInvoiceNumber: 21.03.00114
                  - Outlet: Outlet1
                    Number: 21.03.00116
                    Date: '2021-03-08T00:00:00'
                    Tag: Online
                    Created: '2021-03-08T16:38:06.717'
                    DueDate: '0001-01-01T00:00:00'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 1c10bcff-c741-413e-ad09-8515e0961108
                    Gross: 280000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    TaxRate: 0
                    Sales: 280000
                    SalesNTax: 280000
                    Surcharge: 0
                    Customer:
                      Name: Hendry Wijaya
                      Code: HW021
                      Email: Hendry@dealpos.com
                      Mobile: '081514515156'
                      Address: Jl. Muara Karang No. 1
                    Variants:
                      - Name: Cardigan (XL)
                        Code: 1315XL
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 60000
                        Price: 280000
                        PriceOriginal: 280000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 280000
                        PriceTypeID: 0
                        Note: ''
                    Payments:
                      - Date: '2021-03-08T00:00:00'
                        Amount: 280000
                        Method: Cash
                        Code: null
                        Note: null
                    Void: 'No'
                    Bin: false
                    ReferenceInvoiceNumber: ''
                TotalRow: 2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Shift/InvoiceDetailWithNote:
    get:
      operationId: GetShiftInvoiceDetailWithNote
      tags:
        - Shift
      summary: Get Shift Invoice Detail With Note
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**



        <br>

        Get Shift Invoice Detail with Note
      requestBody:
        content:
          application/json:
            schema:
              required:
                - NoteVisible
                - Number
                - Register
              type: object
              properties:
                Register:
                  type: string
                Number:
                  type: string
                PageNumber:
                  type: integer
                  description: Page Number per-shift detail
                  x-stoplight:
                    id: wo20mzqwd6ta3
                PageSize:
                  type: integer
                  description: The size of one page. (default = 100) Max=500
                  x-stoplight:
                    id: kl53yo5tgevej
                NoteVisible:
                  type: boolean
                  description: Must be sent the object property to show note in response
            example:
              Register: Outlet1
              Number: 21.03.00115
              PageNumber: 1
              PageSize: 100
              NoteVisible: true
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    description: Array of data
                    items:
                      $ref: '#/components/schemas/ShiftDetail'
                  TotalRow:
                    type: integer
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 21.03.00115
                    Date: '2021-03-09T00:00:00'
                    Tag: Offline
                    Created: '2021-03-08T16:41:39.777'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 096abbe9-2bd5-412e-b6a8-47bbcc692185
                    Gross: 280000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    TaxRate: 0
                    Sales: 280000
                    SalesNTax: 280000
                    Surcharge: 0
                    Note: Invoice Note
                    Customer:
                      Name: Hendry Wijaya
                      Code: HW021
                      Email: Hendry@dealpos.com
                      Mobile: '081514515156'
                      Address: Jl. Muara Karang No. 1
                    Variants:
                      - Name: Cardigan (L)
                        Code: 1315L
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 87289.13
                        Price: 280000
                        PriceOriginal: 280000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 280000
                        PriceTypeID: 0
                        Note: Paid
                    Payments:
                      - Date: '2021-03-09T00:00:00'
                        Amount: 280000
                        Method: Cash
                        Code: null
                        Note: null
                    Void: 'No'
                  - Outlet: Outlet1
                    Number: 21.03.00116
                    Date: '2021-03-08T00:00:00'
                    Tag: Online
                    Created: '2021-03-08T16:38:06.717'
                    Discount1: 0
                    Discount2: 0
                    DiscountAmount: 0
                    InvoiceID: 1c10bcff-c741-413e-ad09-8515e0961108
                    Gross: 280000
                    DiscountTotal: 0
                    TaxType: No Tax
                    TaxAmount: 0
                    Sales: 280000
                    SalesNTax: 280000
                    Surcharge: 0
                    Note: Invoice Note
                    Customer:
                      Name: Hendry Wijaya
                      Code: HW021
                      Email: Hendry@dealpos.com
                      Mobile: '081514515156'
                      Address: Jl. Muara Karang No. 1
                    Variants:
                      - Name: Cardigan (XL)
                        Code: 1315XL
                        Quantity: 1
                        UnitQuantity: 1
                        Cost: 60000
                        Price: 280000
                        PriceOriginal: 280000
                        Discount: 0
                        DiscountAmount: 0
                        Taxable: true
                        LoyaltyPoint: true
                        Expense: 0
                        NetPrice: 280000
                        PriceTypeID: 0
                        Note: ''
                    Payments:
                      - Date: '2021-03-08T00:00:00'
                        Amount: 280000
                        Method: Cash
                        Code: null
                        Note: null
                    Void: 'No'
                TotalRow: 2
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is not Register name offline or number 20.03.00002
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: Object reference not set to an instance of an object.
                StackTrace: '   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceInShift...'
      x-codegen-request-body-name: body
  /Shift/Number:
    get:
      operationId: GetShiftNumber
      tags:
        - Shift
      summary: Get Shift By Number
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**



        <br>

        Get Shift By Number


        Required Group Role: "**Shift**" - "**VIEW**"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Shift Number
            example:
              Outlet: Outlet1
              Number: 21.04.002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Open:
                    type: string
                    description: Opening Date time of shift
                  Close:
                    type: string
                    description: Closing date time of shift
                  Number:
                    type: string
                    description: shift number
                  Cashier:
                    type: string
                    description: Cashier assigned at the shift
                  Register:
                    type: string
                    description: register of the shift
                  TotalInvoice:
                    type: integer
                    description: Total invoice in the shift
                  SalesNTax:
                    type: integer
                    description: Total amount of whole transactions in shift
                  Visitor:
                    type: integer
                    description: Total visitor in shift
                  Invoice:
                    type: array
                    items:
                      type: object
                      properties:
                        Number:
                          type: string
                          description: Invoice number
                        Amount:
                          type: integer
                          description: Total amount invoice
                  Payments:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Payment method name
                        Start:
                          type: integer
                          description: Start balance
                        Received:
                          type: integer
                          description: Payment that get from all invoices happened
                        Expected:
                          type: integer
                          description: Start + received amount
                        Counted:
                          type: integer
                          description: Total cash in hand
              example:
                Open: 14 Apr 2021 10:19
                Close: 14 Apr 2021 10:19
                Number: 21.04.002
                Cashier: dealpos
                Register: Outlet1
                TotalInvoice: 2
                SalesNTax: 75000
                Visitor: 2
                Invoice:
                  - Number: 20.03.00039
                    Amount: 25000
                  - Number: 20.03.00027
                    Amount: 25000
                Payments:
                  - Name: Cash
                    Start: 25000
                    Received: 50000
                    Expected: 75000
                    Counted: 70000
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                  ExceptionMessage:
                    type: string
                  ExceptionType:
                    type: string
                  StackTrace:
                    type: string
              example:
                Message: An error has occurred.
                ExceptionMessage: >-
                  The parameterized query '(@Name
                  nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                  parameter '@Name', which was not supplied.
                ExceptionType: System.Data.SqlClient.SqlException
                StackTrace: '   at System.Data.SqlClient.SqlConnection....)'
      x-codegen-request-body-name: body
  /Report/ProductSold:
    get:
      operationId: GetProductSold
      tags:
        - Report
      summary: Get Product Sold
      description: >-
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Product Sold


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Request by Variant Code
                  required:
                    - From
                    - To
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: The outlet name
                    Category:
                      type: string
                      description: The product category
                    Code:
                      type: string
                      description: The variant code
                    Sales:
                      type: string
                      description: The sales person / employee
                    CustomerEmail:
                      type: string
                      description: The customer email
                    Tags:
                      type: string
                      description: The products tags
                    From:
                      type: string
                      description: The beginning of the date range
                    To:
                      type: string
                      description: The end of the date range
                  example:
                    Outlet: Outlet 1
                    Category: Shirt
                    Code: Shirt
                    Sales: Ferdi
                    CustomerEmail: yansen@dealpos.com
                    Tags: Summer
                    From: '2020-06-24'
                    To: '2020-06-24'
                - title: Request by OutletName
                  required:
                    - From
                    - To
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: The outlet name
                    Category:
                      type: string
                      description: The product category
                    Sales:
                      type: string
                      description: The sales person / employee
                    CustomerEmail:
                      type: string
                      description: The customer email
                    Tags:
                      type: string
                      description: The products tags
                    From:
                      type: string
                      description: The beginning of the date range
                    To:
                      type: string
                      description: The end of the date range
                  example:
                    Outlet: Outlet 1
                    Category: Shirt
                    Sales: Ferdi
                    CustomerEmail: yansen@dealpos.com
                    Tags: Summer
                    From: '2020-06-24'
                    To: '2020-06-24'
                - title: Request by OutletID
                  required:
                    - From
                    - To
                  type: object
                  properties:
                    OutletID:
                      type: string
                      description: The outlet ID
                    Category:
                      type: string
                      description: The product category
                    Sales:
                      type: string
                      description: The sales person / employee
                    CustomerEmail:
                      type: string
                      description: The customer email
                    Tags:
                      type: string
                      description: The products tags
                    From:
                      type: string
                      description: The beginning of the date range
                    To:
                      type: string
                      description: The end of the date range
                  example:
                    OutletID: 123e4567-e89b-12d3-a456-426614174000
                    Category: Shirt
                    Sales: Ferdi
                    CustomerEmail: yansen@dealpos.com
                    Tags: Summer
                    From: '2020-06-24'
                    To: '2020-06-24'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: Name of the Product
                    Code:
                      type: string
                      description: Code of the Product
                    Quantity:
                      type: integer
                      description: Total Quantity of the Product sold
                    Cost:
                      type: integer
                      description: Cost of the product
                    Sales:
                      type: integer
                      description: Sales of the product
                    Profit:
                      type: integer
                      description: Profit of the product transaction
              example:
                - Name: Baju Summer
                  Code: SummerShirt
                  Quantity: 12
                  Cost: 10000
                  Sales: 15000
                  Profit: 5000
                - Name: Baju Winter
                  Code: WinterShirt
                  Quantity: 15
                  Cost: 20000
                  Sales: 30000
                  Profit: 10000
      x-codegen-request-body-name: body
  /Report/InvoiceGroupByOutletNTag:
    get:
      operationId: GetSalesGroupByOutletTag
      tags:
        - Report
      summary: Get Sales Group by Outlet Tag
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Chart for Sales Transaction in omni.dealpos.app


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                From:
                  type: string
                To:
                  type: string
                Outlet:
                  type: array
                  items:
                    type: string
                Tag:
                  type: array
                  items:
                    type: string
            example:
              From: '2022-12-25'
              To: '2022-12-31'
              Outlet:
                - Outlet1
                - Outlet2
              Tag:
                - Shopee
                - Tokopedia
                - TikTok
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Tag:
                      type: string
                      description: Channel Tagging System
                    Date:
                      type: string
                      description: Transactions Date
                    Sum:
                      type: number
                      description: Total Amount invoice in date range period
                    Count:
                      type: integer
                      description: Total invoice in date range period
              example:
                - Outlet: Outlet1
                  Tag: Shopee
                  Date: '2023-03-10T00:00:00'
                  Sum: 450000
                  Count: 2
                - Outlet: Outlet1
                  Tag: Tokopedia
                  Date: '2023-03-10T00:00:00'
                  Sum: 550000
                  Count: 10
                - Outlet: Outlet2
                  Tag: Shopee
                  Date: '2023-03-10T00:00:00'
                  Sum: 4500000
                  Count: 22
                - Outlet: Outlet2
                  Tag: Tokopedia
                  Date: '2023-03-10T00:00:00'
                  Sum: 55000
                  Count: 1
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  Message: An error has occurred.
                  ExceptionMessage: >-
                    The parameterized query '(@Name
                    nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                    parameter '@Name', which was not supplied.
                  ExceptionType: System.Data.SqlClient.SqlException
                  StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Report/ProductSold/BySKUGroupDay:
    get:
      operationId: GetProductSalesBySKUGroupByDay
      tags:
        - Report
      summary: Get Product Sales by SKU Group by Day
      description: >
        >**Also available as [HTTP
        POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)
        with the same endpoint**


        <br>

        Get Quantity Product Sales by SKU Group by Day


        Required Group Role: "**Report**" - "**VIEW**" 
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Get by Variant.Code
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date
                    To:
                      type: string
                      description: To Date
                    Code:
                      type: string
                      description: Variant SKU
                  example:
                    Code: BAG01
                    From: '2023-02-28'
                    To: '2023-03-28'
                - title: Get by Variant.ID
                  type: object
                  properties:
                    From:
                      type: string
                      description: From Date
                    To:
                      type: string
                      description: To Date
                    ID:
                      type: string
                      description: Variant ID
                  example:
                    ID: 5c064c24-c40d-4912-9be6-1c06515d7032
                    From: '2023-02-28'
                    To: '2023-03-28'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Date:
                      type: string
                      description: Transaction Date
                    Quantity:
                      type: integer
                      description: Total Qty product sales in a day
              example:
                - Date: '2023-02-28'
                  Quantity: 10
                - Date: '2023-03-01 '
                  Quantity: 15
                - Date: '2023-03-05'
                  Quantity: 17
                - Date: '2023-03-09'
                  Quantity: 20
                - Date: '2023-03-14'
                  Quantity: 22
                - Date: '2023-03-18'
                  Quantity: 8
                - Date: '2023-03-21'
                  Quantity: 50
                - Date: '2023-03-27'
                  Quantity: 10
                - Date: '2023-03-28'
                  Quantity: 29
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Invalid token is inserted! Please check your profile page for
                  the valid token.
        '500':
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  Message: An error has occurred.
                  ExceptionMessage: >-
                    The parameterized query '(@Name
                    nvarchar(4000))GetProductCategoryIDByName @Name' expects the
                    parameter '@Name', which was not supplied.
                  ExceptionType: System.Data.SqlClient.SqlException
                  StackTrace: '   at System.Data.SqlClient.SqlConnection...)'
      x-codegen-request-body-name: body
  /Invoice/GetReferenceNumber:
    get:
      tags:
        - Invoice
      summary: Get Reference Number By Invoice ID
      description: Get List Reference Number by Invoice ID
      operationId: get-Invoice-GetReferenceNumber
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ListID:
                  type: array
                  description: Array of List Invoice ID
                  items:
                    type: string
            example:
              ListID:
                - 1e9c45af-9916-4131-a138-01ffd0ec1eba
                - 0b9657f4-5e12-4d4a-89d6-c104a55c6c49
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: ID of Invoice
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number that associated with a specific invoice issued to
                        a customer which gets from invoice Marketplace channel
              example:
                - ID: 1e9c45af-9916-4131-a138-01ffd0ec1eba
                  ReferenceNumber: TKPD-001
                - ID: 0b9657f4-5e12-4d4a-89d6-c104a55c6c49
                  ReferenceNumber: TKPD-002
      x-codegen-request-body-name: body
  /SalesOrder/GetReferenceNumber:
    get:
      tags:
        - Sales Order
      summary: Get Reference Number By Sales Order ID
      description: Get List of Reference Number By Sales Order ID
      operationId: get-SalesOrder-GetReferenceNumber
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ListID:
                  type: array
                  description: Array of List Sales Order ID
                  items:
                    type: string
            example:
              ListID:
                - 1e9c45af-9916-4131-a138-01ffd0ec1eba
                - 0b9657f4-5e12-4d4a-89d6-c104a55c6c49
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    ID:
                      type: string
                      description: ID of Sales Order
                    ReferenceNumber:
                      type: string
                      description: >-
                        Number that associated with a specific invoice issued to
                        a customer which gets from invoice Marketplace channel
              example:
                - ID: 1e9c45af-9916-4131-a138-01ffd0ec1eba
                  ReferenceNumber: TKPD-001
                - ID: 0b9657f4-5e12-4d4a-89d6-c104a55c6c49
                  ReferenceNumber: TKPD-002
      x-codegen-request-body-name: body
  /Serial:
    get:
      tags:
        - Serial
      summary: List Serial
      description: |-
        Return a list of Variant Serial (type is Serialized / Batch Number)

        Can be used to aggregate Serial Number from Multiple Outlets
      operationId: get-Serial
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                PageNumber:
                  type: integer
                  description: Page Number of Variant Serial List
                PageSize:
                  type: integer
                  description: The size of one page. Max=500
                ListOutlet:
                  type: array
                  description: >-
                    List of Outlet. (if filled with blank, it will show for all
                    outlet)
                  items:
                    type: string
                    x-stoplight:
                      id: 9np0qel11z0gb
            example:
              PageNumber: 1
              PageSize: 20
              ListOutlet:
                - Outlet1
                - Outlet2
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: Variant's Name
                    Code:
                      type: string
                      description: Variant Code
                    Serial:
                      type: array
                      items:
                        type: object
                        properties:
                          Number:
                            type: string
                            description: Serial Number
                          Quantity:
                            type: integer
                            description: >-
                              Quantity of Serial Number from outlet filter in
                              request payload 
                            x-stoplight:
                              id: 8h2v3e9ka8egt
              example:
                - Name: Iphone1
                  Code: IP1
                  Serial:
                    - Number: S001
                      Quantity: 2
                    - Number: S002
                      Quantity: 5
                - Name: Iphone2
                  Code: IP2
                  Serial:
                    - Number: X001
                      Quantity: 2
                    - Number: X002
                      Quantity: 5
      x-codegen-request-body-name: body
  /Serial/byVariantCode:
    get:
      tags:
        - Serial
      summary: Get Serial By Variant Code
      description: Get Variant with Type Serialized by Variant Code for specific variant
      operationId: get-Variant-Serialized
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Code:
                  type: string
                  description: Variant Code
            example:
              Outlet: MK
              Code: SM-001
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Serial:
                      type: array
                      items:
                        type: object
                        properties:
                          Number:
                            type: string
                            description: Serial Number in Variant Code
                            x-stoplight:
                              id: jkh4zeb24krhq
                          Quantity:
                            type: integer
                            description: 'Quantity of Serialized '
                            x-stoplight:
                              id: tb7j4gletq5q7
                        x-stoplight:
                          id: hscz0qjtz5z3d
              example:
                - Outlet: MK
                  Serial:
                    - Number: S001
                      Quantity: 2
                    - Number: S002
                      Quantity: 5
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
              example:
                Message: 'Variant Code ABC is not type Serialized '
      x-codegen-request-body-name: body
  /Estimate/ConvertToSalesOrder:
    put:
      tags:
        - Estimate
      summary: Convert To Sales Order
      description: Convert Estimate to Sales Order
      operationId: put-Estimate-ConvertToSalesOrder
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Estimate Number
                OrderNumber:
                  type: string
                  description: >-
                    Sales Order Number. If the value with null, it will set with
                    number the generate from system
            example:
              Outlet: Outlet1
              Number: 23.03.0003
              OrderNumber: 23.03.0003
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of Sales Order created
              example:
                ID: ea11903e-d396-44f4-8bb8-185cbaead18c
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              examples:
                EstimateNumberNotFound:
                  value:
                    Message: Estimate number 23.03.0004 not found
                OrderNumber conflict:
                  value:
                    Message: SalesOrder number 23.03.0004 already exist
      x-codegen-request-body-name: body
  /Estimate/ConvertToInvoice:
    put:
      tags:
        - Estimate
      summary: Convert To Invoice
      description: 'Convert Estimate to Invoice '
      operationId: put-Estimate-ConvertToInvoice
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: without OrderNumber
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Estimate Number
                    OrderNumber:
                      type: string
                      description: >-
                        Invoice Number. If the value with null, it will set with
                        number the generate from system
                      x-stoplight:
                        id: evjcghki76aaa
                  example:
                    Outlet: Outlet1
                    Number: 23.03.0003
                - title: with OrderNumber
                  required:
                    - Number
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Estimate Number
                    OrderNumber:
                      type: string
                      description: >-
                        Invoice Number. If the value with null, it will set with
                        number the generate from system
                      x-stoplight:
                        id: evjcghki76aaa
              example:
                Outlet: Outlet1
                Number: 23.03.0003
                OrderNumber: 23.03.0003
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: ID of Invoice Created
              example:
                ID: ea11903e-d396-44f4-8bb8-185cbaead18c
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              examples:
                Estimate Number not Found:
                  value:
                    Message: Estimate number 23.03.0004 not found
                Order Number Conflict:
                  value:
                    Message: Invoice number 23.03.0004 already exist
      x-codegen-request-body-name: body
  /Payment/Midtrans/Charge:
    post:
      tags:
        - Midtrans Payment Gateway
      summary: Generate QRIS
      description: >-
        Generate QRIS for specified Invoice

        When the QR has been paid, an Invoice Payment is automatically added to
        the Invoice


        Note:<br>

        If you require custom amount for your QR you can also directly use
        Midtrans API

        https://docs.midtrans.com/reference/qris
      operationId: get-Payment-Midtrans-Charge
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Invoice Number
                NotificationURL:
                  type: string
                  description: >-
                    Notification sent from our server after the QR has been paid
                    (Coming Soon)
                  x-stoplight:
                    id: 8i1xqzw0zvbj3
            example:
              Outlet: Pluit
              Number: 2023.09.00001
              NotificationURL: https://domain.com/api/paymentnotification/gopay
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Transaction_id:
                    type: string
                  Url:
                    type: string
              example:
                Transaction_id: 260b81c6-8244-404e-97a7-91ed24cbf58d
                Url: >-
                  https://api.midtrans.com/v2/qris/260b81c6-8244-404e-97a7-91ed24cbf58d/qr-code
      x-stoplight:
        id: zp9fbymgjub2a
      x-codegen-request-body-name: body
  /Payment/Midtrans/Status:
    post:
      tags:
        - Midtrans Payment Gateway
      summary: Get Transaction Status
      description: |-
        Wrapper for https://docs.midtrans.com/reference/get-transaction-status
        https://docs.midtrans.com/reference/get-transaction-status
      operationId: get-Payment-Midtrans-Status
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Transaction_id:
                  type: string
              example:
                Transaction_id: 260b81c6-8244-404e-97a7-91ed24cbf58d
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  transaction_type:
                    type: string
                  transaction_time:
                    type: string
                  transaction_status:
                    type: string
                  transaction_id:
                    type: string
                  status_message:
                    type: string
                  status_code:
                    type: string
                  signature_key:
                    type: string
                  settlement_time:
                    type: string
                  payment_type:
                    type: string
                  order_id:
                    type: string
                  merchant_id:
                    type: string
                  issuer:
                    type: string
                  gross_amount:
                    type: string
                  fraud_status:
                    type: string
                  expiry_time:
                    type: string
                  custom_field2:
                    type: string
                  custom_field1:
                    type: string
                  currency:
                    type: string
                  acquirer:
                    type: string
                example:
                  transaction_type: off-us
                  transaction_time: '2023-08-31 10:53:59'
                  transaction_status: settlement
                  transaction_id: 4c4f9fc0-abdf-4242-a2d5-9c90437d0dbd
                  status_message: midtrans payment notification
                  status_code: 200
                  signature_key: >-
                    a2515dad47fc2c00b01f14995d6d603843857b77de9786ca91eb0c7743728968d0ebca1b4bccd455b57c36594e0cebf3524a960cb000a6ec90153cc2c1ec27ec
                  settlement_time: '2023-08-31 10:54:10'
                  payment_type: qris
                  order_id: 23.08.00030
                  merchant_id: G668581401
                  issuer: DANA
                  gross_amount: 1000
                  fraud_status: accept
                  expiry_time: '2023-08-31 11:08:59'
                  custom_field2: nelsenlim.dealpos.net
                  custom_field1: 410ba2b7-8eff-4759-b5f1-cf47b33ef1cc
                  currency: IDR
                  acquirer: gopay
      x-stoplight:
        id: xhw8ndd2vi40c
      x-codegen-request-body-name: body
  /Outlet/Register:
    get:
      tags:
        - Outlet
      summary: Get Register by Outlet
      description: |
        Get Register List by Outlet
      operationId: get-Outlet-Register
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - title: Single Outlet
                  required:
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: >-
                        The outlet name. If filled in with blank value it will
                        display registers from all outlet.
                  example:
                    Outlet: Outlet1
                - title: All Outlet
                  required:
                    - Outlet
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: >-
                        The outlet name. If filled in with blank value it will
                        display registers from all outlet.
                  example:
                    Outlet: ''
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: The outlet name.
                    Register:
                      type: array
                      description: The register name from the requested outlet
                      items:
                        type: string
              examples:
                singleOutletExample:
                  summary: Single Outlet Example
                  value:
                    - Outlet: Outlet1
                      Register:
                        - Register1
                        - Register2
                multipleOutletExample:
                  summary: Multiple Outlet Example
                  value:
                    - Outlet: Outlet1
                      Register:
                        - Register1
                        - Register2
                    - Outlet: Outlet2
                      Register:
                        - Register1
                        - Register2
      x-stoplight:
        id: 9we1f0tw6qx4n
      x-codegen-request-body-name: body
  /Token/OAuth2:
    post:
      tags:
        - Token
      summary: Get Token by Client ID & Client Secret
      description: >-
        [Get Oauth 2.0 to access our API using ClientID and API Client
        Secret.](/guides/authentication)
      operationId: post-Token-OAuth2
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                  description: Guid of Client ID
                client_secret:
                  type: string
                  description: Guid of Client Secret
            example:
              client_id: 26337f8c-2874-46d4-a124-ddd6cf30e93d
              client_secret: 26337f8c-2874-46d4-a124-ddd6cf30e93d
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  token_type:
                    type: string
                    description: >-
                      Type of the token, typically "Bearer" for OAuth 2.0
                      authentication
                  expires_in:
                    type: integer
                    description: Token's validity duration in seconds (2 days in this case)
                  expiredAt:
                    type: string
                    description: The exact timestamp when the token expires
                  access_token:
                    type: string
                    description: The actual token used for authentication in API requests
              example:
                token_type: Bearer
                expires_in: 172800
                expiredAt: '2021-01-23T10:01:55.7638103'
                access_token: >-
                  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGVhbHBvcyIsIlVzZXJJRCI6ImZmNzg0OGM5LTIxZjEtNGMwNS1hYzllLTFlNzFkODI5Y2M5YyIsIlNhbGVzSUQiOiIzNzQxNmNiMy1lYjEyLTQ2MTItOTcwZC1hNTcyN2MxNDRlZjkiLCJMaXZlQ2hhdEVuYWJsZWQiOiJUcnVlIiwiVHlwZSI6IlN5c3RlbSIsImRhdGFEYXlzUmFuZ2UiOjAsIlNlc3Npb25JRCI6IjZiNjE1ZjdhLTM2N2QtNDAzNi04NDU0LTQzNTMwOGU4YTg1NyIsIkVtYWlsIjoibG9jYWxob3N0LmRlYWxwb3NAZ21haWwuY29tIiwiRW50aXR5QWNjZXNzSlNPTiI6Ilt7XCJlXCI6XCJhMzk4ZTU1MC0xMTJkLTRhOTgtOGUyZi0wM2RkMjc5Y2FiMGNcIixcImFcIjozfSx7XCJlXCI6XCI4N2I3ZWM0MC0xNjgxLTQ0ZWMtOWIzOS0wZjIxODhkOGQxOTdcIixcImFcIjozfSx7XCJlXCI6XCI5YWQxZDZmYy0yOGFlLTRmZjMtOWY2NC0xNDQyYjc2ZDUxMThcIixcImFcIjozfSx7XCJlXCI6XCIxNWJkNWY1OS00ODlmLTQ5OGQtOWNlMC0xNTdiZWI0MGUzMTFcIixcImFcIjozfSx7XCJlXCI6XCI2Yjc4MGVmZC01ZTlhLTQ5ODQtYmI3Zi0xZTY1ZmM3N2Q3NGRcIixcImFcIjozfSx7XCJlXCI6XCJmMDQ1MTg3NC01NWNmLTQ2YjgtYThiZC0yMGE1ZDFhZTQ0ZGFcIixcImFcIjozfSx7XCJlXCI6XCI4YzM4MGVlMi0zMzY0LTRmNTItYmM4Zi0yYjcwY2M2ZDgxZjVcIixcImFcIjozfSx7XCJlXCI6XCIzYWQxYTc3Yi02NzBkLTQ0MjMtYTI0Ni00NTExYjFmYzM4MmJcIixcImFcIjozfSx7XCJlXCI6XCJmMDI3OWJlNy01YTRkLTRkZWMtYTk3ZC00N2IyNTYwMzE1NTZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZhMDk0OC0wYmZlLTQzMWQtYWFmMS01MGEyZmM1NDJiYzVcIixcImFcIjozfSx7XCJlXCI6XCI2MmMzYjdhOS1kNDFjLTQ2MTUtOGY0My01NzJkOGZlNDc3OGJcIixcImFcIjozfSx7XCJlXCI6XCJlNzY0NTFlMy00MTM5LTQxZjAtYTNjYy02NDMyYzMzZDQ0Y2FcIixcImFcIjozfSx7XCJlXCI6XCJmMDUzZDhiNC1mYzZjLTRhMGMtYmM2NC02YWU0MzQ5ODg4YWVcIixcImFcIjozfSx7XCJlXCI6XCIyNzcxZDcxMS1lZmRhLTRhMTMtYjgwMy02YjcwZDgyZmE0YzZcIixcImFcIjozfSx7XCJlXCI6XCIzOWUxOThmOC02OWQxLTRjZjktOWFjOC02ZTg0N2YxNmY5YjhcIixcImFcIjozfSx7XCJlXCI6XCI1OTFlZGE4Ny1lNDUyLTQxZTYtOWZlOS03MjVjZjM4NjQ3NGFcIixcImFcIjozfSx7XCJlXCI6XCI2NjU0MjliOS00NTBmLTQ5NTMtYjY5My03YmJlYTI1YmQyYWFcIixcImFcIjozfSx7XCJlXCI6XCJiMTBkMjlkZi0zNTg4LTQzZTYtOGUzOS04Y2FiNDlhZjAzYWFcIixcImFcIjozfSx7XCJlXCI6XCJkYTg2ZWIxZS05OTQ1LTRkN2MtOGQwNC05NDNjMmQyN2U1NDFcIixcImFcIjozfSx7XCJlXCI6XCJhMWM4MTdkMS04YmVkLTQzYjItODJkNy05OTVhNDk0M2I5ZjdcIixcImFcIjozfSx7XCJlXCI6XCJhZThkZWM3Yi05YmM2LTRlNDctOTViNC1hN2YxMjk1OWFhZjlcIixcImFcIjozfSx7XCJlXCI6XCJiZGQzMTU4My1jNWNhLTQ1NjYtODE2Yy1hOTEwNzVhNThjNDdcIixcImFcIjozfSx7XCJlXCI6XCIzOTFjZGIyNi1hMGFiLTQ0NTMtYjFjZi1hOWIxNjc5YjRkNzRcIixcImFcIjozfSx7XCJlXCI6XCJmNjA2YzE5YS0zZjc3LTQxOTgtODJkMy1hYTYyODBhZWI1MTRcIixcImFcIjozfSx7XCJlXCI6XCI1OWMwZjBmZi1mYWM1LTRlYzctYjkzNS1iMjdlZDI3YmU0MDJcIixcImFcIjozfSx7XCJlXCI6XCIyMjNkODJjMy04YmFhLTQyM2MtOTc1My1iM2MwYWNhODU4OThcIixcImFcIjozfSx7XCJlXCI6XCJiYTNmNTRjZC04Y2Q4LTQ1MGItOTFlNS1iNjI4YmRiOGFhODRcIixcImFcIjozfSx7XCJlXCI6XCJlMTYzMmEzNi1iNDU0LTRlNzktOTEzYS1iZTViYzc0YTc3YjZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZiZTQ2ZC1kMDE4LTRmZjAtYmEwMC1jNGZlY2VlYmUyMjVcIixcImFcIjozfSx7XCJlXCI6XCJjOTMzYjIwNS1lMzk0LTRhNTEtOTkwYS1jNTNhODljMmYyNmVcIixcImFcIjozfSx7XCJlXCI6XCI3NjYxZTYxOC1iYTY5LTQ5NTUtODFmMS1jOGVkYmQ1ZDU2ZDJcIixcImFcIjozfSx7XCJlXCI6XCJiMWZkOGMyMy1lZTRjLTRmYzMtOGVjMS1kNWM4MmE4YzdiMjdcIixcImFcIjozfSx7XCJlXCI6XCJmOTg4YzM0Yy0yNGVkLTRmNWEtOWMyNy1lOTMzNWU0YmZmNjBcIixcImFcIjozfSx7XCJlXCI6XCJmY2FhN2YxYi1hMzM0LTQ0NjAtODIxMy1lOTk5ZjM4NGUzMDlcIixcImFcIjozfSx7XCJlXCI6XCJjMzVjOGNjZS0xMWZlLTQyZmItOTY3Ni1mMzJkMmQxYWQ3M2NcIixcImFcIjozfSx7XCJlXCI6XCIwZThiYWFiOS0xOGI1LTRhM2EtYWExMi1mYjdjMjc3MzIwOWVcIixcImFcIjozfV0iLCJFbnRpdHlBY2Nlc3NTdG9yYWdlIjoiSldUVG9rZW4iLCJTdG9yZU5hbWUiOiJIZW5kcnkiLCJJc0F1dGhlbnRpY2F0ZWQiOiJ0cnVlIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIkVzdGltYXRlIiwiRXN0aW1hdGVFZGl0b3IiLCJDdXN0b21lckRpc3BsYXkiLCJQcm9maWxlIiwiUHJvbW90aW9uIiwiUmVwb3J0MiIsIlRvb2xzIiwiU2V0dXAiLCJLaXRjaGVuRGlzcGxheSIsIk91dGxldHMiLCJJbnZlbnRvcnkiLCJTZXJ2aWNlIiwiQmlyIiwiUmVwb3J0IiwiQWRqdXN0bWVudCIsIkdsb2JhbEVkaXRvciIsIkFjdGl2aXR5IiwiUGF5bWVudCIsIlByb2R1Y3RzIiwiU2hpZnQiLCJEZWJ0IiwiQWNjb3VudGluZyIsIlRyZWF0bWVudCIsIkNvbnRhY3RzIiwiTWFudWZhY3R1cmUiLCJEZXZlbG9wZXJUb29scyIsIk9yZGVycyIsIkNoYXJ0IiwiTWFya2V0cGxhY2UiLCJVc2VycyIsIkNhbGVuZGFyIiwiUGF5bWVudEVkaXRvciIsIkFkanVzdG1lbnRFZGl0b3IiLCJTaGlmdENyZWF0ZSIsIkRlYnRDcmVhdGUiLCJNYW51ZmFjdHVyZUNyZWF0ZSIsIlN1YnNjcmlwdGlvbiIsIkJ1eSIsIlJlcG9ydEFkdmFuY2VkIiwiQ29udGFjdHNDcmVhdGUiLCJJbnZlbnRvcnlFZGl0b3IiLCJPdXRsZXRzQ3JlYXRlIiwiU2VsbCIsIkFjY291bnRpbmdDcmVhdGUiLCJQcm9kdWN0c0NyZWF0ZSIsIlByb21vdGlvbkNyZWF0ZSIsIk5vdGlmaWNhdGlvbiIsIkRlbGl2ZXJ5IiwiVHJlYXRtZW50Q3JlYXRlIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiSnVybmFsIiwiVXNlcnNDcmVhdGUiLCJTZXR1cENyZWF0ZSIsIlRyZWF0bWVudEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiU2hpZnRFZGl0b3IiLCJQcm9tb3Rpb25FZGl0b3IiLCJBZGp1c3RtZW50Q3JlYXRlIiwiU2V0dXBFZGl0b3IiLCJTZWxsRGVsZXRlIiwiVXNlcnNFZGl0b3IiLCJPdXRsZXRzRWRpdG9yIiwiRGVsaXZlcnlFZGl0b3IiLCJQcm9maXQiLCJBY2NvdW50aW5nRWRpdG9yIiwiRXN0aW1hdGVEZWxldGUiLCJCdXlEZWxldGUiLCJNYW51ZmFjdHVyZUVkaXRvciIsIkNvbnRhY3RzRWRpdG9yIiwiRGVidEVkaXRvciIsIlByb2R1Y3RzRWRpdG9yIiwiVHJlYXRtZW50RGVsZXRlIiwiU2V0dXBEZWxldGUiLCJQYXltZW50RGVsZXRlIiwiRGF0ZUVkaXRvciIsIkFjY291bnRpbmdEZWxldGUiLCJTZWxsRWRpdG9yIiwiRGVidERlbGV0ZSIsIkludmVudG9yeVByb2R1Y3RDb3VudCIsIlByb21vdGlvbkRlbGV0ZSIsIk91dGxldHNEZWxldGUiLCJDb250YWN0c0RlbGV0ZSIsIk1hbnVmYWN0dXJlRGVsZXRlIiwiQWRqdXN0bWVudERlbGV0ZSIsIkRlbGl2ZXJ5RGVsZXRlIiwiU2hpZnREZWxldGUiLCJVc2Vyc0RlbGV0ZSIsIkJ1eUVkaXRvciIsIlByb2R1Y3RzRGVsZXRlIiwiV2ViaG9va1NldHVwIiwiR3JvdXBzIiwiV2ViaG9va0NvbmZpZ3VyYXRpb25WaWV3IiwiUGF5bWVudENyZWF0ZSIsIkxveWFsdHlQb2ludEVkaXRvciIsIk51bWJlckVkaXRvciIsIkNvc3QiLCJUcmVhdG1lbnRJbmNlbnRpdmUiLCJQcm9tb3Rpb25Db3Vwb24iLCJJbWFnZUVkaXRvciIsIlNoYXJlUGFja2FnZUVkaXRvciIsIkRldmVsb3BlclNldHVwIiwiQWNjb3VudGluZ0xlZGdlciIsIkRlbGl2ZXJ5Q3JlYXRlIiwiU2FsZXNtYW5FZGl0b3IiLCJSZXR1cm4iLCJEZWxpdmVyeURhdGVFZGl0b3IiLCJUcmVhdG1lbnROb3RlIiwiUHJpY2Vib29rIiwiRXhwZW5zZSIsIkRpc2NvdW50IiwiRGVsaXZlcnlSZWNlaXZlciIsIlVuaXRQcmljZUVkaXRvciIsIkJ1bmRsaW5nUHJpY2UiLCJEYXNoYm9hcmQiLCJEb2N0b3IiLCJFeHBvcnQiLCJNb25leSIsIlNlYXJjaCIsIkJlc3RTZWxsZXIiLCJUb3BDdXN0b21lcnMiLCJBdXRob3JpemF0aW9uS2V5IiwiTW9uaXRvciIsIlB1cmNoYXNlT3JkZXIiLCJTYWxlc1RyYW5zYWN0aW9uIiwiU2hpcHBpbmdFZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiQWNjb3VudGluZ0Nhc2hiYWxhbmNlIiwiRGVsZXRlQWxsT3V0bGV0UHJpY2UiLCJBZGp1c3RtZW50QXBwcm92YWwiLCJCdXlEYXRlRWRpdG9yIiwiUXVhbnRpdHkiLCJSZWN1cnJpbmciLCJQcmljZWJvb2tTZWxlY3RvciJdLCJleHAiOjE2MTEzNzA5MTUsImlzcyI6ImNocmlzdG9waGVyLmRlYWxwb3MubmV0IiwiYXVkIjoiY2hyaXN0b3BoZXIuZGVhbHBvcy5uZXQifQ.Zie2cYtqg4xmssBWFC6h6v_XAYSZrtdv22vL8npHdy0
      x-stoplight:
        id: 3djf3hvs0nmrc
      x-codegen-request-body-name: body
  /Bill/ID:
    get:
      tags:
        - Bill
      summary: Get a Bill by ID
      description: |-
        Get a Supplier Bill detail based on bill ID.

        You must have "SupplierBill" role in "Orders" Module
      operationId: get-Bill-ID
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ID
              type: object
              properties:
                ID:
                  type: string
                  description: "Supplier bill ID\r\n"
              example:
                ID: ff7448c9-21f1-4c05-ac9e-1e71d829cc9c
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    description: Supplier bill ID
                  Outlet:
                    type: string
                    description: Outlet name
                  Number:
                    type: string
                    description: Supplier bill number
                  Date:
                    type: string
                    description: Supplier bill date
                  DueDate:
                    type: string
                    description: Supplier bill due date
                  Supplier:
                    type: object
                    properties: {}
                    description: Supplier name
                  CreatorID:
                    type: string
                    description: Creator ID
                  Created:
                    type: string
                    description: Created time
                  Discount1:
                    type: integer
                    description: Discount percentage that given in bill
                  DiscountAmount:
                    type: integer
                    description: Discount amount that given in bill
                  Gross:
                    type: integer
                    description: Total amount before discount
                  DiscountTotal:
                    type: integer
                    description: Total discount in bill
                  TaxType:
                    type: string
                    description: Tax type assigned
                  Tax:
                    type: integer
                    description: Tax Percentage
                  Purchase:
                    type: integer
                    description: Total nett purchase amount
                  PurchaseNTax:
                    type: integer
                    description: Total amount in bill after tax
                  Delivery:
                    type: string
                    description: Delivery State
                  Variants:
                    type: array
                    description: Variants detail
                    items:
                      type: object
                      properties:
                        VariantID:
                          type: string
                          description: Variant ID
                        Name:
                          type: string
                          description: Variant name
                        Code:
                          type: string
                          description: Variant code
                        Quantity:
                          type: integer
                          description: Variant quantity
                        Price:
                          type: integer
                          description: Variant price
                        Discount:
                          type: integer
                          description: Variant discount percentage
                        Note:
                          type: string
                          description: Variant note
                  Payments:
                    type: array
                    items:
                      type: object
                      properties:
                        Date:
                          type: string
                          description: Payment date
                        Amount:
                          type: integer
                          description: Payment amount
                        Method:
                          type: string
                          description: Payment method name
                        Code:
                          type: string
                          description: Payment code
                        Note:
                          type: string
                          description: Payment note
              example:
                ID: ff7448c9-21f1-4c05-ac9e-1e71d829cc9c
                Outlet: Outlet1
                Number: 19.11.14.000000003
                Date: '2019-11-14T00:00:00'
                DueDate: '2020-08-25T00:00:00'
                Supplier: {}
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2019-11-14T14:19:44.25'
                Discount1: 0
                DiscountAmount: 0
                Gross: 2660000
                DiscountTotal: -166854688
                TaxType: No Tax
                Tax: 0
                Purchase: 169514688
                PurchaseNTax: 169514688
                Delivery: Received
                Variants:
                  - VariantID: 44061928-caf9-412f-8321-0ec93ee6963e
                    Name: Denim Shirt(M)
                    Code: '50918'
                    Quantity: 1
                    Price: 664000
                    Discount: 0
                    Note: ''
                  - VariantID: 44061928-caf9-412f-8321-0ec93ee6678e
                    Name: Denim Shirt(L)
                    Code: '100430'
                    Quantity: 2
                    Price: 666000
                    Discount: 0
                    Note: ''
                  - VariantID: 44061928-caf9-4198-8321-0ec93ee6963e
                    Name: Denim Shirt(XL)
                    Code: '100531'
                    Quantity: 1
                    Price: 664000
                    Discount: 0
                    Note: ''
                Payments:
                  - Date: '2019-11-14T00:00:00'
                    Amount: 169514688
                    Method: Cash
                    Code: ''
                    Note: ''
      x-stoplight:
        id: oio5vjpougj70
      x-codegen-request-body-name: body
  /PrepaidPackage/History:
    post:
      tags:
        - Prepaid Package
      summary: Get Prepaid Package History
      description: "Get prepaid packages history.\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module"
      operationId: post-PrepaidPackage-History
      requestBody:
        description: Fill in the JSON request below to get the required response.
        content:
          application/json:
            schema:
              required:
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Prepaid package outlet
                CustomerCode:
                  type: string
                  description: Customer's code
                Email:
                  type: string
                  description: Customer's email
                Doctor:
                  type: string
                  description: The doctor in charge
                From:
                  type: string
                  description: Prepaid package date started
                To:
                  type: string
                  description: End of prepaid package date (for filter)
                PageNumber:
                  type: integer
                  description: >-
                    The number of page data to be displayed (Each page will
                    display 20 records)
              example:
                Outlet: Outlet1
                CustomerCode: CUST-001
                Email: teguhwarsini@gmail.com
                Doctor: Dr. Panji Gumilang
                From: '2018-09-07'
                To: '2018-10-17'
                PageNumber: 1
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - Customer
                    - Date
                    - Doctor
                    - Incentive
                    - Number
                    - Outlet
                    - Package
                    - State
                    - Type
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Prepaid package outlet
                    Number:
                      type: string
                      description: The prepaid package number
                    Date:
                      type: string
                      description: The treatment date
                    Customer:
                      type: string
                      description: The doctor in charge
                    Doctor:
                      type: string
                      description: The doctor / the employee insentive
                    Incentive:
                      type: integer
                      description: The package name / prepaid package product name
                    Package:
                      type: string
                      description: The package name / prepaid package product name
                    Type:
                      type: string
                      description: The treatment type
                    State:
                      type: string
                      description: Treatment state / progress
                example:
                  - Outlet: Outlet1
                    Number: Prepaid-001
                    Date: '2018-09-07'
                    Customer: Teguh Warsini
                    Doctor: Dr. Panji Gumilang
                    Incentive: 30000
                    Package: Cutting Package
                    Type: Hair Cutting with Style
                    State: Waiting
                  - Outlet: Outlet1
                    Number: Prepaid-002
                    Date: '2018-09-08'
                    Customer: Stephen Wijaya
                    Doctor: Dr. Prabowo Widodo
                    Incentive: 60000
                    Package: Laser Package
                    Type: Laser Treatment by Lion King
                    State: Finish
            Response Example:
              example:
                - Outlet: Outlet1
                  Number: Prepaid-001
                  Date: '2018-09-07'
                  Customer: Teguh Warsini
                  Doctor: Dr. Panji Gumilang
                  Incentive: 30000
                  Package: Cutting Package
                  Type: Hair Cutting with Style
                  State: Waiting
                - Outlet: Outlet1
                  Number: Prepaid-002
                  Date: '2018-09-08'
                  Customer: Stephen Wijaya
                  Doctor: Dr. Prabowo Widodo
                  Incentive: 60000
                  Package: Laser Package
                  Type: Laser Treatment by Lion King
                  State: Finish
      x-stoplight:
        id: 15y9yap1cfar4
      x-codegen-request-body-name: body
  /PrepaidPackage/History/Detail:
    post:
      tags:
        - Prepaid Package
      summary: Get Prepaid Package History Detail
      description: "Get single prepaid packages history with detail.\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module"
      operationId: post-PrepaidPackage-History-Detail
      requestBody:
        description: Fill in the JSON request below to get the required response.
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Prepaid package outlet
                Number:
                  type: string
                  description: "The number of prepaid package / treatment number\r\n\r\n"
              example:
                Outlet: Outlet1
                Number: Prepaid-001
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                  - Assistant
                  - AssistantNote
                  - Customer
                  - Date
                  - Doctor
                  - DoctorNote
                  - Duration
                  - Finish
                  - Incentive
                  - Number
                  - Outlet
                  - Package
                  - RecommendedBy
                  - Start
                  - State
                  - Type
                type: object
                properties:
                  Outlet:
                    type: string
                    description: The prepaid package outlet
                  Number:
                    type: string
                    description: The prepaid package number / treatment number
                  Date:
                    type: string
                    description: The treatment date
                  Start:
                    type: string
                    description: Treatment start time
                  Finish:
                    type: string
                    description: Treatment end time
                  Duration:
                    type: string
                    description: Treatment duration (in hour and minutes)
                  Customer:
                    type: string
                    description: Customers receiving treatment
                  Doctor:
                    type: string
                    description: The doctor in charge (main performer)
                  Assistant:
                    type: string
                    description: The doctor assistant in charge (performer assistant)
                  RecommendedBy:
                    type: string
                    description: Who can recommend or provide recommendations
                  Incentive:
                    type: integer
                    description: The doctor incentive
                  Package:
                    type: string
                    description: The package name / prepaid package product name
                  Type:
                    type: string
                    description: Prepaid package type / treatment type
                  State:
                    type: string
                    description: Treatment state / progress
                  DoctorNote:
                    type: string
                    description: The doctor note for the customer
                  AssistantNote:
                    type: string
                    description: The doctor assistant note for the customer
                example:
                  Outlet: Outlet1
                  Number: Prepaid-001
                  Date: '2018-09-07'
                  Start: '12:10'
                  Finish: '14:30'
                  Duration: 2 hr 20 min
                  Customer: Teguh Warsini
                  Doctor: Dr. Panji Gumilang
                  Assistant: Dr. Gayus Tabunan
                  RecommendedBy: Hendry Wijaya
                  Incentive: 30000
                  Package: Cutting Package
                  Type: Hair Cutting with Style
                  State: Waiting
                  DoctorNote: Keep the hair dry
                  AssistantNote: Do not use too much shampoo
            Sample Format:
              example:
                Outlet: Outlet1
                Number: Prepaid-001
                Date: '2018-09-07'
                Start: '12:10'
                Finish: '14:30'
                Duration: 2 hr 20 min
                Customer: Teguh Warsini
                Doctor: Dr. Panji Gumilang
                Assistant: Dr. Gayus Tabunan
                RecommendedBy: Hendry Wijaya
                Incentive: 30000
                Package: Cutting Package
                Type: Hair Cutting with Style
                State: Waiting
                DoctorNote: Keep the hair dry
                AssistantNote: Do not use too much shampoo
      x-stoplight:
        id: scglmrk9w9byn
      x-codegen-request-body-name: body
  /PrepaidPackage/List:
    post:
      tags:
        - Prepaid Package
      summary: Get Prepaid Package List
      description: "Get Prepaid Package List\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module"
      operationId: post-PrepaidPackage-list
      requestBody:
        description: Fill in the JSON request below to get the required response.
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                  description: Prepaid package outlet
                Customer:
                  type: string
                  description: Customer's name
                From:
                  type: string
                  description: Prepaid package date started
                To:
                  type: string
                  description: End of prepaid package date (for filter)
              example:
                Outlet: Outlet1
                Customer: Achmad Taftazani
                From: '2023-12-05'
                To: '2024-12-31'
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Outlet:
                    type: string
                  Package:
                    type: string
                  Customer:
                    type: string
                  Point:
                    type: string
                  Start:
                    type: string
                  Activated:
                    type: string
                  Expired:
                    type: string
                  Price:
                    type: string
                  Invoice:
                    type: string
                  SalesnTax:
                    type: string
              example:
                Outlet: Outlet1
                Package: GYM
                Customer: Achmad Taftazani
                Point: '118'
                Start: '120'
                Activated: '2023-12-05'
                Expired: '2024-12-31'
                Price: '100000'
                Invoice: 23.11.00021
                SalesnTax: '12000000'
      x-stoplight:
        id: gbygrf2fk342g
      x-codegen-request-body-name: body
  /PromotionCoupon/ByCode:
    get:
      tags:
        - Promotion Coupon
      summary: Get Promotion Coupon by Code
      description: ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/PromotionCoupon/p)**\r\n\r\n<br>\r\nGet Promotion Coupon Detail by Coupon Code\r\n\r\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\""
      operationId: get-PromotionCoupon-ByCode
      requestBody:
        description: The payload request that users should input
        content:
          application/json:
            schema:
              required:
                - Code
              type: object
              properties:
                Code:
                  type: string
                  description: Promotion Coupon Code
              example:
                Code: '889977'
        required: false
      responses:
        '200':
          description: The payload response that users will get.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: string
                    description: Coupon code
                  Limit:
                    type: integer
                    description: Coupon limit
                  Balance:
                    type: integer
                    description: Coupon balance
                  Discount:
                    type: integer
                    description: Coupon discount
                  Created:
                    type: string
                    description: Coupon created time
                  StartDate:
                    type: string
                    description: Coupon start time
                  ExpiryDate:
                    type: string
                    description: Coupon expiry time
                  Type:
                    type: string
                    description: Coupon type
                  Description:
                    type: string
                    description: Coupon description
                    x-stoplight:
                      id: aof3gt2mwc6bw
                  CustomerCode:
                    type: string
                    description: The customer code that assigned to the coupon
                example:
                  Code: '889977'
                  Limit: 10
                  Balance: 5
                  Discount: 10
                  Created: '2019-12-17T14:58:15.447'
                  StartDate: '2019-12-17T14:58:15.447'
                  ExpiryDate: '2019-12-19T00:00:00'
                  Type: Discount
                  Description: Discount percentage 99%
                  CustomerCode: CUST001
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: Promotion coupon Code QWERTY does not exist
      x-stoplight:
        id: brgquktvawn77
      x-codegen-request-body-name: body
  /PromotionCoupon/ListCode:
    delete:
      tags:
        - Promotion Coupon
      summary: Delete Promotion Coupon List
      description: "Bulk Delete Promotion by Promotion Coupon Key. Please use NEW LINE as the separator.\r\n\r\nYou must have \"DELETE\" role in \"Promotion\" Module\r\n\r\n"
      operationId: delete-PromotionCoupon-ListCode
      requestBody:
        description: Please use NEW LINE as the separator
        content:
          application/json:
            schema:
              type: array
              description: Array of promotion coupon code, use NEW LINE as the separator
              items:
                type: string
              example:
                - Coupon001
                - Coupon002
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: 2 Coupon Key has been deleted successfully!
      x-stoplight:
        id: yhgqqh09bk5sd
      x-codegen-request-body-name: body
  /InboundLogistic/Number:
    get:
      tags:
        - InboundLogistic
      summary: Get InboundLogistic By Number
      description: "Get Inbound Logistic By Number\r\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\""
      operationId: https://brand.dealpos.net/api/v3/InboundLogistic/Number
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet name of Inbound Logistics
                Number:
                  type: string
                  description: Number of Inbound Logistics
            example:
              Outlet: Outlet1
              Number: 24.02.00018
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Outlet:
                    type: string
                    description: Outlet name on the transaction created
                  Number:
                    type: string
                    description: Transaction Number
                  Date:
                    type: string
                    description: Transaction Date
                  Supplier:
                    type: object
                    properties: {}
                    description: Supplier's Data
                  CreatorID:
                    type: string
                    description: User ID who made the transaction
                  Created:
                    type: string
                    description: Transaction created date
                  Variants:
                    type: array
                    items:
                      type: object
                      properties:
                        Name:
                          type: string
                          description: Variant's name
                        Code:
                          type: string
                          description: Variant's Code
                        Quantity:
                          type: integer
                          description: Variant's quantity on the Transaction
                        Price:
                          type: integer
                          description: Variant Selling Price
                        PriceOriginal:
                          type: integer
                          description: Variant original price
                        Discount:
                          type: integer
                          description: Discount % applied for variant
                        DiscountAmount:
                          type: integer
                          description: Discount amount for the variant
                        NettPrice:
                          type: integer
                          description: Price after discount
                        Note:
                          type: string
                          description: Note for variant
                        VariantID:
                          type: string
                          description: Product variant Unique ID
              example:
                Outlet: Outlet1
                Number: 24.04.00018
                Date: '2024-04-29T00:00:00'
                Supplier: {}
                CreatorID: ff7848c9-21f1-4c05-ac9e-1e71d829cc9c
                Created: '2024-04-29T12:02:26.903'
                Variants:
                  - Name: T-Shirt
                    Code: '2004'
                    Quantity: 1
                    Price: 200000
                    PriceOriginal: 200000
                    Discount: 0
                    DiscountAmount: 0
                    NettPrice: 200000
                    VariantID: 30b10eae-8a4e-43de-8a37-4bb2b1807280
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  There is No InboundLogistic with Number 24.02.00018 - at
                  Outlet1
      x-stoplight:
        id: tqh7i3gixa6ux
      x-codegen-request-body-name: body
  /InboundLogistic/byOrderNumber:
    get:
      tags:
        - InboundLogistic
      summary: Get InboundLogistic By Order Number
      description: "Get Supplier Delivery By Order / Invoice Number\r\nRequired Group Role: \"Logistic\" - \"VIEW\""
      operationId: https://brand.dealpos.net/api/v3/InboundLogistic/byOrderNumber
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet name
                Number:
                  type: string
                  description: Invoice Number
            example:
              Outlet: Outlet1
              Number: 24.02.00012
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Outlet:
                      type: string
                      description: Outlet Name
                    Number:
                      type: string
                      description: Invoice Number Inbound Logistics
                    Date:
                      type: string
                      description: Invoice date
                    Created:
                      type: string
                      description: Date invoice was created
              example:
                - Outlet: Outlet3
                  Number: SB.TNG.24.01.0012
                  Date: '2024-01-21T00:00:00'
                  Created: '2024-01-21T09:37:53.937'
                - Outlet: Outlet2
                  Number: SB.TNG.24.01.0012_2
                  Date: '2024-01-21T00:00:00'
                  Created: '2024-01-21T09:38:05.857'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  There is No InboundLogistic with Number 24.02.00012 - at
                  Outlet1
      x-stoplight:
        id: mxjmth03k7lmo
      x-codegen-request-body-name: body
  /InboundLogistic/WithTotalCount:
    get:
      tags:
        - InboundLogistic
      summary: Get InboundLogistic With Total Count
      description: "Get list of Supplier Delivery with Total Count\r\nRequired Group Role: \"Logistic\" - \"VIEW\""
      operationId: https://brand.dealpos.net/api/v3/InboundLogistic/WithTotalCount
      requestBody:
        content:
          application/json:
            schema:
              required:
                - From
                - Outlet
                - PageNumber
                - PageSize
                - To
              type: object
              properties:
                From:
                  type: string
                  description: 'From Date (format: yyyy-mm-dd)'
                To:
                  type: string
                  description: 'To Date (format: yyyy-mm-dd)'
                PageNumber:
                  type: integer
                  description: The number of page data to be displayed
                PageSize:
                  type: integer
                  description: The number of rows returned by the API
                Outlet:
                  type: string
                  description: Outlet Name
            example:
              From: '2024-01-17'
              To: '2024-01-30'
              PageNumber: 1
              PageSize: 20
              Outlet: Outlet1
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Data:
                    type: array
                    items:
                      type: object
                      properties:
                        Outlet:
                          type: string
                          description: Outlet name
                        Number:
                          type: string
                          description: Invoice Number
                        Supplier:
                          type:
                            - string
                            - 'null'
                          description: Supplier name
                        Date:
                          type: string
                          description: Invoice Date
                        Fulfillment:
                          type: string
                          description: Fullfilment date
                        Time:
                          type: string
                          description: Time invoice was created
                  TotalCount:
                    type: integer
                    description: Total count of the result
              example:
                Data:
                  - Outlet: Outlet1
                    Number: 24.01.00082
                    Date: '2024-01-17T00:00:00'
                    Fulfillment: '2024-01-17T00:00:00'
                    Time: '2024-01-17T15:01:00'
                  - Outlet: Outlet1
                    Number: 24.01.00081
                    Date: '2024-01-17T00:00:00'
                    Fulfillment: '2024-01-17T00:00:00'
                    Time: '2024-01-17T14:30:00'
                TotalCount: 100
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: There is no Outlet with that name Outlet1
      x-stoplight:
        id: 81vvusadvo1oc
      x-codegen-request-body-name: body
  /SalesOrder/GetNextNumber:
    get:
      tags:
        - Sales Order
      summary: Get Sales Order Next Number
      description: >-
        This API use to check sales order next number that generated from our
        system
      operationId: get-SalesOrder-GetNextNumber
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
            example:
              Outlet: Outlet1
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Number:
                    type: string
                    description: Next Sales Order number that generated from system
              example:
                Number: B1.24.06.00013
      x-stoplight:
        id: jj0aaby586inh
      x-codegen-request-body-name: body
  /WriteOff/Invoice/ListInvoiceNumber:
    get:
      tags:
        - Invoice Write Off
      summary: Get WriteOff By List Invoice Number
      description: This APi is use for get WriteOff invoice by List Invoice Number
      operationId: get-WriteOff-Invoice-ListInvoiceNumber
      requestBody:
        content:
          application/json:
            schema:
              required:
                - InvoiceNumber
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                InvoiceNumber:
                  type: array
                  description: List Invoice Number
                  items:
                    type: string
              example:
                Outlet: Outlet1
                InvoiceNumber:
                  - INV001
                  - INV002
                  - INV003
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Number:
                      type: string
                      description: Number of Invoice
                    Outlet:
                      type: string
                      description: Outlet Name
                    Created:
                      type: string
                      description: Write off time created
                    CreatedBy:
                      type: string
                      description: User that write off the invoice
                    Amount:
                      type: integer
                      description: Amount of write off payment
                    Tag:
                      type: string
                      description: Reason of WriteOff Invoice
                example:
                  - Number: INV001
                    Outlet: Outlet1
                    Created: '2023-01-04T11:13:21.33'
                    CreatedBy: dealpos
                    Amount: 2000
                    Tag: Logistics
                  - Number: INV002
                    Outlet: Outlet1
                    Created: '2023-01-04T11:13:21.33'
                    CreatedBy: dealpos
                    Amount: 2000
                    Tag: Logistics
                  - Number: INV003
                    Outlet: Outlet1
                    Created: '2023-01-04T11:13:21.33'
                    CreatedBy: dealpos
                    Amount: 2000
                    Tag: Logistics
      x-stoplight:
        id: 2sozc2pscv1ns
      x-codegen-request-body-name: body
  /Shift/Void:
    delete:
      tags:
        - Shift
      summary: Void Previous Shift
      description: "Void Previous Shift Invoice\r\n\r\nYou must have \"**Void**\" role in \"**Shift**\" Modul"
      operationId: void-Shift
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Shift Number
                Note:
                  type: string
            example:
              Outlet: Outlet2
              Number: 21.12.00007
              Note: Cancelled by Manager
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Shift Number 21.12.00007 with ID
                  22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been voided!
      x-stoplight:
        id: zptn6divjr15o
      x-codegen-request-body-name: body
  /Shift/Erase:
    delete:
      tags:
        - Shift
      summary: Erase Previous Shift
      description: "Erase (Delete Permanent)  Previous Shift Invoice\r\n\r\nYou must have \"**Erase**\" role in \"**Orders**\" Module\r\n"
      operationId: delete-Shift-Erase
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Shift Number
                Note:
                  type: string
            example:
              Outlet: Outlet2
              Number: 21.12.00007
              Note: Cancelled
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
              example:
                Message: >-
                  Shift Number 21.12.00007 with ID
                  22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been deleted
                  permanent!
  /Invoice/Note:
    put:
      tags:
        - Invoice
      summary: Update Note in Invoice
      description: "Add / edit Invoice note\r\n\r\nYou must have \"EDIT\" role in \"Sell\" Modul"
      operationId: put-Invoice-Note
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Note
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Number Invoice
                Note:
                  type: string
                  description: >-
                    Invoice Note. (If send the request with empty string will
                    replace invoice note to null value)
            example:
              Outlet: Outlet1
              Number: 2020.06.00005
              Note: Invoice Note
        required: false
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Success message
              example:
                Message: Invoice note has been Updated!
      x-stoplight:
        id: rhy83ndtwpx5a
      x-codegen-request-body-name: body
  /Inventory/InTransit:
    get:
      tags:
        - Inventory
      summary: Get Inventory In Transit
      description: This API use for get data from Inventory In Transit
      operationId: get-Inventory-InTransit
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ListOutlet:
                  type: array
                  description: >-
                    List Outlet Destination Name. If send with empty value will
                    be show data from all outlet
                  items:
                    type: string
                Category:
                  type: string
                  description: >-
                    Category Name. If empty value will be show data from all
                    category
            example:
              ListOutlet:
                - Outlet1
                - Outlet2
              Category: Top
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    Name:
                      type: string
                      description: Variant Name
                    Code:
                      type: string
                      description: Variant Code
                    Category:
                      type: string
                      description: Category
                    Transit:
                      type: integer
                      description: Qty in transit to Outlet Destination
              example:
                - Name: Shirt (L)
                  Code: S001
                  Category: Top/Men
                  Transit: 3
                - Name: Shirt (M)
                  Code: S002
                  Category: Top/Men
                  Transit: 4
      x-stoplight:
        id: vppjdo47nmxm6
      x-codegen-request-body-name: body
  /PromotionCoupon/ByReferenceID:
    get:
      tags:
        - Promotion Coupon
      summary: Get Promotion Coupon By Reference ID
      description: "Get Promotion Coupon Detail by ReferenceI\r\nRequired Group Role: \"Promotion\" - \"VIEW\""
      operationId: get-PromotionCoupon-ByReferenceID
      parameters:
        - name: ReferenceID
          in: query
          description: Invoice ID
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: string
                    description: Coupon Code
                  Limit:
                    type: integer
                    description: Coupon Limit
                  Balance:
                    type: integer
                    description: Coupon Balance
                  Discount:
                    type: integer
                    description: Coupon Discount
                  Created:
                    type: string
                    description: Coupon Created Time
                  StartDate:
                    type: string
                    description: Coupon Start Time
                  ExpiryDate:
                    type: string
                    description: Coupon Expired Time
                  Type:
                    type: string
                    description: Coupon Type
                  Description:
                    type: string
                    description: Coupon Description
                  CustomerCode:
                    type: string
                    description: The customer code that assigned to the coupon
                example:
                  Code: '889977'
                  Limit: 5
                  Balance: 5
                  Discount: 99
                  Created: '2019-12-17T14:58:15.447'
                  StartDate: '2019-12-01T00:00:00'
                  ExpiryDate: '2019-12-19T00:00:00'
                  Type: Discount
                  Description: Discount percentage 99%
                  CustomerCode: DP-001
      x-stoplight:
        id: l67mr92y58mcv
  /Adjustment/Submit:
    put:
      tags:
        - Inventory Adjustment
      summary: Submit Review Adjustment
      description: "This API is for Submit Review for Pending Adjustment based on Outlet and Number Adjustment\r\n\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module"
      operationId: put-Adjustment-Submit
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Adjustment number
              example:
                Outlet: Outlet1
                Number: Adjustment001
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Inventory Adjustment Number Adjustment001 already Submitted
      x-stoplight:
        id: rut5xgla22zqu
      x-codegen-request-body-name: body
  /Adjustment/Accept:
    put:
      tags:
        - Inventory Adjustment
      summary: Accept Adjustment
      description: "This API is for Accept Adjustment based on Outlet and Number Adjustment\r\n\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module"
      operationId: put-Adjustment-Accept
      requestBody:
        content:
          application/json:
            schema:
              required:
                - Number
                - Outlet
              type: object
              properties:
                Outlet:
                  type: string
                  description: Outlet Name
                Number:
                  type: string
                  description: Adjustment number
              example:
                Outlet: Outlet1
                Number: Adjustment001
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Inventory Adjustment Number Adjustment001 Accepted
      x-stoplight:
        id: rut5xgla22zqu
      x-codegen-request-body-name: body
  /Adjustment/Reject:
    put:
      tags:
        - Inventory Adjustment
      summary: Reject Adjustment
      description: "This API is for Reject Adjustment based on Outlet and Number Adjustment\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module"
      operationId: put-Adjustment-Reject
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Outlet:
                  type: string
                Number:
                  type: string
              example:
                Outlet: Outlet1
                Number: Adjustment001
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Inventory Adjustment Number Adjustment001 Accepted
              example:
                Message: Inventory Adjustment Number Adjustment001 Rejected
      x-stoplight:
        id: xcjrpi6eystnk
      x-codegen-request-body-name: body
  /Customer/Merge:
    put:
      tags:
        - Customer
      summary: Merge Customer
      description: This API use for merge several customer to be one customer
      operationId: put-Customer-Merge
      requestBody:
        content:
          application/json:
            schema:
              required:
                - deleted
                - mergeTarget
              type: object
              properties:
                mergeTarget:
                  type: string
                  description: Customer ID that want to merged
                deleted:
                  type: array
                  description: Customer ID that will be deleted after merged complete
                  items:
                    type: string
              example:
                mergeTarget: f930a0ba-21da-47fd-99a4-5dcc98fb10c8
                deleted:
                  - 7156869b-6c3d-4761-8118-77efafca87cc
                  - 7156869b-6c3d-4761-8118-77efafca87cb
        required: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: Merge Completed
              example:
                Message: Merge Completed
      x-stoplight:
        id: ks5mik01hcjuz
      x-codegen-request-body-name: body
  /Supplier/Merge:
    put:
      tags:
        - Supplier
      summary: Merge Supplier
      description: This API use for merge several Supplie to be one customer
      operationId: put-Supplier-Merge
      requestBody:
        content:
          application/json:
            schema:
              required:
                - deleted
                - mergeTarget
              type: object
              properties:
                mergeTarget:
                  type: string
                  description: Supplier ID that want to merged
                deleted:
                  type: array
                  description: Supplier ID that will be deleted after merged complete
                  items:
                    type: string
              x-examples:
                Example 1:
                  mergeTarget: f930a0ba-21da-47fd-99a4-5dcc98fb10c8
                  deleted:
                    - 7156869b-6c3d-4761-8118-77efafca87cc
                    - 7156869b-6c3d-4761-8118-77efafca87cb
            example:
              mergeTarget: f930a0ba-21da-47fd-99a4-5dcc98fb10c8
              deleted:
                - 7156869b-6c3d-4761-8118-77efafca87cc
                - 7156869b-6c3d-4761-8118-77efafca87cb
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                x-examples:
                  Example 1:
                    Message: Merge Completed
              example:
                Message: Merge Completed
      x-stoplight:
        id: v3exehlf5f0yf
      x-codegen-request-body-name: body
  /Customer/PIN:
    get:
      tags:
        - Customer
      summary: Get Customer PIN
      description: Get Customer PIN for redemption point
      operationId: get-Customer-PIN
      parameters:
        - name: ID
          in: query
          description: Customer ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  PIN:
                    type: string
                example:
                  PIN: '123654'
              example:
                PIN: '123654'
      x-stoplight:
        id: 2at07q2blz5s3
    put:
      tags:
        - Customer
      summary: Set Customer PIN
      description: Set Customer PIN for redemption point
      operationId: put-Customer-PIN
      requestBody:
        content:
          application/json:
            schema:
              required:
                - ID
                - PIN
              type: object
              properties:
                ID:
                  type: string
                  description: Customer ID
                PIN:
                  type: string
                  description: >-
                    PIN use for redemption point. (Max-length= 6 digits and only
                    number)
              example:
                ID: 2b4c7d76-6ac7-49a3-a1f2-6022439d7958
                PIN: '123456'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                example:
                  Message: >-
                    PIN for Customer 2b4c7d76-6ac7-49a3-a1f2-6022439d7958
                    already
              example:
                Message: >-
                  PIN for Customer 2b4c7d76-6ac7-49a3-a1f2-6022439d7958 already
                  set
      x-stoplight:
        id: fan0r0kvx7965
      x-codegen-request-body-name: body
components:
  securitySchemes:
    OAuth2_clientCredentials:
      type: oauth2
      description: require access_token
      flows:
        clientCredentials:
          tokenUrl: https://brand.dealpos.net/api/v3/token
          scopes: {}
  schemas:
    category:
      title: Category
      required:
        - Name
      type: object
      properties:
        Name:
          type: string
          description: >-
            The name of the category that you want to create. This is primary
            key for the object

            If you want to create category child use a "/" operator ex:
            "Food/Snack/Pastries" will create 3 level category
        Code:
          type: string
          description: Code Category
          x-stoplight:
            id: vebp8v8wdayw0
      x-internal: false
    product:
      title: Product
      required:
        - Category
        - Code
        - Discontinued
        - Name
      type: object
      properties:
        Category:
          type: string
          description: >-
            The name of the category that will be use, you also can create new
            category.


            If you want to nest a category use a "/" operator ex:
            "Food/Snack/Pastries" will create 3 level category
        Name:
          type: string
          description: The name of the product to be created.
        Brand:
          type: string
          description: >-
            The name of the brand to be created. Backwards compatibility with
            property "BrandName"
        Code:
          type: string
          description: the code of the product to be created.
        Discontinued:
          type: boolean
          description: The product availability for selling.
        ImageURL:
          type: string
          description: The image link of the product to be created.
        ExtraImagesURL:
          type: array
          description: ' Image link of additional image in product'
          items:
            type: string
        Description:
          type: string
          description: The description of the product.
        Variants:
          type: array
          items:
            required:
              - Code
              - Discontinued
              - Model
            type: object
            properties:
              Model:
                type: string
                description: The name of the variant to be created.
              Code:
                type: string
                description: The code of the variant to be created.
              UnitCost:
                type: integer
                description: The cost of the variant to be created.
              UnitPrice:
                type: integer
                description: The price of the variant to be created.
              Discontinued:
                type: boolean
                description: The variant availability for selling.
              VariantDescription:
                type: string
                description: The description of the product to be inserted.
      x-examples:
        example-1:
          Category: Top/Men
          Name: Captain America T-Shirt
          Brand: Brand
          Code: '1003'
          Discontinued: false
          ImageURL: >-
            https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60
          ExtraImagesURL:
            - >-
              //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg
            - >-
              //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg
            - >-
              //res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg
          Description: New Arrival
          Variants:
            - Model: Small
              Code: 1003S
              UnitCost: 100000
              UnitPrice: 150000
              Discontinued: true
              VariantDescription: Unavailable
            - Model: Medium
              Code: 1003M
              UnitCost: 125000
              UnitPrice: 175000
              Discontinued: false
            - Model: Large
              Code: 1003L
              UnitCost: 150000
              UnitPrice: 200000
              Discontinued: false
      x-internal: false
    VariantSerial:
      title: Variant Serial
      required:
        - Number
        - Quantity
      type: object
      properties:
        Number:
          type: string
          description: Serial Number
        Quantity:
          type: integer
          description: Quantity of Serial Number specified
    Token:
      title: Token
      type: object
      properties:
        token_type:
          type: string
        expires_in:
          type: integer
          description: Lifetime of the access_token in seconds
        expiredAt:
          type: string
          description: Date when the access_token expired
        access_token:
          type: string
          description: string issued by the authorization server to access our API
      x-internal: false
    customer:
      title: Customer
      required:
        - Code
        - Email
        - Mobile
        - Name
        - Status
      type: object
      properties:
        Email:
          type: string
          description: Email address of customer.  This is primary key for the object.
        Name:
          type: string
          description: Name of customer.
        FirstName:
          type: string
          description: First name of customer
        LastName:
          type: string
          description: Last name of customer
        Birthdate:
          type: string
          description: Birthdate of customer
        Phone:
          type: string
          description: Phone number of customer
        Mobile:
          type: string
          description: Mobile number of customer.  This is primary key for the object
        Address:
          type: string
          description: Customer Address
        Gender:
          type: boolean
          description: Gender of customer
          enum:
            - false
            - true
        Code:
          type: string
          description: Code number of customer
        Group:
          type: string
          description: Group of customer
        ExpiredGroup:
          type: string
          description: Customer Group Expired Date
        LoyaltyPoint:
          type: integer
          description: Loyalty point of customer
        ImageURL:
          type: string
          description: Customer's photo URL
        Status:
          type: string
          description: Customer Activation Status
          default: Active / WaitingForApproval / Suspended
        ReferralCode:
          type: string
          description: Existing Customer code that refers the new customer
          x-stoplight:
            id: 222yfz1xbcbu4
        SignUpOutlet:
          type: string
          description: Outlet Name when customer create new transaction from
          x-stoplight:
            id: m9p3a3sapwdgy
      x-internal: false
    Customer-Response:
      type: object
      properties:
        ID:
          type: string
        Message:
          type: string
      x-examples:
        Example 1:
          ID: c27bfb13-4936-43e5-bd7d-410dc8d041c2
          Message: Record updated
      x-internal: true
    adjustment:
      title: Adjustment
      required:
        - Date
        - Number
        - Outlet
        - Variants
      type: object
      properties:
        Outlet:
          type: string
          description: The name of the outlet that made the adjustment
        Date:
          type: string
          description: Date of adjusment.(yyyy/mm/dd)
        Number:
          type: string
          description: Number of invoice adjusment. This is primary key for the object
        StateID:
          type: number
          description: >-
            State of Adjustment. it will be required if config with Approval is
            turned on. 1= InProgress, 2= Waiting
          x-stoplight:
            id: 2vbxuk9ho1d10
        PIC:
          type: string
          description: The name of the PIC that made the adjustment
        Note:
          type: string
          description: Note of adjustment
        Variants:
          type: array
          items:
            required:
              - Code
              - Quantity
            type: object
            properties:
              Code:
                type: string
                description: Code of variant
              Quantity:
                type: number
                description: Variant's adjusted quantity
              Serial:
                type: array
                description: Use this property only for product type Serialized
                items:
                  $ref: '#/components/schemas/VariantSerial'
      x-internal: false
    variant-result:
      title: Variant
      type: object
      properties:
        ID:
          type: string
          description: Unique ID of the variant
        Category:
          type: string
          description: Category of the product
        Product:
          type: string
          description: Name of the product variant
        Variant:
          type: string
          description: Name of the variant
        Name:
          type: string
          description: Name of the product
        Code:
          type: string
          description: Code of the product
        Weight:
          type: integer
          description: Weight of the product
        Type:
          type: string
          description: Type of the product
        OrderPrice:
          type: integer
          description: Last order price of the product
        UnitCost:
          type: integer
          description: Unit cost of the product
        UnitPrice:
          type: integer
          description: Unit selling price of the product
        Taxable:
          type: boolean
          description: Taxable status of the product
        LoyaltyPoint:
          type: boolean
          description: Loyalty Point status of the product
        Discontinued:
          type: boolean
          description: Discontinue status of the product
        Components:
          type: array
          items:
            type: object
            properties:
              Name:
                type: string
                description: Component name of the product
              Code:
                type: string
                description: Component code of the product
              Qty:
                type: integer
                description: Qty of the component
        OutletPrice:
          type: array
          items:
            type: object
            properties:
              Outlet:
                type: string
                description: Selected outlet of the product
              Price:
                type: integer
                description: Price of the selected outlet of the product
              ExtraCost:
                type: integer
                description: Extra Cost of the selected outlet of the product
        Pricebook:
          type: array
          items:
            type: object
            properties:
              Name:
                type: string
                description: Pricebook name
                x-stoplight:
                  id: 1fbg4i6fdicwo
              UnitPrice:
                type: integer
                description: Pricebook price
                x-stoplight:
                  id: uprwowwako3dx
              MinimumQuantity:
                type: integer
                description: Pricebook minimum quantity
                x-stoplight:
                  id: nq641j2imr2xb
            x-stoplight:
              id: s6c5nobqp1kl6
          x-stoplight:
            id: 92i31zik4viu6
      x-examples:
        Standard:
          ID: f2296e61-e405-4884-9e54-55f14a91748b
          Category: Food
          Product: Sandwich
          Variant: Default
          Name: Sandwich
          Code: SW001
          Weight: 100
          Type: Composite
          OrderPrice: 0
          UnitCost: 20000
          UnitPrice: 50000
          Taxable: true
          LoyaltyPoint: true
          Discontinued: false
          Components:
            - Code: S001
              Name: Sausage
              Qty: 1
            - Code: B001
              Name: Bread
              Qty: 2
          OutletPrice:
            - Outlet: Outlet1
              Price: 55000
              ExtraCost: 5000
        With Pricebook:
          ID: string
          Category: string
          Product: string
          Variant: string
          Name: string
          Code: string
          Weight: 0
          Type: string
          OrderPrice: 0
          UnitCost: 0
          UnitPrice: 0
          Taxable: true
          LoyaltyPoint: true
          Discontinued: true
          Components:
            - Name: string
              Code: string
              Qty: 0
          OutletPrice:
            - Outlet: string
              Price: 0
              ExtraCost: 0
          '':
            - Name: string
              UnitPrice: 0
              MinimumQuantity: 0
        Example 2:
          ID: f2296e61-e405-4884-9e54-55f14a91748b
          Category: Food
          Product: Sandwich
          Variant: Default
          Name: Sandwich
          Code: SW001
          Weight: 100
          Type: Composite
          OrderPrice: 0
          UnitCost: 20000
          UnitPrice: 50000
          Taxable: true
          LoyaltyPoint: true
          Discontinued: false
          Components:
            - Code: S001
              Name: Sausage
              Qty: 1
            - Code: B001
              Name: Bread
              Qty: 2
          OutletPrice:
            - Outlet: Outlet1
              Price: 55000
              ExtraCost: 5000
          Pricebook:
            - Name: Reseller Price
              UnitPrice: 40000
              MinimumQuantity: 2
            - Name: Grocery Price
              UnitPrice: 30000
              MinimumQuantity: 5
      x-stoplight:
        id: 7f5f4d82cadda
      x-internal: false
    estimate:
      title: Estimate
      required:
        - Date
        - Number
        - Outlet
      type: object
      properties:
        Outlet:
          type: string
          description: Outlet Name
        Number:
          type: string
          description: Estimate Number
        Date:
          type: string
          description: Estimate Date Created
        Discount:
          type: number
          description: Discount percentage given
        DiscountAmount:
          type: number
          description: Discount amount given
        TaxType:
          type: string
          description: Name of Taxtype
        Tag:
          type: string
          description: >-
            Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia)
            used in marketplace.dealpos.app. Backwards Compatibility with
            property request "SalesType"
        Customer:
          required:
            - Code
            - Email
            - Mobile
            - Name
          type: object
          properties:
            Email:
              type: string
              description: Email of Customer
            Name:
              type: string
              description: Name of Customer
            Mobile:
              type: integer
              description: Mobile of Customer
            Address:
              type: string
              description: Address of Customer
            Gender:
              type: string
              description: Gender of Customer (Male / Female)
            Code:
              type: string
              description: Code of Customer
        Variants:
          type: array
          items:
            required:
              - Code
              - Quantity
            type: object
            properties:
              Code:
                type: string
                description: Code of Variant
              Quantity:
                type: integer
                description: Quantity of Variant for the estimate
              Cost:
                type: number
                description: Cost of Variant
              Price:
                type: number
                description: Price of Variant
              Discount:
                type: integer
                description: Discount percentage of variant given
              Note:
                type: string
                description: Note of variant
      x-internal: false
    supplier:
      title: Supplier
      required:
        - Code
        - Email
        - Mobile
        - Name
        - Status
      type: object
      properties:
        Email:
          type: string
          description: Email address of Supplier
        Name:
          type: string
          description: Name of supplier. This is primary key for the object
        FirstName:
          type: string
          description: First name of supplier
        LastName:
          type: string
          description: Last name of supplier
        Phone:
          type: string
          description: Phone number of supplier
        Mobile:
          type: string
          description: Mobile number of supplier
        Address:
          type: string
          description: Address of Supplier
        Gender:
          type: string
          description: Gender of supplier
          enum:
            - Male
            - Female
        Code:
          type: string
          description: Code member of supplier
        Group:
          type: string
          description: Group of supplier
        ImageURL:
          type: string
          description: Supplier's photo URL
        Status:
          type: string
          default: Active / WaitingForApproval / Suspended
      x-internal: false
    ShiftDetail:
      type: object
      properties:
        Outlet:
          type: string
          description: Name of the outlet
        Number:
          type: string
          description: Number of the invoice
        Date:
          type: string
          description: Invoice Transaction Date
        Tag:
          type: string
          description: >-
            Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia)
            used in omni.dealpos.app.
          x-stoplight:
            id: luaj6llrnjzth
        Created:
          type: string
          description: Invoice created Transaction Date by system
        DueDate:
          type: string
          description: Invoice DueDate
        Discount1:
          type: integer
          description: Percentage Discount 1
        Discount2:
          type: integer
          description: Percentage Discount 2
        DiscountAmount:
          type: integer
          description: Discount Amount
        InvoiceID:
          type: string
          description: Transaction Invoice ID
        Gross:
          type: integer
          description: Total sales amount before discounts and taxes
        DiscountTotal:
          type: integer
          description: Total accumulative of the discounts
        TaxType:
          type: string
          description: The type of the Tax
        TaxAmount:
          type: integer
          description: Total amount of the Tax
        TaxRate:
          type: integer
          description: Rate of tax in percentage
          x-stoplight:
            id: kwydzujtmpcv9
        Sales:
          type: integer
          description: Total sales amount after discounts and taxes
        SalesNTax:
          type: integer
          description: Total sales amount after discounts with taxes
        Surcharge:
          type: integer
          description: 'an additional charge or payment '
        Note:
          type: string
          description: Note of supplier bill
        Customer:
          type: object
          properties:
            Name:
              type: string
              description: Name of the Customer
            Code:
              type: string
              description: Unique Code of the customer
            Email:
              type: string
              description: Email of the customer
            Phone:
              type: string
              description: Phone number of the customer
            Mobile:
              type: string
              description: Phone / Mobile Phone number of the customer
            Address:
              type: string
              description: Customer's address
            ID:
              type: string
              description: Customer's ID
              x-stoplight:
                id: oopix14shri9t
        Variants:
          type: array
          items:
            type: object
            properties:
              Name:
                type: string
                description: Product's variant name
              Code:
                type: string
                description: Product variant code
              Quantity:
                type: integer
                description: Product variant quantity
              UnitQuantity:
                type: integer
                description: Unit of measurement of the product
              Cost:
                type: number
                description: Product's variant unit cost
              Price:
                type: integer
                description: Product's variant selling price
              PriceOriginal:
                type: integer
                description: Product's variant selling price before discount
              Discount:
                type: integer
                description: Product's variant discount percentage
              DiscountAmount:
                type: integer
                description: Product's variant discount amount
              Taxable:
                type: boolean
                description: Product's variant taxable status
              LoyaltyPoint:
                type: boolean
                description: Product's variant loyalty status
              Expense:
                type: integer
                description: Product's variant spesific additional expense
              NetPrice:
                type: integer
                description: Product's variant net selling price
              PriceTypeID:
                type: integer
                description: Product's variant type ID
              Note:
                type: string
                description: Product's variant note
        Payments:
          type: array
          items:
            type: object
            properties:
              Date:
                type: string
                description: Payment created date
              Amount:
                type: integer
                description: Total amount of the payment
              Code:
                type:
                  - string
                  - 'null'
                description: Code of the payment
              Method:
                type: string
                description: Method of the payment
              Note:
                type:
                  - string
                  - 'null'
                description: Note of the payment
        Void:
          type: string
          description: Void status of the invoice
        Bin:
          type: boolean
          description: True = if invoice in Bin, False = if invoice doesn't in Bin
        ReferenceInvoiceNumber:
          type:
            - string
            - 'null'
          description: Sales Invoice Number
        ReferenceNumber:
          type: string
          description: Invoice reference number
          x-stoplight:
            id: o0q3mvp83a9t5
        OrderFulfillmentRecipient:
          type: object
          properties:
            ID:
              type: string
              description: Recipient ID
              x-stoplight:
                id: vw28nexqswrip
            Name:
              type: string
              description: Recipient Name
              x-stoplight:
                id: g64hbl5mch3j2
            Phone:
              type: string
              description: Recipient phone number
              x-stoplight:
                id: ozwyc73ptgsu2
            Address:
              type: string
              description: Recipient address
              x-stoplight:
                id: xe7ppoesj4hx9
            City:
              type: string
              description: Recipient city location
              x-stoplight:
                id: qr9n3pdx7x8in
          x-stoplight:
            id: 1e3vg0i0xp67j
      x-internal: false
x-original-swagger-version: '2.0'
