select w.writeoff_id, w.writeoff_no, w.ar_bill_id, w.bill_no, w.customer_id, w.receipt_id, w.account_id, w.currency, w.writeoff_amount, w.balance_flow_id, w.reverse_flow_id, w.writeoff_date, w.status, w.remark, w.create_user_id, w.create_by, w.create_time, w.cancel_user_id, w.cancel_by, w.cancel_time, w.cancel_remark, b.bill_name, b.customer_name from ar_balance_writeoff w left join ar_bill b on b.ar_bill_id = w.ar_bill_id insert into ar_balance_writeoff ( writeoff_no, ar_bill_id, bill_no, customer_id, receipt_id, account_id, currency, writeoff_amount, balance_flow_id, reverse_flow_id, writeoff_date, status, remark, create_user_id, create_by, create_time ) values ( #{writeoffNo}, #{arBillId}, #{billNo}, #{customerId}, #{receiptId}, #{accountId}, #{currency}, #{writeoffAmount}, #{balanceFlowId}, #{reverseFlowId}, #{writeoffDate}, #{status}, #{remark}, #{createUserId}, #{createBy}, sysdate() ) update ar_balance_writeoff set account_id = #{accountId}, balance_flow_id = #{balanceFlowId} where writeoff_id = #{writeoffId} update ar_balance_writeoff set status = #{status}, reverse_flow_id = #{reverseFlowId}, cancel_user_id = #{cancelUserId}, cancel_by = #{cancelBy}, cancel_time = sysdate(), cancel_remark = #{cancelRemark} where writeoff_id = #{writeoffId} and status = #{effectiveStatus}