ContractTrigger.sql 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. CREATE OR ALTER TRIGGER trg_AfterInsert_JobSTATUS_FieldHistoryTracker
  2. ON FieldHistoryTracker
  3. AFTER INSERT
  4. AS
  5. BEGIN
  6. SET NOCOUNT ON;
  7. -- Update old records to set Active = 0 (False)
  8. UPDATE w
  9. SET w.Active = 0
  10. FROM FieldHistoryTracker w
  11. INNER JOIN inserted i
  12. ON w.CompanyID = i.CompanyID
  13. AND w.RelatedKey = i.RelatedKey
  14. AND w.FieldCode = i.FieldCode
  15. where w.FieldCode in ('JOBSTATUS', 'INPROG', 'DISP')
  16. and w.Id != i.Id
  17. and i.Import = 0
  18. AND w.Active = 1;
  19. End;
  20. GO
  21. CREATE OR ALTER TRIGGER _trg_Attention_After_Update_Insert_ContractKvExt
  22. ON ContractKvExt
  23. AFTER UPDATE, INSERT
  24. AS
  25. BEGIN
  26. INSERT INTO FieldHistoryTracker (
  27. CompanyID,
  28. FieldCode,
  29. KeyType,
  30. RelatedKey,
  31. UDF,
  32. Active,
  33. Import,
  34. FieldDescription,
  35. FieldValueCode,
  36. FieldValueText,
  37. AppliedDate,
  38. AppliedByUserID,
  39. AppliedByUserName,
  40. LastModifiedDateTime,
  41. LastModifiedByName,
  42. LastModifiedByID
  43. )
  44. SELECT
  45. c.CompanyID,
  46. cd.AttributeID,
  47. 'Contract',
  48. c.ContractCD,
  49. 1, -- UDF
  50. 1, -- Active
  51. 0, -- Import
  52. ca.Description,
  53. cd.ValueID, --Was not attributeID
  54. cd.Description,
  55. c.LastModifiedDateTime,
  56. c.LastModifiedByID,
  57. u.FullName,
  58. c.LastModifiedDateTime,
  59. u.FullName,
  60. c.LastModifiedByID
  61. FROM INSERTED i
  62. LEFT JOIN DELETED d
  63. ON d.CompanyID = i.CompanyID
  64. AND d.RecordID = i.RecordID
  65. AND d.FieldName = i.FieldName
  66. JOIN ContractKvExt cke
  67. ON i.CompanyID = cke.CompanyID
  68. AND i.RecordID = cke.RecordID
  69. AND i.FieldName = cke.FieldName
  70. JOIN Contract c
  71. ON c.CompanyID = cke.CompanyID
  72. AND c.NoteID = cke.RecordID
  73. JOIN CSAttributeDetail cd
  74. ON cd.CompanyID = cke.CompanyID
  75. AND cke.ValueString = cd.ValueID
  76. JOIN CSAttribute ca
  77. ON ca.CompanyID = cd.CompanyID
  78. AND ca.AttributeID = cd.AttributeID
  79. JOIN Users u
  80. ON c.CompanyID = u.CompanyID
  81. AND u.PKID = c.LastModifiedByID
  82. WHERE cd.AttributeID IN ('JOBSTATUS', 'INPROG')
  83. AND (
  84. -- 1) If there's no 'old' row (d.FieldName IS NULL), it's a new insert
  85. d.FieldName IS NULL
  86. OR
  87. -- 2) If there's an old row, check if something truly changed
  88. REPLACE(d.FieldName,'Attribute','') <> REPLACE(i.FieldName,'Attribute','')
  89. OR d.ValueString <> i.ValueString
  90. );
  91. END;