Generate direct order refs
This commit is contained in:
@@ -125,14 +125,25 @@ function upsert_sales_order(PDO $pdo, array $fields): int
|
|||||||
|
|
||||||
function create_direct_sales_order(PDO $pdo, array $fields): array
|
function create_direct_sales_order(PDO $pdo, array $fields): array
|
||||||
{
|
{
|
||||||
|
$orderDate = trim((string) ($fields[':order_date'] ?? ''));
|
||||||
|
if ($orderDate === '') {
|
||||||
|
throw new RuntimeException('Missing order date');
|
||||||
|
}
|
||||||
|
|
||||||
$stmt = $pdo->prepare(
|
$stmt = $pdo->prepare(
|
||||||
"INSERT INTO sales_order (
|
"WITH next_id AS (
|
||||||
external_ref, party_id, order_source, order_date, order_status, payment_status, payment_method_id,
|
SELECT nextval(pg_get_serial_sequence('sales_order', 'id')) AS id
|
||||||
amount_net, amount_shipping, amount_tax, amount_discount, total_amount, currency, imported_at, created_at, updated_at
|
|
||||||
) VALUES (
|
|
||||||
'', :party_id, 'direct', :order_date, 'imported', 'paid', :payment_method_id,
|
|
||||||
:amount_net, 0, 0, 0, :total_amount, 'CHF', NOW(), NOW(), NOW()
|
|
||||||
)
|
)
|
||||||
|
INSERT INTO sales_order (
|
||||||
|
id, external_ref, party_id, order_source, order_date, order_status, payment_status, payment_method_id,
|
||||||
|
amount_net, amount_shipping, amount_tax, amount_discount, total_amount, currency, imported_at, created_at, updated_at
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
next_id.id,
|
||||||
|
'DIR-' || TO_CHAR(CAST(:order_date AS timestamp), 'YYYYMMDD') || '-' || LPAD(next_id.id::text, 5, '0'),
|
||||||
|
:party_id, 'direct', :order_date, 'imported', 'paid', :payment_method_id,
|
||||||
|
:amount_net, 0, 0, 0, :total_amount, 'CHF', NOW(), NOW(), NOW()
|
||||||
|
FROM next_id
|
||||||
RETURNING id, external_ref"
|
RETURNING id, external_ref"
|
||||||
);
|
);
|
||||||
$stmt->execute($fields);
|
$stmt->execute($fields);
|
||||||
|
|||||||
Reference in New Issue
Block a user