Advertisement
Guest User

update_triggers_only.sql

a guest
Nov 20th, 2014
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.09 KB | None | 0 0
  1. --
  2. -- add triggers to populate this values when creating an invoice, paying it, or deleting record
  3. --
  4.  
  5. DROP TRIGGER IF EXISTS `ccinv_total_ins`;
  6. DELIMITER //
  7. CREATE TRIGGER `ccinv_total_ins` AFTER INSERT ON `cc_invoice_item`
  8.  FOR EACH ROW BEGIN
  9. UPDATE cc_invoice SET total_amount=total_amount+(NEW.price + round(NEW.price*NEW.vat/100,2)),
  10.  
  11. open_amount=open_amount+(NEW.price + round(NEW.price*NEW.vat/100,2)) WHERE cc_invoice.id=NEW.id_invoice;
  12. END
  13. //
  14. DELIMITER ;
  15.  
  16. DROP TRIGGER IF EXISTS `ccinv_total_del`;
  17. DELIMITER //
  18. CREATE TRIGGER `ccinv_total_del` AFTER DELETE ON `cc_invoice_item`
  19.  FOR EACH ROW BEGIN
  20. UPDATE cc_invoice SET total_amount=total_amount-(OLD.price + round(OLD.price*OLD.vat/100,2)),
  21.  
  22. open_amount=open_amount-(OLD.price + round(OLD.price*OLD.vat/100,2)) WHERE cc_invoice.id=OLD.id_invoice;
  23. END
  24. //
  25. DELIMITER ;
  26.  
  27. DROP TRIGGER IF EXISTS `ccinvpay_payment_ins`;
  28. DELIMITER //
  29. CREATE TRIGGER `ccinvpay_payment_ins` AFTER INSERT ON `cc_invoice_payment`
  30.  FOR EACH ROW BEGIN
  31. UPDATE cc_invoice SET open_amount=open_amount-(SELECT payment FROM cc_logpayment WHERE cc_logpayment.id=NEW.id_payment)
  32.  
  33. WHERE cc_invoice.id=NEW.id_invoice;
  34. END
  35. //
  36. DELIMITER ;
  37.  
  38. DROP TRIGGER IF EXISTS `ccinvpay_payment_del`;
  39. DELIMITER //
  40. CREATE TRIGGER `ccinvpay_payment_del` AFTER DELETE ON `cc_invoice_payment`
  41.  FOR EACH ROW BEGIN
  42. UPDATE cc_invoice SET open_amount=open_amount+(SELECT payment FROM cc_logpayment WHERE cc_logpayment.id=OLD.id_payment)
  43.  
  44. WHERE cc_invoice.id=OLD.id_invoice;
  45. END
  46. //
  47. DELIMITER ;
  48.  
  49.  
  50. DROP TRIGGER IF EXISTS `cclogpayment_upd`;
  51. DELIMITER //
  52. CREATE TRIGGER `cclogpayment_upd` AFTER UPDATE ON `cc_logpayment`
  53.  FOR EACH ROW BEGIN
  54. UPDATE cc_invoice SET open_amount=open_amount+(OLD.payment-NEW.payment)
  55. WHERE cc_invoice.id=(SELECT id_invoice FROM cc_invoice_payment WHERE id_payment=OLD.id);
  56. END
  57. //
  58. DELIMITER ;
  59.  
  60. DROP TRIGGER IF EXISTS `ccinvoice_upd`;
  61. DELIMITER //
  62. CREATE TRIGGER `ccinvoice_upd` BEFORE UPDATE ON `cc_invoice`
  63.  FOR EACH ROW BEGIN
  64.    IF (NEW.open_amount = 0) THEN
  65.      SET NEW.paid_status = 1;
  66.    ELSE
  67.      SET NEW.paid_status = 0;
  68.    END IF;
  69. END
  70. //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement