InvoiceTrigger.sql 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. CREATE OR ALTER TRIGGER _trg_Attention_After_Update_Insert_InvoiceKvExt
  2. ON ARRegisterKvExt
  3. AFTER UPDATE, INSERT
  4. AS
  5. BEGIN
  6. INSERT INTO FieldHistoryTracker (
  7. CompanyID,
  8. FieldCode,
  9. KeyType,
  10. RelatedKey,
  11. UDF,
  12. Active,
  13. Import,
  14. FieldDescription,
  15. FieldValueCode,
  16. FieldValueText,
  17. AppliedDate,
  18. AppliedByUserID,
  19. AppliedByUserName,
  20. LastModifiedDateTime,
  21. LastModifiedByName,
  22. LastModifiedByID
  23. )
  24. SELECT
  25. c.CompanyID,
  26. cd.AttributeID,
  27. 'Invoice',
  28. c.RefNbr ,
  29. 1, -- UDF
  30. 1, -- Active
  31. 0, -- Import
  32. ca.Description,
  33. cd.ValueID, --Was not attributeID
  34. cd.Description,
  35. c.LastModifiedDateTime,
  36. c.LastModifiedByID,
  37. u.FullName,
  38. c.LastModifiedDateTime,
  39. u.FullName,
  40. c.LastModifiedByID
  41. FROM INSERTED i
  42. LEFT JOIN DELETED d
  43. ON d.CompanyID = i.CompanyID
  44. AND d.RecordID = i.RecordID
  45. AND d.FieldName = i.FieldName
  46. JOIN ARRegisterKvExt cke
  47. ON i.CompanyID = cke.CompanyID
  48. AND i.RecordID = cke.RecordID
  49. AND i.FieldName = cke.FieldName
  50. join ARRegister c
  51. ON c.CompanyID = cke.CompanyID
  52. AND c.NoteID = cke.RecordID
  53. JOIN CSAttributeDetail cd
  54. ON cd.CompanyID = cke.CompanyID
  55. AND cke.ValueString = cd.ValueID
  56. JOIN CSAttribute ca
  57. ON ca.CompanyID = cd.CompanyID
  58. AND ca.AttributeID = cd.AttributeID
  59. JOIN Users u
  60. ON c.CompanyID = u.CompanyID
  61. AND u.PKID = c.LastModifiedByID
  62. WHERE cd.AttributeID IN ('DISP')
  63. AND (
  64. -- 1) If there's no 'old' row (d.FieldName IS NULL), it's a new insert
  65. d.FieldName IS NULL
  66. OR
  67. -- 2) If there's an old row, check if something truly changed
  68. REPLACE(d.FieldName,'Attribute','') <> REPLACE(i.FieldName,'Attribute','')
  69. OR d.ValueString <> i.ValueString
  70. );
  71. END;