CRMconnect Azuvio · Docs

Workflow: B2B Portal — Self-Service Client Order

Modules involved: Client Portal · Price Lists · Sales Orders · Clients & Client Groups · Invoices · Warehouse · Proposals · Workflow Automation · Sales Agent
Who uses it: B2B Customers (Resellers, Distributors, Corporate), Sales Agent, Warehouse, Finance
Typical duration: Hours – days (from portal order placement to delivery and invoicing)

Overview

The B2B Portal allows resellers, distributors and corporate customers to place orders directly in CRMConnect without involving the sales agent for every transaction. The customer authenticates in their own portal (/clientarea), sees the catalogue with their negotiated prices (from the Price List assigned to the customer or their customer group), adds products to the cart and places the order — which automatically becomes a Sales Order in the CRM.

The ideal scenario: recurring reorder orders, distributors with consistent volume who no longer need price negotiation for every order. The sales agent is automatically notified and can review/approve the order before processing.

Link to other workflows: Once the order is approved and reaches the warehouse, the picking → packing → AWB flow follows the same path as OmniSales Fulfillment. This document specifically covers the B2B aspects: the client portal, custom pricing and internal approval.


Flow Diagram (ASCII)

B2B CLIENT (Reseller / Distributor / Corporate)
  │  authenticated in portal: /clientarea
  │  (credentials created by agent or sent automatically on signup)
  │
  ↓
[CATALOGUE WITH CUSTOM PRICES]
  │  Price List assigned to client (or group they belong to)
  │  negotiated prices, not public prices
  │  stock visible (if permission enabled in portal settings)
  │  category filtering, product code search, minimum quantity
  │
  ↓
[ORDER PLACED FROM PORTAL]
  │  client selects products + quantities → cart → checkout
  │  → Sales Order created in CRM with status "Draft" or "Sent"
  │  → automatic notification to responsible agent (Workflow Automation)
  │  → client confirmation email (if configured)
  │
  ↓
[INTERNAL REVIEW (optional, configurable)]
  │  agent checks: stock, credit limit, special prices, additional discount
  │  ├── Approved → Sales Order confirmed → status "Accepted"
  │  ├── Modified → agent adjusts lines → client notified in portal
  │  └── Rejected → client notified with reason → can place new order
  │
  ↓
[WAREHOUSE PROCESSING]
  │  Delivery Note generated from confirmed Sales Order
  │  Packing List → Picking → AWB generated (Innoship / Couriers)
  │  status visible in client portal (if view permission enabled)
  │
  ↓
[INVOICING]
  │  invoice generated from Sales Order or on shipping
  │  visible in portal → Invoices tab
  │  client can download PDF
  │  online payment via gateway (if configured)
  │
  ↓
[HISTORY IN PORTAL]
  │  client sees all orders + statuses + invoices + delivery notes
  │  can reorder a previous order (if feature is active)
  │
[ORDER COMPLETE ✓]

Step by Step

1. Configuring B2B client portal access

Where: /admin/clients → client record → Portal tab

Before a customer can use the B2B portal, the agent configures:

Portal credentials:

Field Where Notes
Portal email Client record → Primary contact Authentication email
Password Sent via automatic email or set manually Client changes it on first login
Portal permissions Per-client settings: stock view, document download, order placement Granularly configurable

Client group:

If multiple customers share the same commercial terms, group them:

  • /admin/clientsClient Groups → Create group (e.g. "Tier 1 Distributors", "South Resellers")
  • Assign client to group
  • Assign Price List to group (price applies automatically to all clients in the group)

Access check: Client authenticates at /clientarea with the configured email and password.


2. The custom price catalogue

Where: Client portal /clientarea → Orders / Catalogue section

The customer sees only their prices, not the public prices. The mechanism:

Price hierarchy applied in the portal:

Priority Price source Condition
1 (most specific) Price List assigned directly to the client partner_client = id_client
2 Price List assigned to the client's group partner_group = id_group
3 Active promotional Price List ispromotion = 1 + within date window
4 Default Price List is_default = 1
5 Standard product price Fallback — if product is not in any price list

Configuring Price List per client:

  1. /admin/sales/price_lists → Add or Edit existing price list
  2. Partner Client field → select the client
  3. Or Partner Group field → select the client group
  4. Fill in prices for each catalogue product

Practical tip: Use the Clone function on an existing Price List to quickly create variants for similar clients. Adjust only the products with different prices.

Stock visible in catalogue:

  • Configurable in portal settings per client or globally
  • Client can see qty_available — the quantity available for reservation
  • Useful to prevent orders on 0 stock; disable if you don't want to reveal actual stock

3. Placing the order from the portal

Where: Portal /clientarea → New order / Cart

