Add allow_negative_stock toggle for sales, remissions, quotes, layaways and service orders
This commit is contained in:
@@ -1133,17 +1133,17 @@ def update_counter_remission_config():
|
||||
@config_bp.route('/sales-settings', methods=['GET'])
|
||||
@require_auth('pos.view')
|
||||
def get_sales_settings():
|
||||
"""Get sales-related settings (zero-price sales, etc.)."""
|
||||
"""Get sales-related settings (zero-price sales, negative stock)."""
|
||||
conn = get_tenant_conn(g.tenant_id)
|
||||
cur = conn.cursor()
|
||||
cur.execute("SELECT value FROM tenant_config WHERE key = 'allow_zero_price_sales'")
|
||||
row = cur.fetchone()
|
||||
cur.execute("SELECT key, value FROM tenant_config WHERE key IN ('allow_zero_price_sales', 'allow_negative_stock')")
|
||||
rows = {k: v for k, v in cur.fetchall()}
|
||||
cur.close(); conn.close()
|
||||
# Default to true to avoid breaking existing tenants that sell at $0.
|
||||
allow = True
|
||||
if row:
|
||||
allow = str(row[0]).lower() in ('true', '1', 'yes')
|
||||
return jsonify({'allow_zero_price_sales': allow})
|
||||
# Default allow_zero_price_sales to true to avoid breaking existing tenants.
|
||||
allow = str(rows.get('allow_zero_price_sales', 'true')).lower() in ('true', '1', 'yes')
|
||||
# Default allow_negative_stock to false (safer).
|
||||
neg = str(rows.get('allow_negative_stock', 'false')).lower() in ('true', '1', 'yes')
|
||||
return jsonify({'allow_zero_price_sales': allow, 'allow_negative_stock': neg})
|
||||
|
||||
|
||||
@config_bp.route('/sales-settings', methods=['PUT'])
|
||||
@@ -1152,15 +1152,20 @@ def update_sales_settings():
|
||||
"""Update sales-related settings."""
|
||||
data = request.get_json() or {}
|
||||
allow = 'true' if data.get('allow_zero_price_sales') else 'false'
|
||||
neg = 'true' if data.get('allow_negative_stock') else 'false'
|
||||
conn = get_tenant_conn(g.tenant_id)
|
||||
cur = conn.cursor()
|
||||
cur.execute("""
|
||||
INSERT INTO tenant_config (key, value) VALUES (%s, %s)
|
||||
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value
|
||||
""", ('allow_zero_price_sales', allow))
|
||||
cur.execute("""
|
||||
INSERT INTO tenant_config (key, value) VALUES (%s, %s)
|
||||
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value
|
||||
""", ('allow_negative_stock', neg))
|
||||
conn.commit()
|
||||
cur.close(); conn.close()
|
||||
return jsonify({'allow_zero_price_sales': allow == 'true'})
|
||||
return jsonify({'allow_zero_price_sales': allow == 'true', 'allow_negative_stock': neg == 'true'})
|
||||
|
||||
|
||||
@config_bp.route('/onboarding-status', methods=['GET'])
|
||||
|
||||
Reference in New Issue
Block a user