> ## Documentation Index
> Fetch the complete documentation index at: https://docs.assetinfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Add a proposal to a draft plan or change one (FA_CPA_PA_4).

> Add a proposal to a draft plan or change one (FA_CPA_PA_4).

Adding a proposal needs finance.capex_scheme.create; changing one needs finance.capex_scheme.edit, or finance.capex_scheme.create for a proposal sent back to you for revision.

Give the proposal's value as p_fresh_sanction_amount, the new money asked for in the plan's year, and p_approved_carryover_amount, what was approved in an earlier year and is carried into this one: the proposal value is then their sum, either one left out counts as zero, and p_scheme_value is not read. Give neither and p_scheme_value is the value, and the two amounts a proposal already has are kept only while they still add up to it. p_category_master_id (the Category) and p_budget_category_id (the Sub-Category) are values of your organisation's lists named Category Master and Sub-Category Master; one the proposal already holds is kept even after it is retired from its list. Saving a proposal without them leaves it with none.

Every amount can have at most ten digits before the decimal point and two after it, 9,999,999,999.99 at the widest, and so can the proposal value they add up to; a wider one, or one with a third decimal, is refused as INVALID_LINE naming the field. An amount the proposal already holds, sent back unchanged, is kept whatever its width.

The Proposal ID is given when it is left empty, and a typed one is refused where the organisation has said IDs are always given. A proposal consolidated from another quotes that proposal's ID, whatever p_investment_type or p_carried_from_line_id it is later saved with. A carry forward quotes the ID of the proposal it continues, and an ID it took that way goes with the link: change p_carried_from_line_id or p_investment_type so that it continues another proposal or none, and it takes that proposal's ID or is given a new one, even when the ID it had is sent back as p_scheme_code. Where IDs are always given, a proposal that was not consolidated from another and comes to continue one takes that one's ID whatever ID it had. The category is worked out from the proposal value divided by the quantity and is not taken from p_category, which is kept only so that older callers are not refused; p_category_two_id and p_department_id are kept for the same reason and read by nothing, since a proposal no longer has a Category 2 or a department of its own; the department is the plan's. Returns the proposal's ID and category as saved.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/save_capex_plan_line
openapi: 3.0.0
info:
  description: ''
  title: >-
    The only schema PostgREST exposes. Reads are security_invoker views; writes
    are SECURITY DEFINER functions. Rebuilt wholesale on every deploy — it holds
    no data.
  version: 12.2.3
servers:
  - url: https://app.assetinfinity.ai/api