Order placement flow:

  1. Client browses the catalogue or searches by product code / name
  2. Adds desired products with quantities (respecting minimum quantity if set)
  3. Reviews cart: products, quantities, unit prices, total
  4. Selects delivery address (from saved addresses or enters a new one)
  5. Optional: adds notes / own order reference (e.g. client's internal PO number)
  6. Completes order → Order placed

What gets created in the CRM when an order is placed:

Document Initial status Note
Sales Order Draft (1) or Sent (2) Configurable — sent directly or in draft for review
Agent notification Automatic email/task via Workflow Automation
Client confirmation Optional automatic email

Key fields on the Sales Order created from portal:

Field Value Notes
clientid ID of authenticated client Link to client record
sale_agent ID of responsible agent Agent associated with client
price_list_id Applied Price List ID Client's prices
Product lines From client's cart Quantities + prices from Price List
Client notes Notes field from portal Internal PO reference, delivery instructions

Sales Order statuses:

Code Status Description
1 Draft Created, unreviewed by agent
2 Sent Visible to client in portal as sent
3 Declined Rejected internally (client notified)
4 Accepted Confirmed → can generate invoice/delivery note
5 Expired Expiry date passed

4. Automatic notification and internal review (optional)

Where: /admin/estimates · /admin/workflow_automation

4.1 Automatic agent notification

When an order is placed from the portal, Workflow Automation automatically triggers the notification:

Workflow Automation configuration:

  • Trigger: Sales Order → Created (or Status Changed to Draft)
  • Condition (optional): sale_agent = Agent X → notify only the responsible agent
  • Actions:
    • Send Email → responsible agent: "New order from [Client] — [amount]"
    • Create Task → review task assigned to agent (if mandatory approval)
    • Webhook → external integration (Slack, Teams) if used

4.2 Agent review

The agent opens the Sales Order from the notification or from /admin/estimates:

What the agent checks:

Check Where Action if issue
Available stock Product record → Inventory Contact warehouse; propose alternative delivery date
Client credit limit Client record → Balance If exceeded: Hold until regularised
Correct prices Sales Order lines Compare with Price List; correct if error
Additional discount Negotiated by phone Add discount on line or globally on Sales Order
Delivery address Delivery tab Verify new address is correct

Review scenarios:

Order OK → Sales Order: status Accepted (4) → continues to warehouse

Order needs modification →
  Agent edits lines
  Client notified via portal / email
  Client confirms modifications (or places new order)

Order rejected (e.g. client blocked on payment) →
  Sales Order: status Declined (3)
  Automatic email to client with reason

Approval without review: If the customer is trusted and prices are standardised, you can configure automatic approval — Sales Order moves directly to Accepted without human intervention (Workflow Automation → Update Field: status = 4).


5. If the client requests a quote before ordering — Proposals

Where: /admin/proposals

Some B2B customers request a formal quote before placing an order (tenders, internal budget approval).

Flow with Proposal:

Client requests quote (phone/email) → Agent creates Proposal in CRM
  │  Proposal sent → portal link or email
  │  Client reviews in portal
  │
  ├── Accepted → Convert Proposal → Sales Order (order)
  │             → rest of normal flow
  │
  └── Negotiations → agent updates Proposal (versions)
                → sends again

Proposal statuses:

Code Status
6 Draft
4 Sent — sent to client
1 Open/Viewed — client opened the link
3 Accepted
2 Declined
5 Revised — new version sent

6. Warehouse processing

Where: /admin/warehouse/manage_delivery · /admin/warehouse/manage_packing_list

Once the Sales Order is confirmed (Accepted status), the flow enters the warehouse:

Creating the Delivery Note:

  • Automatic from confirmed Sales Order → if auto_create_goods_delivery = 1
  • Or manual: from Sales Order → Generate Delivery Note button

Picking → Packing → AWB: Same flow as in OmniSales Fulfillment, sections 2-4:

  1. Delivery Note (ready_for_packing)
  2. Packing List with parcel dimensions
  3. AWB generated via Innoship or direct Couriers
  4. Status updated → visible in client portal

Status visibility in portal:

What client sees Condition
Sales Order status: Draft / Accepted / Declined Always
Delivery status: Preparing / Shipped / Delivered If status view permission is enabled
AWB number + courier tracking link If sent in email or displayed in portal

7. Invoicing and payment

Where: /admin/invoices · Client portal /clientarea → Invoices tab

Invoice generation:

Mode Trigger Configuration
Automatic on Sales Order Accepted Sales Order confirmed estimate_auto_convert_to_invoice_on_client_accept = 1
Automatic on shipping AWB generated / Shipping status Channel settings or Workflow Automation
Manual Operator from Sales Order → Convert to Invoice Default

Invoice in the client portal:

Once generated, the invoice appears in the client portal:

  • Invoices tab → invoice list with status (Draft / Sent / Paid / Overdue)
  • Download PDF — client downloads the invoice for their own accounting
  • Online payment — if payment gateway configured (Stripe, PayU, etc.) → "Pay now" button
  • Total balance — summary of amounts owed per client

B2B payment terms: The payment term (30, 60, 90 days) is set on the client record and automatically carried over to the invoice. The invoice appears with Overdue (4) status if the term is exceeded — automatically triggers reminder emails via Workflow Automation.

eInvoice B2B: If the customer is a legal entity with a VAT number → eInvoice automatically sent to ANAF on invoice issue (same mechanism as in E-commerce Fulfillment).


8. Order history in the portal

Where: Portal /clientarea → Orders / Invoices section

The B2B customer has full visibility of the commercial relationship history:

Portal section Contents Available actions
Orders All Sales Orders (statuses, dates, amounts) View detail, place similar order
Invoices All invoices with payment status PDF download, online payment
Delivery Notes Issued delivery notes PDF download
Proposals Quotes sent by agent Accept / Decline
Profile Company data, addresses, contacts Self-service editing

Practical tip — recurring orders: If the client places the same order monthly (e.g. standard reorder), the agent can create a Sales Order Template or enable recurring invoicing to automate periodic orders.


What gets created automatically

Trigger event Automatically created document Condition
Client places order from portal Sales Order with order lines Portal active, client authenticated
Sales Order created Agent notification (email + task) Workflow Automation configured
Sales Order created Confirmation email to client Email template configured for event
Sales Order Accepted Delivery Note auto_create_goods_delivery = 1
Delivery Note approved Stock decremented from warehouse Automatic on approval
Packing List + AWB generated wh_omni_shipments, tracking number Innoship API configured
Sales Order Accepted Invoice (if auto-convert enabled) estimate_auto_convert_to_invoice_on_client_accept = 1
Invoice issued, B2B client with VAT number eInvoice XML sent to ANAF eInvoice module active
Invoice Overdue Payment reminder email to client Workflow Automation configured

Where the flow can stall

Problem Probable cause Solution
Client cannot authenticate in portal Incorrect credentials or deactivated account Password reset from client record → /admin/clients
Client doesn't see negotiated prices Price List not assigned to client or group Check in /admin/sales/price_lists that client is set as Partner Client
Client sees public prices, not negotiated ones Default Price List active and has wrong priority Check hierarchy: Price List per client > per group > default
0 stock visible in catalogue but physically exists CRM inventory not updated Check pending receipt notes; manually update stock if needed
Placed order not appearing in /admin/estimates Portal workflow not triggered, application error Check application logs; if persistent, contact technical support
Agent not receiving the notification Workflow Automation inactive or wrong condition Check /admin/workflow_automation → Sales Order Created workflow
Sales Order stuck in Draft — nobody approves Responsible agent absent or unclear process Automatic delegation: Workflow Automation → if Draft > 24h → manager task
Delivery note blocked (insufficient stock) Stock consumed between order placement and processing Contact client; propose alternative delivery date or partial delivery
Invoice not appearing in client portal Invoice status in Draft, not Sent Change invoice status to Sent (status = 1)
Credit limit exceeded, order blocked Balance owed exceeds set credit limit Regularise client balance or temporarily increase credit limit
Client cannot download invoice PDF Download permission disabled on portal account Enable from portal settings per client

Relevant reports

Report URL What to monitor
B2B orders (Sales Orders) per client /admin/estimates filter by client Order volume per client, frequency
Unconfirmed Sales Orders /admin/estimates?status=1 (Draft) Orders awaiting review — approval SLA
Uncollected B2B invoices /admin/invoices?status=1 Cash flow, client receivables
Overdue invoices /admin/invoices?status=4 Receivables collection, escalation
Clients per group / Price List /admin/clients group filter Portfolio segmentation
Sales agent report /admin/sales/sales_agent Orders attributed per agent
Client portal activity Portal logs Access frequency, last login
Current stock vs minimum /admin/warehouse/warehouse_history + Commodities Anticipate stockouts for recurring B2B orders

Modules involved — detailed documentation

Portal & Clients: Client Portal · Clients & Client Groups

Prices & Orders: Price Lists · Sales Orders · Proposals

Finance: Invoices · Payments

Warehouse: Delivery Notes · Packing Lists · Inventory History

Automation: Workflow Automation

Sales team: Sales Agent

Related workflows: Lead → Cash · OmniSales Fulfillment · E-commerce Fulfillment · Full Commercial Cycle

← Back to Workflows

Tip

Assign the correct Price List to each client before granting portal access — the B2B portal catalog displays personalised prices from the assigned list, so without the right list a client sees incorrect pricing from the first login.

Note

B2B portal permissions are granular per contact, not per company. A single company can have multiple contacts with different access levels — configure permissions per contact rather than assuming all contacts from the same company see the same data.