用sql直接清空POS测试数据 - xiaohao0576/odoo-doc GitHub Wiki

下面需要在postgresql中执行

\set ON_ERROR_STOP on
\c db_name

BEGIN;

-- 如果你想先试跑,执行到这里后先检查结果,没问题再手动 COMMIT;
-- 如果发现不对,直接执行 ROLLBACK;

-- 先删 POS 订单相关附件和消息,避免孤儿记录
DELETE FROM ir_attachment
WHERE res_model = 'pos.order'
  AND res_id IN (SELECT id FROM pos_order);

DELETE FROM mail_message
WHERE model = 'pos.order'
  AND res_id IN (SELECT id FROM pos_order);

DELETE FROM mail_followers
WHERE res_model = 'pos.order'
  AND res_id IN (SELECT id FROM pos_order);

-- 如果这些训练订单已经生成过发票,先删掉对应会计凭证
DELETE FROM account_move
WHERE id IN (
    SELECT account_move
    FROM pos_order
    WHERE account_move IS NOT NULL
);

-- 先删会话下的银行/收银相关记录
DELETE FROM account_bank_statement_line
WHERE pos_session_id IN (SELECT id FROM pos_session);

DELETE FROM account_payment
WHERE pos_session_id IN (SELECT id FROM pos_session);

-- 再删订单;pos_order_line 和 pos.payment 会随外键级联删除
DELETE FROM pos_order;

-- 最后删会话
DELETE FROM pos_session;

COMMIT;