2016-08-16 6 views
0

Auf dem Bildschirm CRCase, ich neue Feld UsrFinishDate hinzugefügt und es wird generiert, wenn ich den Besitzer für den Fall zuweisen, und ich durfte Benutzer DateTime von UsrFinishDate ändern, wenn sie möchten. Für meinen Zweck sind:Was der Event-Handler, wenn ich den Wert der Zeit eingeben möchte, wenn ich es ändere?

  1. Für den Standardwert von UsrFinishDate wird von SLAETA erhalten, wenn ich Benutzer zuweisen, wird es berechnet.
  2. Wenn Besitzer mehr Tage über das SLA hinzufügen möchten, so können sie die DateTime auf UsrFinishDate ändern und es sollte das neue Datum und die aktuelle Uhrzeit erhalten, wenn sie sich ändern. Aber über mein Problem, es ist nicht korrekt berechnet, weil es um 12:00 Uhr oder 12:00 Uhr die ganze Zeit Zeit bekam, während ich UsrFinishDate ändere und die Zeit immer noch die gleiche aktuelle Zeit hat, selbst wenn der Benutzer es bereits geändert hat.

enter image description here enter image description here Unten ist mein Codierung:

protected void CRCase_UsrFinishDate_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e, PXFieldDefaulting InvokeBaseHandler) 
{ 
    if (InvokeBaseHandler != null) 
    InvokeBaseHandler(cache, e); 
    CRCase row = e.Row as CRCase; 
    CRCaseExt rowExt = PXCache<CRCase>.GetExtension<CRCaseExt>(row); 

    if (row == null || row.AssignDate == null) return; 

    if (row.ClassID != null && row.Severity != null) 
    { 
    var severity = (CRClassSeverityTime)PXSelect<CRClassSeverityTime, 
         Where<CRClassSeverityTime.caseClassID, Equal<Required<CRClassSeverityTime.caseClassID>>, 
         And<CRClassSeverityTime.severity, Equal<Required<CRClassSeverityTime.severity>>>>>. 
         Select(Base, row.ClassID, row.Severity); 
    if (severity != null && severity.TimeReaction != null) 
    { 
     e.NewValue = ((DateTime)row.AssignDate).AddMinutes((int)severity.TimeReaction); 
     e.Cancel = true; 
    } 
    } 

    if (row.Severity != null && row.ContractID != null) 
    { 
    var template = (Contract)PXSelect<Contract, Where<Contract.contractID, Equal<Required<CRCase.contractID>>>>.Select(Base, row.ContractID); 
    if (template == null) return; 

    var sla = (ContractSLAMapping)PXSelect<ContractSLAMapping, 
         Where<ContractSLAMapping.severity, Equal<Required<CRCase.severity>>, 
         And<ContractSLAMapping.contractID, Equal<Required<CRCase.contractID>>>>>. 
         Select(Base, row.Severity, template.TemplateID); 
    if (sla != null && sla.Period != null) 
    { 
     e.NewValue = ((DateTime)row.AssignDate).AddMinutes((int)sla.Period); 
     e.Cancel = true; 
    } 
    } 
} 

protected void CRCase_UsrFinishDate_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) 
{ 
    var row = e.Row as CRCase; 
    CRCaseExt rowExt = PXCache<CRCase>.GetExtension<CRCaseExt>(row); 
    if(rowExt != null) 
    { 
     System.DateTime today = (DateTime)rowExt.UsrFinishDate; 
     System.TimeSpan duration = new System.TimeSpan(0, 0, 0, 0); 
     rowExt.UsrFinishDate = today.Add(duration); 
    } 
} 

Es scheint überhaupt nicht richtig. Bitte helfen !!!

Antwort

0

Könnten Sie bitte Ihr Nutzungsszenario beschreiben? Besonders diese Information ist hilfreich:

  1. Welches Datum möchten Sie in diesem Feld speichern?
  2. Was erwarten Sie dort zu sehen? Datum? Zeit?
  3. DAC Feld Definition und Attribute
  4. Was meinst du unter "Dauer" Feld?

Danke.

+0

Okay, lassen Sie mich mehr Informationen über meine Frage oben beschreiben und aktualisieren. – YSP

Verwandte Themen