security: []
tags:
  - name: Signing in
  - name: Profile
  - name: My work
  - name: Sites and locations
  - name: Assets
  - name: Asset lifecycle
  - name: Asset components
  - name: Kits
  - name: Work lifecycle
  - name: Work order execution
  - name: Work sequencing
  - name: Maintenance
  - name: Inspections
  - name: Checklists
  - name: Verification
  - name: Self verification
  - name: Inventory
  - name: Inventory detail
  - name: Parts demand
  - name: Procurement
  - name: Catalogue
  - name: Vendors and contracts
  - name: Contracts
  - name: Amendments
  - name: Vendor spend forecast
  - name: Workforce
  - name: Workforce detail
  - name: Capacity
  - name: Dispatch
  - name: Shutdown
  - name: Permits
  - name: Tools
  - name: Tools on jobs
  - name: Bookings
  - name: Booking hand over
  - name: Booking bills
  - name: Calibration history
  - name: Reliability
  - name: Sensors and meters
  - name: Readers
  - name: Trackers
  - name: Real-time location
  - name: Feeds
  - name: Energy
  - name: IT assets
  - name: IT asset software
  - name: IT asset topology
  - name: Warranty lookups
  - name: Map
  - name: Floor plans
  - name: Labels
  - name: Lost and found
  - name: Visitors
  - name: Root cause analysis
  - name: Costing
  - name: Finance
  - name: E-way bills
  - name: E-way bill filing
  - name: Budgets
  - name: Capex plans
  - name: Capex consolidation
  - name: Capex capitalization
  - name: FF&E plans
  - name: Documents
  - name: Document control
  - name: Document folders
  - name: Document tree
  - name: Knowledge
  - name: Reports
  - name: Dashboards
  - name: Extracts
  - name: Data exports
  - name: Audit center
  - name: Audit feed
  - name: Activity
  - name: Conversations
  - name: Notifications
  - name: Date reminders
  - name: Channels
  - name: Search
  - name: Copilot
  - name: Import
  - name: Bulk jobs
  - name: File exchange
  - name: Filing exceptions
  - name: Files
  - name: Sync
  - name: Support
  - name: API keys
  - name: Webhooks
  - name: MCP connections
  - name: MCP sign-in
  - name: SCIM provisioning
  - name: Directory sync
  - name: Security streams
  - name: Clarity
  - name: Single sign-on
  - name: Two-factor sign-in
  - name: Admin
  - name: Access
  - name: Lookups
  - name: Read models
  - name: Reference
  - name: Reference columns
  - name: Reference entry
  - name: List views
  - name: Mapping
  - name: Numbering
  - name: Branding
  - name: Custom fields
  - name: Form studio
  - name: Workflows
  - name: Workflow studio
  - name: Rules
  - name: Statuses and transitions
  - name: Currencies and locales
  - name: Today
  - name: Work configuration
  - name: Asset configuration
  - name: Inventory configuration
  - name: Tool configuration
  - name: Workforce configuration
  - name: Vendor and contract configuration
  - name: Document configuration
  - name: Inspection configuration
  - name: Sites, locations and the organisation
  - name: Setup
  - name: Features
  - name: Billing
  - name: Licence
  - name: Welcome
  - name: Tray
  - name: Tenant switch
  - name: Release
  - name: Upgrade
  - name: Telegram
  - name: Whatsapp
  - name: Inbound mail
  - name: Platform
externalDocs:
  description: PostgREST Documentation
  url: https://postgrest.org/en/v12/references/api.html
