| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- CREATE OR ALTER TRIGGER trg_AfterInsert_JobSTATUS_FieldHistoryTracker
- ON FieldHistoryTracker
- AFTER INSERT
- AS
- BEGIN
- SET NOCOUNT ON;
- -- Update old records to set Active = 0 (False)
- UPDATE w
- SET w.Active = 0
- FROM FieldHistoryTracker w
- INNER JOIN inserted i
- ON w.CompanyID = i.CompanyID
- AND w.RelatedKey = i.RelatedKey
- AND w.FieldCode = i.FieldCode
- where w.FieldCode in ('JOBSTATUS', 'INPROG', 'DISP')
- and w.Id != i.Id
- and i.Import = 0
- AND w.Active = 1;
- End;
- GO
- CREATE OR ALTER TRIGGER _trg_Attention_After_Update_Insert_ContractKvExt
- ON ContractKvExt
- AFTER UPDATE, INSERT
- AS
- BEGIN
- INSERT INTO FieldHistoryTracker (
- CompanyID,
- FieldCode,
- KeyType,
- RelatedKey,
- UDF,
- Active,
- Import,
- FieldDescription,
- FieldValueCode,
- FieldValueText,
- AppliedDate,
- AppliedByUserID,
- AppliedByUserName,
- LastModifiedDateTime,
- LastModifiedByName,
- LastModifiedByID
- )
- SELECT
- c.CompanyID,
- cd.AttributeID,
- 'Contract',
- c.ContractCD,
- 1, -- UDF
- 1, -- Active
- 0, -- Import
- ca.Description,
- cd.ValueID, --Was not attributeID
- cd.Description,
- c.LastModifiedDateTime,
- c.LastModifiedByID,
- u.FullName,
- c.LastModifiedDateTime,
- u.FullName,
- c.LastModifiedByID
- FROM INSERTED i
- LEFT JOIN DELETED d
- ON d.CompanyID = i.CompanyID
- AND d.RecordID = i.RecordID
- AND d.FieldName = i.FieldName
- JOIN ContractKvExt cke
- ON i.CompanyID = cke.CompanyID
- AND i.RecordID = cke.RecordID
- AND i.FieldName = cke.FieldName
- JOIN Contract c
- ON c.CompanyID = cke.CompanyID
- AND c.NoteID = cke.RecordID
- JOIN CSAttributeDetail cd
- ON cd.CompanyID = cke.CompanyID
- AND cke.ValueString = cd.ValueID
- JOIN CSAttribute ca
- ON ca.CompanyID = cd.CompanyID
- AND ca.AttributeID = cd.AttributeID
- JOIN Users u
- ON c.CompanyID = u.CompanyID
- AND u.PKID = c.LastModifiedByID
- WHERE cd.AttributeID IN ('JOBSTATUS', 'INPROG')
- AND (
- -- 1) If there's no 'old' row (d.FieldName IS NULL), it's a new insert
- d.FieldName IS NULL
- OR
- -- 2) If there's an old row, check if something truly changed
- REPLACE(d.FieldName,'Attribute','') <> REPLACE(i.FieldName,'Attribute','')
- OR d.ValueString <> i.ValueString
- );
- END;
|