paths:
  /rpc/save_capex_plan_line:
    post:
      tags:
        - Capex plans
      summary: Add a proposal to a draft plan or change one (FA_CPA_PA_4).
      description: >-
        Add a proposal to a draft plan or change one (FA_CPA_PA_4).


        Adding a proposal needs finance.capex_scheme.create; changing one needs
        finance.capex_scheme.edit, or finance.capex_scheme.create for a proposal
        sent back to you for revision.


        Give the proposal's value as p_fresh_sanction_amount, the new money
        asked for in the plan's year, and p_approved_carryover_amount, what was
        approved in an earlier year and is carried into this one: the proposal
        value is then their sum, either one left out counts as zero, and
        p_scheme_value is not read. Give neither and p_scheme_value is the
        value, and the two amounts a proposal already has are kept only while
        they still add up to it. p_category_master_id (the Category) and
        p_budget_category_id (the Sub-Category) are values of your
        organisation's lists named Category Master and Sub-Category Master; one
        the proposal already holds is kept even after it is retired from its
        list. Saving a proposal without them leaves it with none.


        Every amount can have at most ten digits before the decimal point and
        two after it, 9,999,999,999.99 at the widest, and so can the proposal
        value they add up to; a wider one, or one with a third decimal, is
        refused as INVALID_LINE naming the field. An amount the proposal already
        holds, sent back unchanged, is kept whatever its width.


        The Proposal ID is given when it is left empty, and a typed one is
        refused where the organisation has said IDs are always given. A proposal
        consolidated from another quotes that proposal's ID, whatever
        p_investment_type or p_carried_from_line_id it is later saved with. A
        carry forward quotes the ID of the proposal it continues, and an ID it
        took that way goes with the link: change p_carried_from_line_id or
        p_investment_type so that it continues another proposal or none, and it
        takes that proposal's ID or is given a new one, even when the ID it had
        is sent back as p_scheme_code. Where IDs are always given, a proposal
        that was not consolidated from another and comes to continue one takes
        that one's ID whatever ID it had. The category is worked out from the
        proposal value divided by the quantity and is not taken from p_category,
        which is kept only so that older callers are not refused;
        p_category_two_id and p_department_id are kept for the same reason and
        read by nothing, since a proposal no longer has a Category 2 or a
        department of its own; the department is the plan's. Returns the
        proposal's ID and category as saved.
      parameters:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Add a proposal to a draft plan or change one (FA_CPA_PA_4).


                Adding a proposal needs finance.capex_scheme.create; changing
                one needs finance.capex_scheme.edit, or
                finance.capex_scheme.create for a proposal sent back to you for
                revision.


                Give the proposal's value as p_fresh_sanction_amount, the new
                money asked for in the plan's year, and
                p_approved_carryover_amount, what was approved in an earlier
                year and is carried into this one: the proposal value is then
                their sum, either one left out counts as zero, and
                p_scheme_value is not read. Give neither and p_scheme_value is
                the value, and the two amounts a proposal already has are kept
                only while they still add up to it. p_category_master_id (the
                Category) and p_budget_category_id (the Sub-Category) are values
                of your organisation's lists named Category Master and
                Sub-Category Master; one the proposal already holds is kept even
                after it is retired from its list. Saving a proposal without
                them leaves it with none.


                Every amount can have at most ten digits before the decimal
                point and two after it, 9,999,999,999.99 at the widest, and so
                can the proposal value they add up to; a wider one, or one with
                a third decimal, is refused as INVALID_LINE naming the field. An
                amount the proposal already holds, sent back unchanged, is kept
                whatever its width.


                The Proposal ID is given when it is left empty, and a typed one
                is refused where the organisation has said IDs are always given.
                A proposal consolidated from another quotes that proposal's ID,
                whatever p_investment_type or p_carried_from_line_id it is later
                saved with. A carry forward quotes the ID of the proposal it
                continues, and an ID it took that way goes with the link: change
                p_carried_from_line_id or p_investment_type so that it continues
                another proposal or none, and it takes that proposal's ID or is
                given a new one, even when the ID it had is sent back as
                p_scheme_code. Where IDs are always given, a proposal that was
                not consolidated from another and comes to continue one takes
                that one's ID whatever ID it had. The category is worked out
                from the proposal value divided by the quantity and is not taken
                from p_category, which is kept only so that older callers are
                not refused; p_category_two_id and p_department_id are kept for
                the same reason and read by nothing, since a proposal no longer
                has a Category 2 or a department of its own; the department is
                the plan's. Returns the proposal's ID and category as saved.
              properties:
                p_approved_carryover_amount:
                  format: numeric
                  type: number
                p_asset_class_id:
                  format: uuid
                  type: string
                p_budget_category_id:
                  format: uuid
                  type: string
                p_capex_nature_id:
                  format: uuid
                  type: string
                p_capex_plan_id:
                  format: uuid
                  type: string
                p_carried_actual_amount:
                  format: numeric
                  type: number
                p_carried_from_line_id:
                  format: uuid
                  type: string
                p_category:
                  format: text
                  type: string
                p_category_master_id:
                  format: uuid
                  type: string
                p_category_two_id:
                  format: uuid
                  type: string
                p_coordinator_user_id:
                  format: uuid
                  type: string
                p_cost_center_id:
                  format: uuid
                  type: string
                p_department_id:
                  format: uuid
                  type: string
                p_depreciation_rate:
                  format: numeric
                  type: number
                p_description:
                  format: text
                  type: string
                p_fresh_sanction_amount:
                  format: numeric
                  type: number
                p_investment_type:
                  format: text
                  type: string
                p_justification:
                  format: text
                  type: string
                p_line_id:
                  format: uuid
                  type: string
                p_location_id:
                  format: uuid
                  type: string
                p_name:
                  format: text
                  type: string
                p_original_sanction_amount:
                  format: numeric
                  type: number
                p_priority:
                  format: text
                  type: string
                p_quantity:
                  format: numeric
                  type: number
                p_scheme_code:
                  format: text
                  type: string
                p_scheme_value:
                  format: numeric
                  type: number
                p_site_id:
                  format: uuid
                  type: string
              required:
                - p_capex_plan_id
                - p_name
                - p_justification
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                Add a proposal to a draft plan or change one (FA_CPA_PA_4).


                Adding a proposal needs finance.capex_scheme.create; changing
                one needs finance.capex_scheme.edit, or
                finance.capex_scheme.create for a proposal sent back to you for
                revision.


                Give the proposal's value as p_fresh_sanction_amount, the new
                money asked for in the plan's year, and
                p_approved_carryover_amount, what was approved in an earlier
                year and is carried into this one: the proposal value is then
                their sum, either one left out counts as zero, and
                p_scheme_value is not read. Give neither and p_scheme_value is
                the value, and the two amounts a proposal already has are kept
                only while they still add up to it. p_category_master_id (the
                Category) and p_budget_category_id (the Sub-Category) are values
                of your organisation's lists named Category Master and
                Sub-Category Master; one the proposal already holds is kept even
                after it is retired from its list. Saving a proposal without
                them leaves it with none.


                Every amount can have at most ten digits before the decimal
                point and two after it, 9,999,999,999.99 at the widest, and so
                can the proposal value they add up to; a wider one, or one with
                a third decimal, is refused as INVALID_LINE naming the field. An
                amount the proposal already holds, sent back unchanged, is kept
                whatever its width.


                The Proposal ID is given when it is left empty, and a typed one
                is refused where the organisation has said IDs are always given.
                A proposal consolidated from another quotes that proposal's ID,
                whatever p_investment_type or p_carried_from_line_id it is later
                saved with. A carry forward quotes the ID of the proposal it
                continues, and an ID it took that way goes with the link: change
                p_carried_from_line_id or p_investment_type so that it continues
                another proposal or none, and it takes that proposal's ID or is
                given a new one, even when the ID it had is sent back as
                p_scheme_code. Where IDs are always given, a proposal that was
                not consolidated from another and comes to continue one takes
                that one's ID whatever ID it had. The category is worked out
                from the proposal value divided by the quantity and is not taken
                from p_category, which is kept only so that older callers are
                not refused; p_category_two_id and p_department_id are kept for
                the same reason and read by nothing, since a proposal no longer
                has a Category 2 or a department of its own; the department is
                the plan's. Returns the proposal's ID and category as saved.
              properties:
                p_approved_carryover_amount:
                  format: numeric
                  type: number
                p_asset_class_id:
                  format: uuid
                  type: string
                p_budget_category_id:
                  format: uuid
                  type: string
                p_capex_nature_id:
                  format: uuid
                  type: string
                p_capex_plan_id:
                  format: uuid
                  type: string
                p_carried_actual_amount:
                  format: numeric
                  type: number
                p_carried_from_line_id:
                  format: uuid
                  type: string
                p_category:
                  format: text
                  type: string
                p_category_master_id:
                  format: uuid
                  type: string
                p_category_two_id:
                  format: uuid
                  type: string
                p_coordinator_user_id:
                  format: uuid
                  type: string
                p_cost_center_id:
                  format: uuid
                  type: string
                p_department_id:
                  format: uuid
                  type: string
                p_depreciation_rate:
                  format: numeric
                  type: number
                p_description:
                  format: text
                  type: string
                p_fresh_sanction_amount:
                  format: numeric
                  type: number
                p_investment_type:
                  format: text
                  type: string
                p_justification:
                  format: text
                  type: string
                p_line_id:
                  format: uuid
                  type: string
                p_location_id:
                  format: uuid
                  type: string
                p_name:
                  format: text
                  type: string
                p_original_sanction_amount:
                  format: numeric
                  type: number
                p_priority:
                  format: text
                  type: string
                p_quantity:
                  format: numeric
                  type: number
                p_scheme_code:
                  format: text
                  type: string
                p_scheme_value:
                  format: numeric
                  type: number
                p_site_id:
                  format: uuid
                  type: string
              required:
                - p_capex_plan_id
                - p_name
                - p_justification
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                Add a proposal to a draft plan or change one (FA_CPA_PA_4).


                Adding a proposal needs finance.capex_scheme.create; changing
                one needs finance.capex_scheme.edit, or
                finance.capex_scheme.create for a proposal sent back to you for
                revision.


                Give the proposal's value as p_fresh_sanction_amount, the new
                money asked for in the plan's year, and
                p_approved_carryover_amount, what was approved in an earlier
                year and is carried into this one: the proposal value is then
                their sum, either one left out counts as zero, and
                p_scheme_value is not read. Give neither and p_scheme_value is
                the value, and the two amounts a proposal already has are kept
                only while they still add up to it. p_category_master_id (the
                Category) and p_budget_category_id (the Sub-Category) are values
                of your organisation's lists named Category Master and
                Sub-Category Master; one the proposal already holds is kept even
                after it is retired from its list. Saving a proposal without
                them leaves it with none.


                Every amount can have at most ten digits before the decimal
                point and two after it, 9,999,999,999.99 at the widest, and so
                can the proposal value they add up to; a wider one, or one with
                a third decimal, is refused as INVALID_LINE naming the field. An
                amount the proposal already holds, sent back unchanged, is kept
                whatever its width.


                The Proposal ID is given when it is left empty, and a typed one
                is refused where the organisation has said IDs are always given.
                A proposal consolidated from another quotes that proposal's ID,
                whatever p_investment_type or p_carried_from_line_id it is later
                saved with. A carry forward quotes the ID of the proposal it
                continues, and an ID it took that way goes with the link: change
                p_carried_from_line_id or p_investment_type so that it continues
                another proposal or none, and it takes that proposal's ID or is
                given a new one, even when the ID it had is sent back as
                p_scheme_code. Where IDs are always given, a proposal that was
                not consolidated from another and comes to continue one takes
                that one's ID whatever ID it had. The category is worked out
                from the proposal value divided by the quantity and is not taken
                from p_category, which is kept only so that older callers are
                not refused; p_category_two_id and p_department_id are kept for
                the same reason and read by nothing, since a proposal no longer
                has a Category 2 or a department of its own; the department is
                the plan's. Returns the proposal's ID and category as saved.
              properties:
                p_approved_carryover_amount:
                  format: numeric
                  type: number
                p_asset_class_id:
                  format: uuid
                  type: string
                p_budget_category_id:
                  format: uuid
                  type: string
                p_capex_nature_id:
                  format: uuid
                  type: string
                p_capex_plan_id:
                  format: uuid
                  type: string
                p_carried_actual_amount:
                  format: numeric
                  type: number
                p_carried_from_line_id:
                  format: uuid
                  type: string
                p_category:
                  format: text
                  type: string
                p_category_master_id:
                  format: uuid
                  type: string
                p_category_two_id:
                  format: uuid
                  type: string
                p_coordinator_user_id:
                  format: uuid
                  type: string
                p_cost_center_id:
                  format: uuid
                  type: string
                p_department_id:
                  format: uuid
                  type: string
                p_depreciation_rate:
                  format: numeric
                  type: number
                p_description:
                  format: text
                  type: string
                p_fresh_sanction_amount:
                  format: numeric
                  type: number
                p_investment_type:
                  format: text
                  type: string
                p_justification:
                  format: text
                  type: string
                p_line_id:
                  format: uuid
                  type: string
                p_location_id:
                  format: uuid
                  type: string
                p_name:
                  format: text
                  type: string
                p_original_sanction_amount:
                  format: numeric
                  type: number
                p_priority:
                  format: text
                  type: string
                p_quantity:
                  format: numeric
                  type: number
                p_scheme_code:
                  format: text
                  type: string
                p_scheme_value:
                  format: numeric
                  type: number
                p_site_id:
                  format: uuid
                  type: string
              required:
                - p_capex_plan_id
                - p_name
                - p_justification
              type: object
          text/csv:
            schema:
              description: >-
                Add a proposal to a draft plan or change one (FA_CPA_PA_4).


                Adding a proposal needs finance.capex_scheme.create; changing
                one needs finance.capex_scheme.edit, or
                finance.capex_scheme.create for a proposal sent back to you for
                revision.


                Give the proposal's value as p_fresh_sanction_amount, the new
                money asked for in the plan's year, and
                p_approved_carryover_amount, what was approved in an earlier
                year and is carried into this one: the proposal value is then
                their sum, either one left out counts as zero, and
                p_scheme_value is not read. Give neither and p_scheme_value is
                the value, and the two amounts a proposal already has are kept
                only while they still add up to it. p_category_master_id (the
                Category) and p_budget_category_id (the Sub-Category) are values
                of your organisation's lists named Category Master and
                Sub-Category Master; one the proposal already holds is kept even
                after it is retired from its list. Saving a proposal without
                them leaves it with none.


                Every amount can have at most ten digits before the decimal
                point and two after it, 9,999,999,999.99 at the widest, and so
                can the proposal value they add up to; a wider one, or one with
                a third decimal, is refused as INVALID_LINE naming the field. An
                amount the proposal already holds, sent back unchanged, is kept
                whatever its width.


                The Proposal ID is given when it is left empty, and a typed one
                is refused where the organisation has said IDs are always given.
                A proposal consolidated from another quotes that proposal's ID,
                whatever p_investment_type or p_carried_from_line_id it is later
                saved with. A carry forward quotes the ID of the proposal it
                continues, and an ID it took that way goes with the link: change
                p_carried_from_line_id or p_investment_type so that it continues
                another proposal or none, and it takes that proposal's ID or is
                given a new one, even when the ID it had is sent back as
                p_scheme_code. Where IDs are always given, a proposal that was
                not consolidated from another and comes to continue one takes
                that one's ID whatever ID it had. The category is worked out
                from the proposal value divided by the quantity and is not taken
                from p_category, which is kept only so that older callers are
                not refused; p_category_two_id and p_department_id are kept for
                the same reason and read by nothing, since a proposal no longer
                has a Category 2 or a department of its own; the department is
                the plan's. Returns the proposal's ID and category as saved.
              properties:
                p_approved_carryover_amount:
                  format: numeric
                  type: number
                p_asset_class_id:
                  format: uuid
                  type: string
                p_budget_category_id:
                  format: uuid
                  type: string
                p_capex_nature_id:
                  format: uuid
                  type: string
                p_capex_plan_id:
                  format: uuid
                  type: string
                p_carried_actual_amount:
                  format: numeric
                  type: number
                p_carried_from_line_id:
                  format: uuid
                  type: string
                p_category:
                  format: text
                  type: string
                p_category_master_id:
                  format: uuid
                  type: string
                p_category_two_id:
                  format: uuid
                  type: string
                p_coordinator_user_id:
                  format: uuid
                  type: string
                p_cost_center_id:
                  format: uuid
                  type: string
                p_department_id:
                  format: uuid
                  type: string
                p_depreciation_rate:
                  format: numeric
                  type: number
                p_description:
                  format: text
                  type: string
                p_fresh_sanction_amount:
                  format: numeric
                  type: number
                p_investment_type:
                  format: text
                  type: string
                p_justification:
                  format: text
                  type: string
                p_line_id:
                  format: uuid
                  type: string
                p_location_id:
                  format: uuid
                  type: string
                p_name:
                  format: text
                  type: string
                p_original_sanction_amount:
                  format: numeric
                  type: number
                p_priority:
                  format: text
                  type: string
                p_quantity:
                  format: numeric
                  type: number
                p_scheme_code:
                  format: text
                  type: string
                p_scheme_value:
                  format: numeric
                  type: number
                p_site_id:
                  format: uuid
                  type: string
              required:
                - p_capex_plan_id
                - p_name
                - p_justification
              type: object
        required: true
      responses:
        '200':
          description: OK
components:
  parameters:
    preferParams:
      description: Preference
      in: header
      name: Prefer
      required: false
      schema:
        enum:
          - params=single-object
        type: string

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.