{"version":3,"file":"sin-wc.mjs","sources":["../../../projects/sin-wc/src/lib/download-pdf.ts","../../../projects/sin-wc/src/lib/components/webcau-file-list.component.ts","../../../projects/sin-wc/src/lib/components/webcau-select.component.ts","../../../projects/sin-wc/src/lib/components/webcau-provvigioni-forzate.component.ts","../../../projects/sin-wc/src/lib/components/webcau-allegati/webcau-allegati-modal-testo/webcau-allegati-modal-testo.component.ts","../../../projects/sin-wc/src/lib/components/webcau-allegati/interfaces/azienda-coobbligato.ts","../../../projects/sin-wc/src/lib/components/webcau-allegati/webcau-allegati-modal-coobbligati/webcau-allegati-modal-coobbligati.component.ts","../../../projects/sin-wc/src/lib/components/webcau-allegati/webcau-allegati-modal-allegato-c/webcau-allegati-modal-allegato-c.component.ts","../../../projects/sin-wc/src/lib/components/webcau-allegati/webcau-allegati.component.ts","../../../projects/sin-wc/src/lib/components/webcau-coobbligati.component.ts","../../../projects/sin-wc/src/lib/components/webcau-partite/webcau-partite.component.ts","../../../projects/sin-wc/src/lib/components/webcau-ati-mandanti/webcau-ati-mandanti.component.ts","../../../projects/sin-wc/src/lib/sin-wc.module.ts","../../../projects/sin-wc/src/public-api.ts","../../../projects/sin-wc/src/sin-wc.ts"],"sourcesContent":["function getFileNameFromContentDispostionHeader(\r\n  contentDisposition: string,\r\n): string | undefined {\r\n  const fileNameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\r\n  const matches = fileNameRegex.exec(contentDisposition);\r\n  if (matches != null && matches[1]) {\r\n    return matches[1].replace(/['\"]/g, '');\r\n  } else {\r\n    return undefined;\r\n  }\r\n}\r\n\r\nfunction saveBlob(fileName: string, blob: Blob, downloadFileEnable: boolean) {\r\n  // MS Edge and IE don't allow using a blob object directly as link href, instead it is necessary to use msSaveOrOpenBlob\r\n  if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n    (window.navigator as any).msSaveOrOpenBlob(blob);\r\n    return;\r\n  }\r\n\r\n  // For other browsers: create a link pointing to the ObjectURL containing the blob.\r\n  const objUrl = window.URL.createObjectURL(blob);\r\n\r\n  if (downloadFileEnable) {\r\n    const link = document.createElement('a');\r\n    link.href = objUrl;\r\n    link.download = fileName;\r\n    link.click();\r\n\r\n    // For Firefox it is necessary to delay revoking the ObjectURL.\r\n    setTimeout(() => {\r\n      if (window.navigator.userAgent.indexOf('firefox') > -1) {\r\n        window.URL.revokeObjectURL(objUrl);\r\n      }\r\n    }, 250);\r\n  } else {\r\n    // open in window\r\n    window.open(objUrl);\r\n  }\r\n}\r\n\r\nexport interface Options {\r\n  url: string;\r\n  body?: BodyInit;\r\n  onDownloadProgress?: (receivedLength: number, contentLength: number) => void;\r\n  fetchOptions?:\r\n    | RequestInit\r\n    | ((fetchOptions: RequestInit) => Promise<RequestInit>);\r\n}\r\n\r\nexport async function downloadFile(options: Options) {\r\n  const {\r\n    url,\r\n    onDownloadProgress,\r\n    fetchOptions,\r\n    body,\r\n  } = options;\r\n\r\n  let requestInit: RequestInit = {\r\n    method: 'POST',\r\n    headers: {\r\n      'Content-Type': 'application/json',\r\n    },\r\n    body,\r\n  };\r\n\r\n  if (typeof fetchOptions === 'function') {\r\n    requestInit = await fetchOptions(requestInit);\r\n  } else if (typeof fetchOptions === 'object') {\r\n    requestInit = {...requestInit, ...fetchOptions};\r\n  }\r\n\r\n  const response = await fetch(url, requestInit);\r\n\r\n  if (!response.ok) {\r\n    const responseBody = await response.text();\r\n    throw new Error(responseBody ?? 'Error try again');\r\n  }\r\n\r\n  const reader = response.body.getReader();\r\n\r\n  const contentLength = Number(response.headers.get('Content-Length'));\r\n\r\n  let receivedLength = 0;\r\n  const chunks = [];\r\n  while (true) {\r\n    const {done, value} = await reader.read();\r\n\r\n    if (done) {\r\n      break;\r\n    }\r\n\r\n    chunks.push(value);\r\n    receivedLength += value.length;\r\n\r\n    if (typeof onDownloadProgress !== 'undefined') {\r\n      onDownloadProgress(receivedLength, contentLength);\r\n    }\r\n  }\r\n\r\n  const type = response.headers.get('content-type')?.split(';')[0];\r\n\r\n  // It is necessary to create a new blob object with mime-type explicitly set for all browsers except Chrome, but it works for Chrome too.\r\n  const blob = new Blob(chunks, {type});\r\n\r\n  const contentDisposition = response.headers.get('content-disposition');\r\n\r\n  const fileName = getFileNameFromContentDispostionHeader(contentDisposition);\r\n\r\n  return {\r\n    fileName,\r\n    blob,\r\n  };\r\n}\r\n\r\nexport interface DownloadAndSaveFileOptions extends Options {\r\n  defaultFileName: string;\r\n}\r\n\r\nexport async function downloadAndSaveFile(\r\n  options: DownloadAndSaveFileOptions,\r\n  downloadFileEnable: boolean = true\r\n) {\r\n  try {\r\n    const {defaultFileName, ...rest} = options;\r\n\r\n    const {fileName, blob} = await downloadFile(rest);\r\n\r\n    saveBlob(fileName ?? defaultFileName, blob, downloadFileEnable);\r\n  } catch (error) {\r\n    console.log('DOWNLOAD ERROR', error);\r\n  }\r\n}\r\n","import {Component, Output, EventEmitter, Input, OnInit, ViewChildren, QueryList} from '@angular/core';\r\nimport {Allegato, StoreFolder} from '../interfaces/allegato';\r\nimport {downloadAndSaveFile, DownloadAndSaveFileOptions} from '../download-pdf';\r\nimport {faLock, faUnlock, faEye, faEyeSlash, faTimes, faRedo} from '@fortawesome/free-solid-svg-icons';\r\nimport {SinTableSortableDirective, SortEvent} from 'sin-directives';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-file-list',\r\n  template: `\r\n    <div class=\"row\" [ngClass]=\"(reftable === 'RVn') ? 'valutazione-file-list' : 'annullamento-file-list'\">\r\n      <div *ngIf=\"title && title !== ''\" class=\"col-md-12 text-center\">\r\n        <h3>{{title}}</h3>\r\n      </div>\r\n      <div class=\"col-md-12 px-0\" *ngIf=\"dataLoaded && dataList?.length\">\r\n        <table class=\"table\">\r\n          <thead [ngClass]=\"(reftable === 'RVn') ? 'valutazione-thead' : 'annullamento-thead'\">\r\n          <tr class=\"text-center\">\r\n            <th scope=\"col\" *ngIf=\"!readonly\">Azione</th>\r\n            <th scope=\"col\" sortable=\"AuthorRagioneSociale\" (sort)=\"onSort($event)\">Autore</th>\r\n            <th scope=\"col\" sortable=\"Progressivo\" (sort)=\"onSort($event)\">Progressivo<br>Documento</th>\r\n            <th scope=\"col\" sortable=\"StatoAllegatoDescr\" (sort)=\"onSort($event)\">Stato<br>Allegato</th>\r\n            <th scope=\"col\" sortable=\"ShowInFileManager\" (sort)=\"onSort($event)\">Visibilità nel<br>Fascicolo</th>\r\n            <th scope=\"col\" sortable=\"FileName\" (sort)=\"onSort($event)\">File</th>\r\n            <th scope=\"col\" sortable=\"CategoriaDescr\" (sort)=\"onSort($event)\">Categoria Allegato</th>\r\n            <th scope=\"col\" *ngIf=\"(reftable === 'RVn')\">Note</th>\r\n          </tr>\r\n          </thead>\r\n          <tbody>\r\n          <tr *ngFor=\"let file of dataList; let i = index\" (mouseenter)=\"itemHoverIn.emit(file.DocumentoID)\"\r\n              (mouseleave)=\"itemHoverOut.emit(file.DocumentoID)\" [ngClass]=\"getColor(i)\">\r\n            <td class=\"text-center\" *ngIf=\"!readonly\">\r\n              <button *ngIf=\"file.BtnSetNonEliminabileIsVisible\" class=\"btn btn-sm btn-primary m-1\" type=\"button\"\r\n                      (click)=\"allegatoSetNonEliminabile.emit(file)\"\r\n                      title=\"Contrassegna l'allegato come 'Da non Eliminare' per impedirne la cancellazione\">\r\n                <fa-icon [icon]=\"faIcons.faLock\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnSetEliminabileIsVisible\" class=\"btn btn-sm btn-primary m-1\" type=\"button\"\r\n                      (click)=\"allegatoSetEliminabile.emit(file)\"\r\n                      title=\"Toglie il contrassegno 'Da non Eliminare' e rende disponibile la funzionalità di elimnazione dell'allegato\">\r\n                <fa-icon [icon]=\"faIcons.faUnlock\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnAllegatoSetVisibileInFileManagerIsVisible\" class=\"btn btn-sm btn-success m-1\"\r\n                      type=\"button\"\r\n                      title=\"Rendi visibile in Fascicolo\" (click)=\"allegatoSetVisibileInFileManager.emit(file)\">\r\n                <fa-icon [icon]=\"faIcons.faEye\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnAllegatoSetNonVisibileInFileManagerIsVisible\" class=\"btn btn-sm btn-success m-1\"\r\n                      type=\"button\"\r\n                      title=\"Togli visibilità dal Fascicolo\" (click)=\"allegatoSetVisibileInFileManager.emit(file)\">\r\n                <fa-icon [icon]=\"faIcons.faEyeSlash\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnEliminaAllegatoIsVisible && reftable === 'RVn'\" class=\"btn btn-sm btn-danger m-1\"\r\n                      type=\"button\" (click)=\"allegatoElimina.emit(file)\"\r\n                      title=\"Contrassegna l'allegato come 'Da Eliminare'. Il file verrà eliminato dal sistema in un secondo momento\">\r\n                <fa-icon [icon]=\"faIcons.faTimes\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnEliminaAllegatoIsVisible && reftable !== 'RVn'\" class=\"btn btn-sm btn-danger m-1\"\r\n                      type=\"button\" (click)=\"allegatoElimina.emit(file)\"\r\n                      title=\"Elimina Allegato dal Documento\">\r\n                <fa-icon [icon]=\"faIcons.faTimes\" size=\"sm\"></fa-icon>\r\n              </button>\r\n              <button *ngIf=\"file.BtnRipristinaAllegatoIsVisible\" class=\"btn btn-sm btn-warning m-1\" type=\"button\"\r\n                      title=\"Rimette in vigore l'allegato e lo rimuove dalla lista dei files da eliminare\"\r\n                      (click)=\"allegatoRipristina.emit(file)\">\r\n                <fa-icon [icon]=\"faIcons.faRedo\" size=\"sm\"></fa-icon>\r\n              </button>\r\n            </td>\r\n            <td class=\"text-center\" >{{file.AuthorRagioneSociale}}</td>\r\n            <td class=\"text-center\">{{file.Progressivo}}</td>\r\n            <td class=\"text-center font-weight-bold\">{{file.StatoAllegatoDescr}}</td>\r\n            <td class=\"text-center font-weight-bold\">{{file.ShowInFileManager ? \"Si\" : \"No\"}}</td>\r\n            <td class=\"text-center\">\r\n              <a *ngIf=\"!file.IsDeletedFromDisk\"\r\n                 [ngClass]=\"(file.IsDeleted) ? 'btn btn-link-gray' : 'btn btn-link'\"\r\n                 download=\"{{file.FileName}}\"\r\n                 target=\"_blank\"\r\n                 title=\"{{(file.CreationDate) ? ('File caricato il ' + (file.CreationDate | date: 'dd/MM/YYYY HH:mm')) : ''}}\"\r\n                 (click)=\"download(file.UID)\">\r\n                {{file.FileName}}\r\n              </a>\r\n              <span *ngIf=\"file.IsDeletedFromDisk\"\r\n                    title=\"{{(file.CancellazioneLogicaData) ? ('File cancellato il ' + (file.CancellazioneLogicaData | date: 'dd/MM/YYYY HH:mm')) : ''}}\"\r\n                    style=\"text-decoration: line-through; margin-left: 12px;\">{{file.FileName}}\r\n              </span>\r\n            </td>\r\n            <!-- Lista delle categorie nel caso in cui NON ci si trovi in RVn -->\r\n            <td class=\"text-center\" *ngIf=\"(reftable !== 'RVn')\">\r\n              <select *ngIf=\"!readonly\" class=\"col-md-12\" [ngClass]=\"(file.IsDeleted || file.IsDeletedFromDisk || !file.Enable) ? '' : 'mt-2'\"\r\n                      [(ngModel)]=\"file.CategoriaID\" (ngModelChange)=\"categoriaUpdate(file)\" [disabled]=\"file.IsDeleted || file.IsDeletedFromDisk || !file.Enable\">\r\n                <option *ngFor=\"let categoria of file.SottoCategorieList\" [ngValue]=\"categoria.Id\">{{categoria.Name}}</option>\r\n              </select>\r\n              <span *ngIf=\"readonly\" class=\"col-md-12\">{{file.CategoriaDescr}}</span>\r\n            </td>\r\n            <!--Span descrizione categoria nel caso in cui ci si trovi in RVn -->\r\n            <td class=\"text-center\" *ngIf=\"(reftable === 'RVn')\">\r\n              <span class=\"col-md-12\">{{file?.CategoriaDescr}}</span>\r\n            </td>\r\n            <!-- Note allegato, mostrate nel caso ci si trovi in RVn-->\r\n            <td class=\"text-center\" *ngIf=\"(reftable === 'RVn')\">\r\n              <span class=\"col-md-12\">{{file?.Note}}</span>\r\n            </td>\r\n          </tr>\r\n          </tbody>\r\n        </table>\r\n      </div>\r\n      <div class=\"col-md-12\" *ngIf=\"!dataLoaded\">\r\n        <div *ngIf=\"dataLoaded === false\" class=\"col-md-10 offset-md-1 col-sm-12 text-center\">\r\n          <div class=\"row\">\r\n            <div class=\"col text-center\">\r\n              <p class=\"h5\">Nessun allegato disponible</p>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div *ngIf=\"dataLoaded === undefined\" class=\"col-md-10 offset-md-1 col-sm-12 text-center\">\r\n          <h4>Caricamento in corso...</h4>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-md-12\" *ngIf=\"dataLoaded && !dataList?.length\">\r\n        <div class=\"col-md-10 offset-md-1 col-sm-12 text-center\">\r\n          <h4 style=\"color: red\">{{this.errorMessage}}</h4>\r\n        </div>\r\n      </div>\r\n      <div class=\"spinner\" *ngIf=\"isLoading\"></div>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .valutazione-file-list {\r\n      margin: 0 20px 0 0;\r\n      padding-right: 1px;\r\n      border: 1px solid black;\r\n      background: #fff;\r\n      font: 12px/16px \"segoe ui\", arial, sans-serif;\r\n      font-style: normal;\r\n      font-variant-ligatures: normal;\r\n      font-variant-caps: normal;\r\n      font-variant-numeric: normal;\r\n      font-variant-east-asian: normal;\r\n      font-weight: normal;\r\n      font-stretch: normal;\r\n      font-family: \"segoe ui\", arial, sans-serif;\r\n    }\r\n\r\n    .valutazione-thead {\r\n      background-image: linear-gradient(white, #BDCBDE);\r\n    }\r\n\r\n    .annullamento-file-list {\r\n      margin: 5px !important;\r\n      padding: 0 !important;\r\n      background: #fff;\r\n    }\r\n\r\n    .annullamento-thead {\r\n      background-image: linear-gradient(white, #EEEEEE);\r\n    }\r\n\r\n    .table {\r\n      margin-bottom: 0;\r\n    }\r\n\r\n    .table td, th {\r\n      padding: .25rem;\r\n      border-right: 1px solid #eeeeef;\r\n    }\r\n\r\n    .table th:last-child, td:last-child {\r\n      border-right: none;\r\n    }\r\n\r\n    .color-even-row {\r\n      background-color: #ffffff;\r\n    }\r\n\r\n    .color-odd-row {\r\n      background-color: #F3F3F3;\r\n    }\r\n\r\n    .btn {\r\n      font-size: .75rem !important;\r\n    }\r\n\r\n    .btn-link-gray {\r\n      color: gray;\r\n    }\r\n\r\n    .spinner {\r\n      position: absolute;\r\n      left: 50%;\r\n      top: 50%;\r\n      height: 30px;\r\n      width: 30px;\r\n      margin: 0 auto;\r\n      -webkit-animation: rotation .8s infinite linear;\r\n      -moz-animation: rotation .8s infinite linear;\r\n      -o-animation: rotation .8s infinite linear;\r\n      animation: rotation .8s infinite linear;\r\n      border-left: 6px solid rgba(0, 174, 239, .15);\r\n      border-right: 6px solid rgba(0, 174, 239, .15);\r\n      border-bottom: 6px solid rgba(0, 174, 239, .15);\r\n      border-top: 6px solid #22569F;\r\n      border-radius: 100%;\r\n    }\r\n\r\n    @-webkit-keyframes rotation {\r\n      from {\r\n        -webkit-transform: rotate(0deg);\r\n      }\r\n      to {\r\n        -webkit-transform: rotate(359deg);\r\n      }\r\n    }\r\n\r\n    @-moz-keyframes rotation {\r\n      from {\r\n        -moz-transform: rotate(0deg);\r\n      }\r\n      to {\r\n        -moz-transform: rotate(359deg);\r\n      }\r\n    }\r\n\r\n    @-o-keyframes rotation {\r\n      from {\r\n        -o-transform: rotate(0deg);\r\n      }\r\n      to {\r\n        -o-transform: rotate(359deg);\r\n      }\r\n    }\r\n\r\n    @keyframes rotation {\r\n      from {\r\n        transform: rotate(0deg);\r\n      }\r\n      to {\r\n        transform: rotate(359deg);\r\n      }\r\n    }\r\n\r\n    th[sortable].desc:before {\r\n      transform: rotate(180deg);\r\n      -ms-transform: rotate(180deg);\r\n    }\r\n    th[sortable].desc:before, th[sortable].asc:before {\r\n      content: \"\";\r\n      display: block;\r\n      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAmxJREFUeAHtmksrRVEUx72fH8CIGQNJkpGUUmakDEiZSJRIZsRQmCkTJRmZmJgQE0kpX0D5DJKJgff7v+ru2u3O3vvc67TOvsdatdrnnP1Y///v7HvvubdbUiIhBISAEBACQkAICAEhIAQ4CXSh2DnyDfmCPEG2Iv9F9MPlM/LHyAecdyMzHYNwR3fdNK/OH9HXl1UCozD24TCvILxizEDWIEzA0FcM8woCgRrJCoS5PIwrANQSMAJX1LEI9bqpQo4JYNFFKRSvIgsxHDVnqZgIkPnNBM0rIGtYk9YOOsqgbgepRCfdbmFtqhFkVEDVPjJp0+Z6e6hRHhqBKgg6ZDCvYBygVmUoEGoh5JTRvIJwhJo1aUOoh4CLPMyvxxi7EWOMgnCGsXXI1GIXlZUYX7ucU+kbR8NW8lh3O7cue0Pk32MKndfUxQFAwxdirk3fHappAnc0oqDPzDfGTBrCfHP04dM4oTV8cxr0SVzH9FF07xD3ib6xCDE+M+aUcVygtWzzbtGX2rPBrEUYfecfQkaFzYi6HjVnGBdtL7epqAlc1+jRdAap74RrnPc4BCijttY2tRcdN0g17w7HqZrXhdJTYAuS3hd8z+vKgK3V1zWPae0mZDMykadBn1hTQBLnZNwVrJpSe/NwEeDsEwCctEOsJTsgxLvCqUl2ACftEGvJDgjxrnBqkh3ASTvEWrIDQrwrnJpkB3DSDrGW7IAQ7wqnJtkBnLRztejXXVu4+mxz/nQ9jR1w5VB86ejLTFcnnDwhzV+F6T+CHZlx6THSjn76eyyBIOPHyDakhBAQAkJACAgBISAEhIAQYCLwC8JxpAmsEGt6AAAAAElFTkSuQmCC) no-repeat;\r\n      background-size: 16px;\r\n      width: 16px;\r\n      height: 16px;\r\n      float: left;\r\n      margin-left: -16px;\r\n    }\r\n  `]\r\n})\r\nexport class WebcauFileListComponent implements OnInit {\r\n  @ViewChildren(SinTableSortableDirective) headers: QueryList<SinTableSortableDirective> =\r\n    new QueryList<SinTableSortableDirective>();\r\n\r\n  constructor() {\r\n    window.addEventListener('allegatoUpdate', (e: CustomEvent) => {\r\n      this.allegatoUpdate(e.detail.obj as Allegato[]);\r\n    });\r\n    window.addEventListener('allegatiIsLoading', (e: CustomEvent) => {\r\n      this.allegatiIsLoading(e.detail.obj as boolean);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Titolo della griglia\r\n   */\r\n  @Input() title = '';\r\n  /**\r\n   * Id per cui fare la get degli allegati\r\n   */\r\n  @Input() refid = '';\r\n  /**\r\n   * Stringa che determina la tabella da cui leggere gli allegati\r\n   */\r\n  @Input() reftable = '';\r\n  /**\r\n   * Parametro che determina se il componente è readonly\r\n   */\r\n  @Input() readonly = false;\r\n  /**\r\n   * Parametro che determina se il file può essere scaricato\r\n   */\r\n  @Input() downloadFileEnable = true;\r\n\r\n  @Output() allegatoRipristina = new EventEmitter();\r\n  @Output() allegatoElimina = new EventEmitter();\r\n  @Output() allegatoSetEliminabile = new EventEmitter();\r\n  @Output() allegatoSetNonEliminabile = new EventEmitter();\r\n  @Output() allegatoSetVisibileInFileManager = new EventEmitter();\r\n\r\n  @Output() categoriaChanged = new EventEmitter();\r\n  @Output() itemHoverIn = new EventEmitter();\r\n  @Output() itemHoverOut = new EventEmitter();\r\n\r\n  public dataList: Allegato[] = [];\r\n  public dataLoaded?: boolean = undefined;\r\n  public errorMessage = '';\r\n  public isLoading = false;\r\n  public faIcons = {\r\n    faLock,\r\n    faUnlock,\r\n    faEye,\r\n    faEyeSlash,\r\n    faTimes,\r\n    faRedo,\r\n  };\r\n\r\n  ngOnInit(): void {\r\n    this.allegatiGet();\r\n  }\r\n\r\n  /**\r\n   * Get degli allegati\r\n   */\r\n  allegatiGet() {\r\n    switch (this.reftable) {\r\n      case 'RVn':\r\n        this.callAllegatiTable(`/WebRest/app/AppValutazioneService.svc/richiesta_valutazione/${this.refid}/allegati`);\r\n        break;\r\n      case 'RAn':\r\n        this.callAllegatiTable(`/WebRest/app/AppRichAnnullamentoService.svc/richAnn/${this.refid}/allegati`);\r\n        break;\r\n      case 'RAr':\r\n        this.callAllegatiTable(`/WebRest/app/AppRichArchivDocumService.svc/richArchivDocum/${this.refid}/allegati`);\r\n        break;\r\n      default:\r\n        setTimeout(() => {\r\n          this.dataList = [];\r\n          this.dataLoaded = false;\r\n        }, 1000);\r\n        break;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Chiama il corretto servizio in base alla reftable passata come parametro\r\n   * @param uri\r\n   * @private\r\n   */\r\n  private callAllegatiTable(uri: string) {\r\n    fetch(uri)\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: Allegato[]) => {\r\n        if (data && data.length > 0) {\r\n          this.dataList = [...data];\r\n          this.dataLoaded = true;\r\n        } else {\r\n          this.dataList = [];\r\n          this.dataLoaded = false;\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        this.dataLoaded = true;\r\n        this.dataList = undefined;\r\n        this.errorMessage = 'ERRORE - Non è stato possibile recuperare gli allegati';\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Dowload e salvataggio dell'allegato\r\n   * @param UID id dell'allegato\r\n   */\r\n  download(UID: string) {\r\n    this.allegatiIsLoading(true);\r\n    const options = {\r\n      url: `/WebRest/store/StoreService.svc/download`,\r\n      body: JSON.stringify([UID])\r\n    } as DownloadAndSaveFileOptions;\r\n    console.log('downloadFileEnable', this.downloadFileEnable);\r\n    downloadAndSaveFile(\r\n      {\r\n        ...options\r\n      }, this.downloadFileEnable)\r\n      .then(_ => {\r\n        // ok\r\n        this.allegatiIsLoading(false);\r\n      }).catch(error => {\r\n      this.allegatiIsLoading(false);\r\n      alert(error.error.error_msg);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Aggiorna la lista delle categorie dell'allegato\r\n   * @param file Allegato\r\n   */\r\n  async categoriaUpdate(file: Allegato) {\r\n    this.allegatiIsLoading(true);\r\n    const categoriaItem: StoreFolder = file.SottoCategorieList.filter(c => c.Id === file.CategoriaID)[0];\r\n    await fetch(`/WebRest/store/StoreService.svc/category`, {\r\n      method: 'PUT',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify({\r\n        Category: categoriaItem,\r\n        UID: file.UID\r\n      })\r\n    }).then(response => {\r\n      if (!response) {\r\n        alert('Impossible aggiornate la categoria');\r\n      } else {\r\n        this.categoriaChanged.emit(categoriaItem);\r\n      }\r\n      this.allegatiIsLoading(false);\r\n    }).catch(error => {\r\n      this.allegatiIsLoading(false);\r\n      alert(error.error.error_msg ?? 'Impossible aggiornate la categoria');\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Sostituisce la lista degli allegati con la nuova lista aggiornata\r\n   * oppure se ricarica l'intera lista se l'array passato è vuoto\r\n   * @param files lista di allegati\r\n   */\r\n  allegatoUpdate(files: Allegato[]) {\r\n    if (!files || files.length === 0) {\r\n      this.dataLoaded = undefined;\r\n      this.allegatiGet();\r\n    } else {\r\n      this.dataList = this.dataList.map(obj => files.find(o => o.UID === obj.UID) || obj);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Funzione per settare manualmente la variabile che gestisce il loading\r\n   * @param data input dall'esterno\r\n   */\r\n  private allegatiIsLoading(data: boolean) {\r\n    this.isLoading = data;\r\n  }\r\n\r\n  /**\r\n   * Colora alternativamente le righe pari e dispari\r\n   * @param indexRow indice di riga\r\n   */\r\n  getColor(indexRow: number): string {\r\n    if (this.reftable !== 'RVn') {\r\n      if (indexRow % 2 === 0) {\r\n        return 'color-even-row';\r\n      } else {\r\n        return 'color-odd-row';\r\n      }\r\n    }\r\n  }\r\n\r\n  onSort({ field, dir }: SortEvent): void {\r\n    // resetting other headers\r\n    this.headers.forEach((header) => {\r\n      if (header.sortable !== field) {\r\n        header.direction = '';\r\n      }\r\n    });\r\n    console.log([{ field, dir }]);\r\n    if (this.dataList) {\r\n      if (dir === 'asc') {\r\n        this.dataList.sort((obj1, obj2) =>\r\n          obj1[field] > obj2[field] ? 1 : obj1[field] === obj2[field] ? 0 : -1\r\n        );\r\n      } else if (dir === 'desc') {\r\n        this.dataList.sort((obj1, obj2) =>\r\n          obj1[field] > obj2[field] ? -1 : obj1[field] === obj2[field] ? 0 : 1\r\n        );\r\n      }\r\n      console.log(this.dataList);\r\n    }\r\n  }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-select',\r\n  template: `\r\n    <ng-container *ngIf=\"active\">\r\n      <div class=\"row col-md-12 px-0\" [ngClass]=\"(ref === 'P') ? 'prodotto-select' : (ref === 'A' ? 'appendici-select' : '')\">\r\n\r\n        <label for=\"{{selectName}}\" *ngIf=\"label\" [ngClass]=\"(ref === 'P') ? 'prodotto-select-label' : (ref === 'A' ? 'appendici-select-label' : '')\"\r\n               class=\"col-md-6 col-xs-12 form-check-label font-weight-bold\">{{label}}</label>\r\n\r\n        <select id=\"{{selectName}}\" name=\"{{selectName}}\" *ngIf=\"!readonly\" class=\"col-md-5 col-xs-12\"\r\n                [ngClass]=\"(ref === 'P') ? 'prodotto-wc-select' : (ref === 'A' ? 'appendici-wc-select' : '')\"\r\n                [(ngModel)]=\"value\" (ngModelChange)=\"changeValue($event)\">\r\n          <option *ngIf=\"optionSelezionare\" [ngValue]=\"undefined\" [selected]=\"true\">Selezionare...</option>\r\n          <option *ngFor=\"let item of list\" [ngValue]=\"item.value\">{{item.text}}</option>\r\n        </select>\r\n\r\n        <span *ngIf=\"readonly\" class=\"col-md-5 col-xs-12\">{{itemText}}</span>\r\n      </div>\r\n    </ng-container>\r\n  `,\r\n  styles: [`\r\n    .appendici-select label {\r\n      font: normal 10pt Verdana, Arial, sans-serif !important;\r\n      padding: 5px !important;\r\n      margin: 0 !important;\r\n    }\r\n\r\n    .appendici-select select {\r\n      height: fit-content !important;\r\n      margin: 5px !important;\r\n    }\r\n\r\n    .appendici-select span {\r\n      padding: 5px !important;\r\n      font: bold 10pt Verdana, Arial, sans-serif !important;\r\n    }\r\n\r\n    .prodotto-select label {\r\n      font-weight: bold;\r\n      font-size: 10.5px;\r\n      font-family: Verdana, Arial, sans-serif !important;\r\n      margin-right: 8px;\r\n    }\r\n\r\n    .prodotto-select select {\r\n      border-width: 1px;\r\n      border-style: solid;\r\n      border-radius: 4px;\r\n      background-color: #eae8e8;\r\n      color: #313131;\r\n      border-color: #c5c5c5;\r\n      background-image: none,linear-gradient(to bottom,rgba(255,255,255,.6) 0,rgba(255,255,255,0) 100%);\r\n      background-position: 50% 50%;\r\n      background-repeat: repeat;\r\n      padding: 0 1.9em 0 0;\r\n      vertical-align: middle;\r\n      cursor: pointer;\r\n      height: 27px;\r\n      font-size: 13.33px;\r\n    }\r\n\r\n  `]\r\n})\r\nexport class WebcauSelectComponent implements OnInit {\r\n  /**\r\n   * Parametro che determina il nome della Select\r\n   */\r\n  @Input() selectName = 'selectDefaultName';\r\n  /**\r\n   * Parametro che determina se il componente è readonly\r\n   */\r\n  @Input() readonly = false;\r\n  /**\r\n   * Parametro che determina se il componente è attivo\r\n   */\r\n  @Input() active = true;\r\n  /**\r\n   * Riferimento che determina il contesto del componente e imposta le classi css (P => Polizza A => Appendice)\r\n   */\r\n  @Input() ref = '';\r\n  /**\r\n   * Label della select\r\n   */\r\n  @Input() label = undefined;\r\n  /**\r\n   * Valore selezionato\r\n   */\r\n  @Input() value?: number = undefined;\r\n  /**\r\n   * Datasource della select\r\n   */\r\n  @Input() datasource = '';\r\n  /**\r\n   * Option \"Selezionare...\" presente\r\n   */\r\n  @Input() optionSelezionare = true;\r\n  /**\r\n   * Input Hidden esterno da provare a valorizzare\r\n   */\r\n  @Input() valueChangedHidden = '';\r\n  /**\r\n   * Evento di selezione\r\n   */\r\n  @Output() valueChanged = new EventEmitter();\r\n\r\n  public itemText: string;\r\n  public list: ItemDataSource[] = [];\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    if (this.value && typeof (this.value) === 'string') {\r\n      this.value = +this.value;\r\n    }\r\n    // console.log('value: ' + this.value, 'type: ' + typeof (this.value));\r\n    if (!this.datasource || this.datasource === '') {\r\n      this.list = [{text: 'Si', value: 1}, {text: 'No', value: 0}] as ItemDataSource[];\r\n    } else {\r\n      // console.log('datasource: ' + this.datasource);\r\n      this.list = JSON.parse(this.datasource) as ItemDataSource[];\r\n    }\r\n    if (this.readonly && this.value) {\r\n      this.itemText = this.list.filter(x => x.value === this.value)[0]?.text ?? '';\r\n    }\r\n  }\r\n\r\n  changeValue(item: any): void {\r\n\r\n    // Cerco o setto input hidden se specificato\r\n    if (this.valueChangedHidden) {\r\n\r\n      // Ricerco tramite ID window\r\n      let htmlInput = <HTMLInputElement>window.document.getElementById(this.valueChangedHidden);\r\n\r\n      // Ricerco tramite ID window.parent\r\n      if (!htmlInput) {\r\n        htmlInput = <HTMLInputElement>window.parent.document.getElementById(this.valueChangedHidden);\r\n      }\r\n\r\n      // Ricerco tramite Name window\r\n      if (!htmlInput && window.document.getElementsByName(this.valueChangedHidden).length > 0) {\r\n        htmlInput = <HTMLInputElement>window.document.getElementsByName(this.valueChangedHidden)[0];\r\n      }\r\n\r\n      // Ricerco tramite Name window.parent\r\n      if (!htmlInput && window.parent.document.getElementsByName(this.valueChangedHidden).length > 0) {\r\n        htmlInput = <HTMLInputElement>window.parent.document.getElementsByName(this.valueChangedHidden)[0];\r\n      }\r\n\r\n      htmlInput.value = item;\r\n    }\r\n\r\n    // Emetto evento Js\r\n    window.dispatchEvent(new CustomEvent(this.selectName, { detail: { obj: item } }));\r\n\r\n    // Emetto evento Angular\r\n    this.valueChanged.emit(item);\r\n  }\r\n\r\n}\r\n\r\nexport interface ItemDataSource {\r\n  text: string;\r\n  value: any;\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-provvigioni-forzate',\r\n  template: `\r\n    <input type=\"hidden\" id=\"ProvvigioniForzate\" name=\"ProvvigioniForzate\" [value]=\"provvigioniForzate\">\r\n    <input type=\"hidden\" id=\"ProvvigioniForzateAliquota\" name=\"ProvvigioniForzateAliquota\" [value]=\"provvigioniForzateAliquotaModel | number_it \">\r\n    <div class=\"row col-md-12 px-0\" [ngClass]=\"(ref === 'P') ? 'prodotto-select' : (ref === 'A' ? 'appendici-select' : '')\">\r\n      <label for=\"wcSelect\" class=\"col-md-6 col-xs-12 form-check-label font-weight-bold\">Provvigioni Forzate: </label>\r\n      <select *ngIf=\"!readonly\" #wcSelect class=\"col-md-5 col-xs-12\" [(ngModel)]=\"provvigioniForzate\" (change)=\"provvigioniForzateAliquota = null; provvigioniForzateAliquotaModel = null;\">\r\n        <option [ngValue]=\"false\">NO</option>\r\n        <option [ngValue]=\"true\">SI</option>\r\n      </select>\r\n      <input class=\"k-input input-aliquota\" *ngIf=\"provvigioniForzate && !readonly\" type=\"number\" (focusout)=\"aliquotaFocusOut()\" [(ngModel)]=\"provvigioniForzateAliquota\" (ngModelChange)=\"aliquotaChange()\">\r\n      <span *ngIf=\"provvigioniForzate && !readonly\"> %</span>\r\n      <span *ngIf=\"readonly && provvigioniForzate\" class=\"col-md-5 col-xs-12\">{{provvigioniForzateAliquota}} %</span>\r\n      <span *ngIf=\"readonly && !provvigioniForzate\" class=\"col-md-5 col-xs-12\">NO</span>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .appendici-select label {\r\n      font: normal 10pt Verdana, Arial, sans-serif !important;\r\n      padding: 5px !important;\r\n      margin: 0 !important;\r\n    }\r\n\r\n    .appendici-select select {\r\n      height: fit-content !important;\r\n      margin: 5px !important;\r\n    }\r\n\r\n    .prodotto-select label {\r\n      font-weight: bold;\r\n      font-size: 10.5px;\r\n      font-family: Verdana, Arial, sans-serif !important;\r\n      margin-right: 8px;\r\n    }\r\n\r\n    .prodotto-select select {\r\n      border-width: 1px;\r\n      border-style: solid;\r\n      border-radius: 4px;\r\n      background-color: #eae8e8;\r\n      color: #313131;\r\n      border-color: #c5c5c5;\r\n      background-image: none,linear-gradient(to bottom,rgba(255,255,255,.6) 0,rgba(255,255,255,0) 100%);\r\n      background-position: 50% 50%;\r\n      background-repeat: repeat;\r\n      padding: 0 1.9em 0 0;\r\n      vertical-align: middle;\r\n      cursor: pointer;\r\n      height: 27px;\r\n      font-size: 13.33px;\r\n    }\r\n\r\n    .input-aliquota {\r\n      border-width: 1px;\r\n      border-style: solid;\r\n      border-radius: 4px;\r\n      color: #313131;\r\n      border-color: #c5c5c5;\r\n      background-image: none,linear-gradient(to bottom,rgba(255,255,255,.6) 0,rgba(255,255,255,0) 100%);\r\n      background-position: 50% 50%;\r\n      background-repeat: repeat;\r\n      padding: 0 1.9em 0 0;\r\n      vertical-align: middle;\r\n      height: 27px;\r\n      font-size: 13.33px;\r\n      margin-left: 10px;\r\n      width: 80px;\r\n    }\r\n\r\n  `]\r\n})\r\nexport class WebcauProvvigioniForzateComponent implements OnInit {\r\n\r\n  /**\r\n   * Boolean Provvigioni Forzate (default === false)\r\n   */\r\n  @Input() provvigioniForzate = false as boolean;\r\n  /**\r\n   * Percentuale Aliquota Provvigioni Forzate\r\n   */\r\n  @Input() provvigioniForzateAliquota: number | null;\r\n  /**\r\n   * Decimale Aliquota Provvigioni Forzate\r\n   */\r\n  provvigioniForzateAliquotaModel: number | null;\r\n  /**\r\n   * Riferimento che determina il contesto del componente\r\n   */\r\n  @Input() ref = '';\r\n  /**\r\n   * Parametro che determina se il componente è readonly\r\n   */\r\n  @Input() readonly = false as boolean;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.provvigioniForzate) {\r\n      this.provvigioniForzate = false;\r\n      this.provvigioniForzateAliquota = null;\r\n    }\r\n    if (this.provvigioniForzateAliquota !== null) {\r\n      this.provvigioniForzateAliquotaModel = this.provvigioniForzateAliquota;\r\n      this.provvigioniForzateAliquota = this.provvigioniForzateAliquotaModel * 100;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Conversione Aliquota Provvigioni Forzate in decimale\r\n   */\r\n  aliquotaChange(): void {\r\n    if (this.provvigioniForzateAliquota > 0) {\r\n      this.provvigioniForzateAliquotaModel = this.provvigioniForzateAliquota / 100;\r\n    }\r\n  }\r\n  /**\r\n   * Forza Max e Min Aliquota Provvigioni Forzate\r\n   */\r\n  aliquotaFocusOut(): void {\r\n    if (this.provvigioniForzateAliquota < 0){\r\n      this.provvigioniForzateAliquota = 0;\r\n    } else if (this.provvigioniForzateAliquota > 100){\r\n      this.provvigioniForzateAliquota = 100;\r\n    }\r\n  }\r\n\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-allegati-modal-testo',\r\n  template: `\r\n    <table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" style=\"margin: auto;\">\r\n      <tr>\r\n        <td colspan=\"2\" align=\"center\" valign=\"middle\">\r\n          <span id=\"titolo_allegato\" class=\"sottotitolo\">ALLEGATO {{allegatoModelloID}}</span>\r\n        </td>\r\n      </tr>\r\n      <tr>\r\n        <td colspan=\"2\" align=\"center\" class=\"testo\">\r\n          Richiesta n.<span id=\"lab_richiesta_id\" class=\"titoloEnfatizzato\">{{richiestaID}}</span>\r\n        </td>\r\n      </tr>\r\n\r\n      <tr>\r\n        <td valign=\"top\" colspan=\"2\">\r\n                    <textarea\r\n                      id=\"ta_testoallegato_id\"\r\n                      name=\"ta_testoallegato\"\r\n                      cols=\"100\" rows=\"30\"\r\n                      class=\"form\"\r\n                      [maxLength]=\"35000\"\r\n                      [(ngModel)]=\"testoAllegato\"\r\n                      [disabled]=\"mode === 'read'\">\r\n                    </textarea>\r\n        </td>\r\n      </tr>\r\n\r\n      <tr align=\"center\">\r\n        <td colspan=\"2\" class=\"testino\">\r\n          <input class=\"form\" readonly type=\"text\" name=\"lab_testoallego_numchar\" id=\"lab_testoallego_numchar_id\"\r\n                 size=\"5\" [value]=\"35000 - testoAllegato?.length\"/> caratteri rimasti\r\n        </td>\r\n      </tr>\r\n\r\n      <tr align=\"center\" id=\"menu_edit_id\">\r\n        <td valign=\"middle\">\r\n          <input type=\"button\"\r\n                 style=\"width:70px;\"\r\n                 class=\"button\"\r\n                 id=\"but_annulla_id\"\r\n                 value=\"Annulla\"\r\n                 *ngIf=\"mode === 'edit'\"\r\n                 (click)=\"activeModal.dismiss()\"/>\r\n        </td>\r\n        <td valign=\"middle\">\r\n          <input type=\"button\"\r\n                 style=\"width:70px;\"\r\n                 class=\"button\"\r\n                 id=\"but_salva_id\"\r\n                 value=\"Salva\"\r\n                 *ngIf=\"mode === 'edit'\"\r\n                 (click)=\"activeModal.close(testoAllegato)\"\r\n          />\r\n        </td>\r\n      </tr>\r\n      <tr align=\"center\" id=\"menu_read_id\">\r\n        <td valign=\"middle\">\r\n          <input type=\"button\"\r\n                 style=\"width:70px;\"\r\n                 class=\"button\"\r\n                 id=\"but_chiudi_id\"\r\n                 value=\"Chiudi\"\r\n                 *ngIf=\"mode === 'read'\"\r\n                 (click)=\"activeModal.dismiss()\"\r\n          />\r\n        </td>\r\n      </tr>\r\n    </table>\r\n  `,\r\n  styles: [\r\n  ]\r\n})\r\nexport class WebcauAllegatiModalTestoComponent {\r\n\r\n  constructor(public activeModal: NgbActiveModal) { }\r\n\r\n  @Input() allegatoModelloID: string;\r\n  @Input() richiestaID: string;\r\n  @Input() testoAllegato: string;\r\n  @Input() mode: string;\r\n\r\n}\r\n","export interface AziendaCoobbligato {\r\n  ID_Azienda: number;\r\n  IsChecked: boolean;\r\n  STATUS: string;\r\n  AZ_PIVA: string;\r\n  AZ_CodFisc: string;\r\n  AZ_RagSoc: string;\r\n  AZ_Indirizzo: string;\r\n  AZ_CAP: string;\r\n  CodAffidamento: number;\r\n  AZ_Comune: string;\r\n  AZ_Prov: string;\r\n  Approvato: boolean;\r\n  FirmaDigitalePresente: boolean;\r\n  AziendaDocumentoTipo: string;\r\n  AziendaDocumentoNumero: string;\r\n  AziendaDocumentoEnteRilascio: string;\r\n  AziendaDocumentoDataRilascio: Date;\r\n  DocumentoDatiIncompleti: boolean;\r\n\r\n  Quota: number;\r\n  Limite: number;\r\n  AllegatoList: string[];\r\n\r\n  QuotaOld: number | null;\r\n  QuotaIsDisabled: boolean;\r\n  LimiteEdited: boolean | null;\r\n  LimiteIsDisabled: boolean;\r\n}\r\n\r\nexport class AziendaCoobbligatoUtils {\r\n\r\n  public static check(coobbligatiList: AziendaCoobbligato[], allegatiCoobbligazioneSelezionati: string[]): string[] {\r\n\r\n    // Controlli Correttezza\r\n    let count = 0;\r\n    let sommaQuote = 0;\r\n    const msgErrors = [];\r\n\r\n    coobbligatiList.forEach(c => {\r\n      if (c.IsChecked) {\r\n        count++;\r\n        // Calcolo campi abilitati\r\n        let quotaEnabled = false;\r\n        if (c.AllegatoList.indexOf('CQ') !== -1 || c.AllegatoList.indexOf('CQS') !== -1) {\r\n          quotaEnabled = true;\r\n        }\r\n        let limiteEnabled = false;\r\n        if (c.AllegatoList.indexOf('CQ') !== -1) {\r\n          limiteEnabled = true;\r\n        }\r\n\r\n        // Dati incompleti\r\n        // if (c.DocumentoDatiIncompleti) {\r\n        //   msgErrors.push('- ' + c.AZ_RagSoc + ': Dati incompleti!');\r\n        // }\r\n\r\n        // Nessun allegato scelto\r\n        if (c.AllegatoList.length <= 0) {\r\n          msgErrors.push('- ' + c.AZ_RagSoc + ': Nessun allegato selezionato!');\r\n        }\r\n\r\n        if (c.AllegatoList.filter(x => allegatiCoobbligazioneSelezionati.indexOf(x) > -1).length <= 0)\r\n        {\r\n          msgErrors.push('Coobbligato ' + c.AZ_RagSoc + ': Nessun allegato associato!');\r\n        }\r\n\r\n        // Quota non impostata\r\n        if (quotaEnabled && (!c.Quota || c.Quota <= 0)) {\r\n          msgErrors.push('- ' + c.AZ_RagSoc + ': Quota mancante!');\r\n        } else {\r\n          sommaQuote += c.Quota;\r\n        }\r\n\r\n        // Limite non impostato\r\n        if (limiteEnabled && (!c.Limite || c.Limite <= 0)) {\r\n          msgErrors.push('- ' + c.AZ_RagSoc + ': Limite mancante!');\r\n        }\r\n      }\r\n    });\r\n\r\n    // forzata somma pari a 100 se valori sommati riportano errore di arrotondamento da macchina che non permette di raggiungere la somma di 100\r\n    if (sommaQuote < 100.001 && sommaQuote > 99.998) {\r\n      sommaQuote = 100;\r\n    }\r\n\r\n    const sommaCheck = allegatiCoobbligazioneSelezionati.length === 1 && (allegatiCoobbligazioneSelezionati[0] === 'CQS');\r\n\r\n    if (count <= 0) {\r\n      msgErrors.push('- Selezionare almeno un coobbligato!');\r\n    } else if (sommaCheck && allegatiCoobbligazioneSelezionati.length === 1 && sommaQuote < 100) {\r\n      msgErrors.push('- La Somma delle Quote deve essere almeno 100!'); // Può essere superiore a 100\r\n    }\r\n\r\n    allegatiCoobbligazioneSelezionati.forEach(a => {\r\n      const n = coobbligatiList.filter(c => c.IsChecked && c.AllegatoList.indexOf(a) > -1).length;\r\n      if (n <= 0) {\r\n        msgErrors.push('- Nessun Coobbligato associato all\\'Allegato ' + a + '!');\r\n      }\r\n    });\r\n\r\n    return msgErrors;\r\n\r\n  }\r\n\r\n  public static warningCheck(coobbligatiList: AziendaCoobbligato[], allegatiCoobbligazioneSelezionati: string[]): string[] {\r\n\r\n    // Controlli Correttezza\r\n    let count = 0;\r\n    let sommaQuote = 0;\r\n    const msgWarns = [];\r\n\r\n    coobbligatiList.forEach(c => {\r\n      if (c.IsChecked) {\r\n        count++;\r\n        // Calcolo campi abilitati\r\n        let quotaEnabled = false;\r\n        if (c.AllegatoList.indexOf('CQ') !== -1 || c.AllegatoList.indexOf('CQS') !== -1) {\r\n          quotaEnabled = true;\r\n        }\r\n\r\n        // Quota non impostata\r\n        if (quotaEnabled && (!c.Quota || c.Quota <= 0)) {\r\n          // DO NOTHING\r\n        } else {\r\n          sommaQuote += c.Quota;\r\n        }\r\n\r\n      }\r\n    });\r\n\r\n    // forzata somma pari a 100 se valori sommati riportano errore di arrotondamento da macchina che non permette di raggiungere la somma di 100\r\n    if (sommaQuote < 100.001 && sommaQuote > 99.998) {\r\n      sommaQuote = 100;\r\n    }\r\n\r\n    const sommaCheck = allegatiCoobbligazioneSelezionati.length === 1 && (allegatiCoobbligazioneSelezionati[0] === 'CQS');\r\n\r\n    if (count > 0 && sommaCheck && allegatiCoobbligazioneSelezionati.length === 1 && sommaQuote > 100) {\r\n      msgWarns.push('Somma delle Quote superiore al 100%'); // Può essere superiore a 100\r\n    }\r\n\r\n    return msgWarns;\r\n  }\r\n\r\n}\r\n","import { Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {AziendaCoobbligato, AziendaCoobbligatoUtils} from '../interfaces/azienda-coobbligato';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport {DecimalPipe} from '@angular/common';\r\n\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-allegati-modal-coobbligati',\r\n  template: `\r\n    <div id=\"CoobbligatiDiv\" *ngIf=\"coobbligatiReady\">\r\n\r\n     <div id=\"CorpoCoobbligati\" data-bind=\"visible: CorpoCoobbligatiVis\">\r\n<!--        &lt;!&ndash;************************INTESTAZIONE************************************************************&ndash;&gt;-->\r\n        <table border=\"0\" cellspacing=\"1\" cellpadding=\"1\" style=\"text-align: center; margin: 10px; width: 100%\" *ngIf=\"this.coobbligatoEdit === false\">\r\n          <tr>\r\n            <td colspan=\"6\" align=\"center\" valign=\"middle\"><span class=\"sottotitolo\" style=\"font-weight: bold;\">DATI COOBBLIGATI</span>\r\n            </td>\r\n          </tr>\r\n        </table>\r\n\r\n        <!-- lista coobbligati -->\r\n        <table *ngIf=\"!this.coobbligatoEdit\" id=\"CoobbligatiTable\" class=\"tblDatiAzienda\">\r\n          <tr class=\"tblRowHeader\">\r\n            <th style=\"min-width: 125px;\">Azioni</th>\r\n            <th>P.IVA</th>\r\n            <th>C.F.</th>\r\n            <th>Ragione Sociale</th>\r\n            <th>Indirizzo</th>\r\n            <th>CAP</th>\r\n            <th>Comune</th>\r\n            <th>Firma Digitale</th>\r\n            <th *ngIf=\"quotaEnabled\">Quota %</th>\r\n            <th *ngIf=\"limiteEnabled\">Limite</th>\r\n            <th style=\"min-width: 100px;\">Allegato</th>\r\n          </tr>\r\n          <tbody>\r\n          <tr *ngFor=\"let c of coobbligatiList\" [ngClass]=\"getClassStyle(c)\" [hidden]=\"tipoUtente !== 2 && !c.IsChecked\">\r\n            <td align=\"center\">\r\n              <input type=\"checkbox\" *ngIf=\"tipoUtente === 2\" [(ngModel)]=\"c.IsChecked\" style=\"margin-right: 10px;\"/>\r\n              <button type=\"button\" class=\"button-corner-all\" *ngIf=\"!c.DocumentoDatiIncompleti\" (click)=\"modificaCoobbligato(c)\">Modifica</button>\r\n              <button type=\"button\" class=\"button-corner-all\" style=\"color: red; font-weight: bold;\" *ngIf=\"c.DocumentoDatiIncompleti\" (click)=\"modificaCoobbligato(c)\">Modifica</button>\r\n            </td>\r\n            <td align=\"center\">{{c.AZ_PIVA}}</td>\r\n            <td align=\"center\">{{c.AZ_CodFisc}}</td>\r\n            <td align=\"center\">{{c.AZ_RagSoc}}</td>\r\n            <td align=\"center\">{{c.AZ_Indirizzo}}</td>\r\n            <td align=\"center\">{{c.AZ_CAP}}</td>\r\n            <td align=\"center\">{{c.AZ_Comune}}</td>\r\n            <td align=\"center\">{{c.FirmaDigitalePresente ? 'Presente' : 'Non Presente'}}</td>\r\n\r\n            <td *ngIf=\"quotaEnabled\" align=\"center\"><input type=\"number\" style=\"max-width: 60px;\" [(ngModel)]=\"c.Quota\" (focusout)=\"quotaFocusOut(c)\" (ngModelChange)=\"calcolaLimite(c);\" [disabled]=\"c.QuotaIsDisabled\"></td>\r\n            <td *ngIf=\"limiteEnabled\" align=\"center\"><input type=\"number\" [(ngModel)]=\"c.Limite\" [disabled]=\"c.LimiteIsDisabled\" (focusout)=\"limiteFocusOut(c)\"></td>\r\n\r\n            <td align=\"center\" style=\"text-align: start; font-size: 11px;\" >\r\n              <div style=\"display: flex;\">\r\n                <div *ngFor=\"let a of allegatiSelectedList\" style=\"margin-right: 5px\">\r\n                  <input type=\"checkbox\" id=\"{{a}}\" name=\"{{a}}\" [value]=\"a\" [checked]=\"allegatoIsChecked(c, a)\" (change)=\"allegatoChange(c, $event.target.checked ? $event.target.value : '')\">\r\n                  <label for=\"{{a}}\" style=\"margin-left: 5px;\">{{a}}</label>\r\n                </div>\r\n              </div>\r\n            </td>\r\n          </tr>\r\n          </tbody>\r\n        </table>\r\n\r\n        <div *ngIf=\"!this.coobbligatoEdit\" style=\"margin: 0px 20px 0px 20px;\">\r\n          <i>Legenda:</i>\r\n          <img src=\"../Images/led_red.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp; Azienda Respinta\r\n          (rosso) &nbsp;\r\n          <img src=\"/images/icons/16x16/led_blue.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp;\r\n          Coobbligato da Approvare (blu) &nbsp;\r\n          <img src=\"../Images/led_green.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp; Respinta e da\r\n          Approvare (verde) &nbsp;\r\n          <img src=\"\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>\r\n          Dati Incompleti (<span class=\"datiIncompleti\">evidenziato</span>)\r\n        </div>\r\n\r\n       <iframe #iframe title=\"Modifica Coobbligato\" *ngIf=\"coobbligatoEdit\" [src]=\"modificaCoobbligatoURL()\" style=\"width: 1250px; height: 350px;\">\r\n       </iframe>\r\n\r\n       <div *ngIf=\"!this.coobbligatoEdit\" style=\"text-align: center; margin: 20px 0px 10px 0px;\">\r\n         <!-- Chiudi -->\r\n         <input type=\"button\"\r\n                style=\"width:70px;\"\r\n                class=\"button\"\r\n                id=\"but_chiudi_id\"\r\n                value=\"Chiudi\"\r\n                *ngIf=\"mode === 'read'\"\r\n                (click)=\"chiudi()\"\r\n         />\r\n\r\n         <!-- Annulla/Salva -->\r\n         <input type=\"button\"\r\n                style=\"width:70px; margin-right: 5px;\"\r\n                class=\"button\"\r\n                id=\"but_salva_id\"\r\n                value=\"Annulla\"\r\n                *ngIf=\"mode === 'edit'\"\r\n                (click)=\"annulla()\"/>\r\n         <input type=\"button\"\r\n                style=\"width:70px; margin-left: 5px;\"\r\n                class=\"button\"\r\n                id=\"but_salva_id\"\r\n                value=\"Salva\"\r\n                *ngIf=\"mode === 'edit'\"\r\n                (click)=\"salva()\"/>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .tblDatiAzienda {\r\n      width: auto !important;\r\n      margin: 10px 20px 10px 20px !important;\r\n    }\r\n\r\n    .tblDatiAzienda tr {\r\n      height: 28px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda th {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda td {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda .thCaption {\r\n      width: 20%;\r\n    }\r\n\r\n    .tblDatiAzienda .tblRowHeader {\r\n      background-color: #FFB517;\r\n    }\r\n\r\n    .tblDatiAzienda .tblRow {\r\n      background: #F2F2F2;\r\n      text-align: left;\r\n      vertical-align: middle;\r\n      font-family: Verdana;\r\n      font-size: 10pt;\r\n      color: #333333;\r\n    }\r\n\r\n    .tblDatiAzienda .tdFormBground {\r\n      width: 80%;\r\n    }\r\n\r\n    .tblDatiAzienda td.pushbutton {\r\n      width: 50%;\r\n      text-align: center;\r\n    }\r\n\r\n    .c-da-approvare {\r\n      color:#072bf6 !important;\r\n    }\r\n\r\n    .c-azienda-respinta {\r\n      color:#fa0404 !important;\r\n    }\r\n\r\n    .c-both {\r\n      color:green !important;\r\n    }\r\n\r\n    .c-seleziona {\r\n      border: solid;\r\n      border-color: #FFB517;\r\n      border-width: 1px;\r\n      width: 180px;\r\n    }\r\n\r\n    .datiIncompleti {\r\n      background-color: yellow;\r\n    }\r\n  `]\r\n})\r\nexport class WebcauAllegatiModalCoobbligatiComponent implements OnInit {\r\n\r\n  constructor(public activeModal: NgbActiveModal,\r\n              public sanitizer: DomSanitizer,\r\n              private decimalPipe: DecimalPipe) {\r\n  }\r\n\r\n  @Input() debugLocal: string;\r\n  @Input() mode: string;\r\n\r\n  @Input() allegatiSelectedList: string[] = [];\r\n  @Input() tipoUtente: number;\r\n  @Input() tipoRecord: number;\r\n  @Input() recordId: number;\r\n  @Input() modelloId: string;\r\n  @Input() aziendaId: string;\r\n  @Input() coobbligatiList = [] as AziendaCoobbligato[];\r\n\r\n  @ViewChild('iframe') iframe: ElementRef<HTMLIFrameElement>;\r\n\r\n  coobbligatiReady = false;\r\n  quotaEnabled = false;\r\n  limiteEnabled = false;\r\n\r\n  coobbligatoToEdit = null as AziendaCoobbligato;\r\n  coobbligatoEdit = false;\r\n\r\n  CheckObbligati = true;\r\n\r\n  importoGaranzia: number | null = null;\r\n\r\n  ngOnInit(): void {\r\n\r\n    // Definisco se i campi Quota sono abiltiati\r\n    if (this.allegatiSelectedList.indexOf('CQS') > -1 || this.allegatiSelectedList.indexOf('CQ') > -1) {\r\n      this.quotaEnabled = true;\r\n    }\r\n\r\n    // Definisco se i campi Limite sono abilitati\r\n    if (this.allegatiSelectedList.indexOf('CQ') > -1) {\r\n      this.limiteEnabled = true;\r\n      this.getImportoGaranzia(); // Recupero Importo Garantito (x calcolo automatico limite)\r\n    }\r\n\r\n    // Inizializzo AllegatoList x ogni Coobbligato\r\n    // => Se un solo Allegato, lo seleziono in automatico\r\n    this.coobbligatiList.forEach(c => {\r\n      if (!c.AllegatoList) {\r\n        c.AllegatoList = [];\r\n      }\r\n      if (this.allegatiSelectedList.length === 1) {\r\n        c.AllegatoList = [];\r\n        c.AllegatoList.push(this.allegatiSelectedList[0]);\r\n      }\r\n      // Disabilito Quota/Limite in base all'allegato selezionato\r\n      this.quotaIsDisabled(c);\r\n      this.limiteIsDisabled(c);\r\n    });\r\n\r\n    this.coobbligatiReady = true;\r\n  }\r\n\r\n  coobbligatiChange() {\r\n    if (this.CheckObbligati) {\r\n\r\n    }\r\n    // if (viewModelCoobbligati.get(\"CheckObbligatiDefault\") == 0) {\r\n    //\r\n    //   var variabilemsgconfirm = \"inserire di nuovo\";\r\n    //   if (thisRichiesta != '') {\r\n    //     variabilemsgconfirm = \"modificare\";\r\n    //   }\r\n    //\r\n    //   if (confirm(\"ATTENZIONE! L'azienda non ha coobbligati preimpostati.\\nSelezionare OK per inserire un nuovo coobbligato, dopodichè \" + variabilemsgconfirm + \" la richiesta di Polizza.\\nOppure Selezionare Annulla per richiesta Polizza senza coobbligati.\")) {\r\n    //     inserisciCoobbligatiManuale();\r\n    //   }\r\n    //   else {\r\n    //     viewModelCoobbligati.set(\"CheckObbligati\", 0);\r\n    //   }\r\n    // }\r\n  }\r\n\r\n  getClassStyle(c: AziendaCoobbligato): string {\r\n    let classes = '';\r\n    if (c.Approvato === false) {\r\n      if (c.CodAffidamento === 7) {\r\n        classes = 'c-both tblRow';\r\n      }\r\n      classes = 'c-da-approvare tblRow';\r\n    } else if (c.CodAffidamento === 7) {\r\n      classes = 'c-azienda-respinta tblRow';\r\n    } else {\r\n      classes = 'tblRow';\r\n    }\r\n\r\n    if (c.DocumentoDatiIncompleti) {\r\n      classes = ' datiIncompleti';\r\n    }\r\n\r\n    return classes;\r\n  }\r\n\r\n  modificaCoobbligato(c: AziendaCoobbligato) {\r\n    this.coobbligatoToEdit = c;\r\n    this.coobbligatoEdit = true;\r\n\r\n    // Listener Modifica effettuata\r\n    setTimeout(() => {\r\n      window.addEventListener('coobbligatoEdit', (e: CustomEvent) => {\r\n        this.coobbligatoEdit = false;\r\n        this.coobbligatoToEdit = null;\r\n\r\n        if (e.detail.obj.ModificaEffettuata === true) {\r\n          this.coobligatiAggiorna();\r\n        }\r\n      }, { passive: false });\r\n\r\n    }, 1000);\r\n\r\n  }\r\n\r\n  modificaCoobbligatoURL() {\r\n    if (!this.coobbligatoToEdit) {\r\n      return '';\r\n    }\r\n\r\n    let coobbligatoEditURL = '';\r\n    if (this.debugLocal) {\r\n      coobbligatoEditURL = `http://elba.local/Cauzioni/Common/Coobbligato/CoobbligatoModifica.asp?coobbligatoId=${this.coobbligatoToEdit.ID_Azienda}&coobbligato_nome=${this.coobbligatoToEdit.AZ_RagSoc}&show_menu=false&richiesta=true`;\r\n    } else {\r\n      coobbligatoEditURL =  `../Common/Coobbligato/CoobbligatoModifica.asp?coobbligatoId=${this.coobbligatoToEdit.ID_Azienda}&coobbligato_nome=${this.coobbligatoToEdit.AZ_RagSoc}&show_menu=false&richiesta=true`;\r\n    }\r\n    return this.sanitizer.bypassSecurityTrustResourceUrl(coobbligatoEditURL);\r\n  }\r\n\r\n  // Chiamata Nuova Richiesta => Passa la lista a coobbligazioneSetup(data)\r\n  coobligatiAggiorna() {\r\n    let uri = `/WebRest/app/AppAziendaService.svc/coobbligati_attivi_get_by_azienda/${this.aziendaId}`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppAziendaService.svc/coobbligati_attivi_get_by_azienda/${this.aziendaId}`;\r\n    }\r\n\r\n    fetch(uri\r\n    )\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: AziendaCoobbligato[]) => {\r\n        if (data) {\r\n          data.forEach(c => {\r\n            if (this.coobbligatiList.filter(coob => coob.ID_Azienda === c.ID_Azienda)) {\r\n              const coobToEdit = this.coobbligatiList.filter(coob => coob.ID_Azienda === c.ID_Azienda)[0];\r\n              coobToEdit.DocumentoDatiIncompleti = c.DocumentoDatiIncompleti;\r\n              coobToEdit.STATUS = c.STATUS;\r\n              coobToEdit.Approvato = c.Approvato;\r\n              console.log(c.AZ_RagSoc + ' AGGIORNATO!');\r\n            }\r\n          });\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n      });\r\n  }\r\n\r\n  calcolaLimite(c: AziendaCoobbligato) {\r\n    // Se sono riscuito a recuperare l'Importo Garantito posso fare il calcolo\r\n    if (this.importoGaranzia && c.LimiteIsDisabled === false && c.Quota > 0) {\r\n\r\n      const newLimite = (this.importoGaranzia * c.Quota) / 100;\r\n      c.Limite = newLimite;\r\n\r\n      // let oldLimite = null;\r\n      // if (c.QuotaOld) {\r\n      //   oldLimite = (this.importoGaranzia * c.QuotaOld) / 100;\r\n      // }\r\n      //\r\n      // // Se non avevo ancora calcolato OPPURE il limite e quello calcolato con la vecchia quota\r\n      // // => Imposto il limite ricalcolato\r\n      // if (!c.QuotaOld || !c.Limite || c.Limite <= 0 || oldLimite === c.Limite) {\r\n      //   c.Limite = newLimite;\r\n      //   c.QuotaOld = c.Quota; // Mi salvo quata vecchia\r\n      // }\r\n    }\r\n  }\r\n\r\n  allegatoIsChecked(c: AziendaCoobbligato, a: string): boolean {\r\n    return c.AllegatoList.indexOf(a) > -1;\r\n  }\r\n\r\n  allegatoChange(c: AziendaCoobbligato, a: string): void {\r\n    if (!a) {\r\n      c.AllegatoList = [];\r\n    } else {\r\n      c.AllegatoList = [a]; // Solo uno per coobbligato\r\n    }\r\n\r\n    // Sbianco\r\n    if (a === 'CQS') {\r\n      c.Limite = null;\r\n    }\r\n    if (a === '' || a === 'CO') {\r\n      c.Quota = null;\r\n      c.Limite = null;\r\n    }\r\n\r\n    // Imposto campi disable\r\n    this.quotaIsDisabled(c);\r\n    this.limiteIsDisabled(c);\r\n  }\r\n\r\n  quotaFocusOut(c: AziendaCoobbligato) {\r\n    if (c.Quota < 0) {\r\n      c.Quota = 0;\r\n    }\r\n\r\n    c.Quota = Math.round((c.Quota + Number.EPSILON) * 100) / 100;\r\n  }\r\n\r\n  limiteFocusOut(c: AziendaCoobbligato) {\r\n    c.Limite = Math.round((c.Limite + Number.EPSILON) * 100) / 100;\r\n  }\r\n\r\n  quotaIsDisabled(c: AziendaCoobbligato): void {\r\n      if (c.AllegatoList.length <= 0 || c.AllegatoList.indexOf('CO') > -1) {\r\n        c.QuotaIsDisabled = true;\r\n      } else {\r\n        c.QuotaIsDisabled = false;\r\n      }\r\n  }\r\n\r\n  limiteIsDisabled(c: AziendaCoobbligato): void {\r\n      if (c.AllegatoList.length <= 0 || c.AllegatoList.indexOf('CQS') > -1 || c.AllegatoList.indexOf('CO') > -1) {\r\n        c.LimiteIsDisabled = true;\r\n      } else {\r\n        c.LimiteIsDisabled = false;\r\n      }\r\n  }\r\n\r\n  getImportoGaranzia() {\r\n    switch (this.modelloId){\r\n      case 'CZ39A':\r\n        // Caso particolare ELB17\r\n        this.importoGaranzia = this.getValFromElement('G1_PrestazioneGarantita_ImportoGarantito');\r\n        this.importoGaranzia = this.getValFromElement('G2_PrestazioneGarantita_ImportoGarantito');\r\n        break;\r\n      case 'CZ42A':\r\n      case 'CZ43A':\r\n        // Caso particolare ELB19/20\r\n        this.importoGaranzia = this.getValFromElement('SommaGarantita');\r\n        break;\r\n      case 'CR03A':\r\n      case 'CR03B':\r\n      case 'CR02A':\r\n        // Caso particolare ELB53 (+ OLD ELB54)\r\n        this.importoGaranzia = this.getValFromElement('ImportoRibassoAsta');\r\n        break;\r\n      default:\r\n        this.importoGaranzia = this.getValFromElement('ImportoGaranzia');\r\n        if(this.importoGaranzia === 0){\r\n          // Caso particolare per le appendici generiche che contengono campo FB_ImportoGaranzia (APY01, APY03, APY07, APY09)\r\n          this.importoGaranzia = this.getValFromElement('FB_ImportoGaranzia');\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  getValFromElement(elementName: string): number {\r\n    // @ts-ignore\r\n    if (document.getElementsByName(elementName).length > 0 && document.getElementsByName(elementName)[0].value) {\r\n      // @ts-ignore\r\n      return this.stringToNumber(document.getElementsByName(elementName)[0].value);\r\n    }else{\r\n      return 0;\r\n    }\r\n  }\r\n\r\n  stringToNumber(str: string): number {\r\n    // Se ha la virgola ha un formato da lettura\r\n    if (str.indexOf(',') > -1) {\r\n      str = this.replaceAll(str, '.', '');\r\n      str = this.replaceAll(str, ',', '.');\r\n    }\r\n    return parseFloat(str);\r\n  }\r\n\r\n  replaceAll(str, find, replace) {\r\n    return str.replace(new RegExp(this.escapeRegExp(find), 'g'), replace);\r\n  }\r\n\r\n  escapeRegExp(str: string) {\r\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\r\n  }\r\n\r\n  salva() {\r\n    const msgErrors = AziendaCoobbligatoUtils.check(this.coobbligatiList, this.allegatiSelectedList);\r\n\r\n    if (msgErrors.length <= 0) {\r\n      this.activeModal.close(this.coobbligatiList);\r\n    } else {\r\n      const msgError = 'Impossibile salvare le modifiche: \\n' + msgErrors.join('\\n');\r\n      alert(msgError);\r\n    }\r\n  }\r\n\r\n  annulla() {\r\n    this.activeModal.dismiss();\r\n  }\r\n\r\n  chiudi() {\r\n    this.activeModal.dismiss();\r\n  }\r\n\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-allegati-modal-allegato-c',\r\n  template: `\r\n    <div class=\"p-3\">\r\n\r\n      <h2>Conformità</h2>\r\n      <br/>\r\n\r\n      <!-- Metodo Pagamentoo -->\r\n      <div>\r\n        <label class=\"label-allegato-c\">Metodo pagamento del premio:</label>\r\n        <select class=\"form-control\" [(ngModel)]=\"metodo_pagamento\" [disabled]=\"mode === 'read'\" >\r\n          <option [ngValue]=\"null\" selected=\"selected\">Seleziona...</option>\r\n          <option [ngValue]=\"0\" selected=\"selected\">Bonifico bancario</option>\r\n          <option [ngValue]=\"1\" selected=\"selected\">Assegno non trasferibile</option>\r\n        </select>\r\n      </div>\r\n      <br/>\r\n\r\n      <!-- Data Pagamento -->\r\n      <div>\r\n        <label class=\"label-allegato-c\">Data pagamento del premio:</label>\r\n        <input type=\"date\" class=\"form-control\" [(ngModel)]=\"data_pagamento\" [disabled]=\"mode === 'read'\" />\r\n      </div>\r\n      <br/>\r\n\r\n      <!-- Conto Destinatario -->\r\n      <div>\r\n        <label class=\"label-allegato-c\">Conto destinatario (Intermediario):</label>\r\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"conto_destinatario\" [disabled]=\"mode === 'read'\" />\r\n      </div>\r\n      <br/>\r\n\r\n      <hr/>\r\n\r\n      <br/>\r\n\r\n      <!-- Assicurato Sezione A -->\r\n      <div>\r\n        <label class=\"label-allegato-c\">Assicurato Sezione A:</label>\r\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"assicurato_sezione_a\" [disabled]=\"mode === 'read'\" />\r\n      </div>\r\n      <br/>\r\n\r\n      <!-- Assicurato Sezione B -->\r\n      <div>\r\n        <label class=\"label-allegato-c\">Assicurato Sezione B:</label>\r\n        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"assicurato_sezione_b\" [disabled]=\"mode === 'read'\" />\r\n      </div>\r\n      <br/>\r\n\r\n\r\n      <br/>\r\n\r\n      <!-- Pulsanti -->\r\n      <div class=\"text-end\">\r\n        <input type=\"button\"\r\n               style=\"width:70px;\"\r\n               class=\"button m-1\"\r\n               id=\"but_annulla_id\"\r\n               value=\"Annulla\"\r\n               *ngIf=\"mode === 'edit'\"\r\n               (click)=\"activeModal.dismiss()\"/>\r\n\r\n        <input type=\"button\"\r\n               style=\"width:70px;\"\r\n               class=\"button m-1\"\r\n               id=\"but_salva_id\"\r\n               value=\"Salva\"\r\n               *ngIf=\"mode === 'edit'\"\r\n               (click)=\"activeModal.close({metodo_pagamento, data_pagamento, conto_destinatario, esito_controllo_tecnico, assicurato_sezione_a, assicurato_sezione_b})\"\r\n        />\r\n\r\n        <input type=\"button\"\r\n               style=\"width:70px;\"\r\n               class=\"button m-1\"\r\n               id=\"but_chiudi_id\"\r\n               value=\"Chiudi\"\r\n               *ngIf=\"mode === 'read'\"\r\n               (click)=\"activeModal.dismiss()\"\r\n        />\r\n      </div>\r\n\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .label-allegato-c {\r\n      font-size: 15px;\r\n      font-weight: bold;\r\n      margin-bottom: 5px;\r\n    }\r\n  `\r\n  ]\r\n})\r\nexport class WebcauAllegatiModalAllegatoCComponent {\r\n\r\n  constructor(public activeModal: NgbActiveModal) { }\r\n\r\n  @Input() mode: string;\r\n\r\n  @Input() metodo_pagamento: number | null = null;\r\n  @Input() data_pagamento: Date | null;\r\n  @Input() conto_destinatario: string;\r\n  @Input() esito_controllo_tecnico: number | null = null;\r\n\r\n  @Input() assicurato_sezione_a: string;\r\n  @Input() assicurato_sezione_b: string;\r\n\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {PrAllegatoModello} from './interfaces/pr-allegato-modello';\r\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {WebcauAllegatiModalTestoComponent} from './webcau-allegati-modal-testo/webcau-allegati-modal-testo.component';\r\nimport {WebcauAllegatiModalCoobbligatiComponent} from './webcau-allegati-modal-coobbligati/webcau-allegati-modal-coobbligati.component';\r\nimport {WebcauAllegatiModalAllegatoCComponent} from './webcau-allegati-modal-allegato-c/webcau-allegati-modal-allegato-c.component';\r\nimport {AziendaCoobbligato, AziendaCoobbligatoUtils} from './interfaces/azienda-coobbligato';\r\nimport {Observable, Subscription} from 'rxjs';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-allegati',\r\n  template: `\r\n\r\n    <!-- Nuova Gestione -->\r\n    <input type=\"hidden\" name=\"AllegatoListJSON\" id=\"AllegatoListJSON\" [(ngModel)]=\"AllegatoListJSON\"/>\r\n\r\n    <!-- Vecchia Gestione -->\r\n    <input type=\"hidden\" name=\"Allegato1\" id=\"Allegato1\" [(ngModel)]=\"Allegato1\"/>\r\n    <input type=\"hidden\" name=\"Allegato2\" id=\"Allegato2\" [(ngModel)]=\"Allegato2\"/>\r\n    <input type=\"hidden\" name=\"Allegato3\" id=\"Allegato3\" [(ngModel)]=\"Allegato3\"/>\r\n    <input type=\"hidden\" name=\"Allegato4\" id=\"Allegato4\" [(ngModel)]=\"Allegato4\"/>\r\n    <input type=\"hidden\" name=\"Allegato5\" id=\"Allegato5\" [(ngModel)]=\"Allegato5\"/>\r\n    <input type=\"hidden\" name=\"Allegato6\" id=\"Allegato6\" [(ngModel)]=\"Allegato6\"/>\r\n    <input type=\"hidden\" name=\"AllegatoCR\" id=\"AllegatoCR\" [(ngModel)]=\"AllegatoCR\"/>\r\n    <input type=\"hidden\" name=\"AllegatoCC\" id=\"AllegatoCC\" [(ngModel)]=\"AllegatoCC\"/>\r\n\r\n    <input type=\"hidden\" name=\"TestoAllegato\" id=\"TestoAllegatoID\" [(ngModel)]=\"TestoAllegato\">\r\n    <input type=\"hidden\" name=\"TestoAllegatoAQ\" id=\"TestoAllegatoAQ\" [(ngModel)]=\"TestoAllegatoAQ\">\r\n    <input type=\"hidden\" id=\"AzioneID\" name=\"azione\" [(ngModel)]=\"AzioneID\">\r\n\r\n    <!-- Coobbligazione -->\r\n    <input type=\"hidden\" id=\"obbligatiJSON\" name=\"obbligatiJSON\" [(ngModel)]=\"obbligatiJSON\"/>\r\n    <input type=\"hidden\" id=\"nrobbligati\" name=\"nrobbligati\" [value]=\"coobbligatiNrGet()\" />\r\n\r\n    <div id='allegato_panel_id' class='testo' style='margin-bottom: 10px;'>\r\n      <b *ngIf=\"allegatiSelectedCount() > 0\">Sono operanti gli allegati:</b>\r\n      <b *ngIf=\"ReadOnly && allegatiSelectedCount() <= 0\">Nessun allegato operante</b>\r\n\r\n      <!-- DEBUG: Replico struttura per vedere comportamento -->\r\n      <div *ngIf=\"debugLocal\">\r\n        <span>allegatiReady = {{allegatiReady}}</span>\r\n        <div *ngIf=\"allegatiReady\">\r\n          <div *ngFor=\"let a of allegato_edit\">\r\n            <span>allegatoVisible [{{a.nome}}] = {{allegatoVisible(a.nome)}}</span>\r\n            <br/>\r\n            <span>ModalitaSelezione [{{a.nome}}] = {{a.ModalitaSelezione}}</span>\r\n            <br/>\r\n            <span>allegatiSelectedCount() = {{allegatiSelectedCount()}}</span>\r\n            <br/>\r\n            <!-- Allegati funzionamento classico a DROPDOWN (Modalita 0 e 1) -->\r\n            <span *ngIf=\"a.ModalitaSelezione === 0 || a.ModalitaSelezione === 1\"> Dropdown classica {{a.nome}}</span>\r\n            <br/>\r\n            <!-- Allegati funzionamento PARTICOLARE (Modalita 2) -->\r\n            <span *ngIf=\"a.ModalitaSelezione === 2\"> Selezione multipla {{a.nome}}</span>\r\n            <br/>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div id='car_id_allegato_list' style='margin-bottom: 5px;' *ngIf=\"allegatiReady\">\r\n\r\n        <div *ngFor=\"let a of allegato_edit\" id=\"Div{{a.nome}}\" [hidden]=\"!allegatoVisible(a.nome)\" style=\"margin-top:10px;\">\r\n\r\n          <!-- Allegati funzionamento classico a DROPDOWN (Modalita 0 e 1) -->\r\n          <div *ngIf=\"a.ModalitaSelezione === 0 || a.ModalitaSelezione === 1\" style=\"margin: 0; padding: 0;\">\r\n\r\n            <b class=\"testo\" *ngIf=\"!ReadOnly\">Allegato:</b>\r\n\r\n            <!-- Selezionabile da Utente -->\r\n            <select id=\"allegato_sel_{{a.nome}}_id\" style=\"width:80%;margin-left:10px;\"\r\n                    [disabled]=\"allegatoDisabled(a.nome)\"\r\n                    *ngIf=\"!ReadOnly && !allegatoFixed(a.nome)\" (change)=\"allegatoSelectChange(a.nome, $event.target.value)\" [(ngModel)]=\"this[a.nome]\">\r\n\r\n              <option *ngIf=\"allegatoDefaultEnable(a.nome)\" value=\"\" selected=\"selected\">Nessuno</option>\r\n              <option *ngFor=\"let opz of allegatoGetOptions(a.nome)\"\r\n                      selected=\"{{(allegatoSelected(a.nome, opz.AllegatoModelloID) ? 'selected' : '')}}\" value=\"{{opz.AllegatoModelloID}}\">\r\n                {{allegatoCodiceGet(opz.AllegatoModelloID)}} - {{opz.AllegatoModelloDescrizione}}\r\n              </option>\r\n            </select>\r\n\r\n            <!-- Elenco ReadOnly -->\r\n            <div id=\"car_id_allegato_list\" style=\"margin-bottom:15px;margin-top:15px;\" [hidden]=\"!allegatoVisible(a.nome) && a.selected\" *ngIf=\"ReadOnly\">\r\n              <b class=\"testo\">{{allegatoCodiceGet(a.selected)}}</b> - {{allegatoDescriptionGet(a.selected)}}\r\n            </div>\r\n\r\n            <!-- Allegato Fisso -->\r\n            <div id=\"allegato_sel_{{a.nome}}_id\" *ngIf=\"!ReadOnly && allegatoFixed(a.nome)\"\r\n                 style=\"margin-left:10px; border:1px #000 solid;width:80%; display: inline-block; font-size: 10pt;\">\r\n              {{allegatoFixedDescrtionGet(a.nome)}}\r\n            </div>\r\n\r\n            <!-- Modale Testo GE -->\r\n            <div id=\"car_id_allegato_ge_mgm\" style=\"margin-left: 2px; display: inline;\" *ngIf=\"!ReadOnly && a.nome === 'Allegato1' && Allegato1 === 'GE'\">\r\n              <a style=\"margin-left:10px;\" href=\"javascript:void(0)\"\r\n                 (click)=\"modalTesto(a.nome, 'GE')\">\r\n                <span class=\"testo\"><u>Modifica</u></span>\r\n              </a>\r\n            </div>\r\n\r\n            <!-- Modale Testo AQ -->\r\n            <div id=\"car_id_allegato_aq_mgm\" style=\"margin-left: 2px; display: inline;\" *ngIf=\"!ReadOnly && a.nome === 'Allegato4' && Allegato4 === 'AQ'\">\r\n              <a style=\"margin-left:10px;\" href=\"javascript:void(0)\"\r\n                 (click)=\"modalTesto(a.nome, 'AQ')\">\r\n                <span class=\"testo\"><u>Modifica</u></span>\r\n              </a>\r\n            </div>\r\n\r\n            <!-- Modale Rogito C -->\r\n            <div id=\"car_id_allegato_c_mgm\" style=\"margin-left: 2px; display: inline;\" *ngIf=\"!ReadOnly && a.nome === 'AllegatoC' && allegatoIsSelected('AllegatoC')\">\r\n              <a style=\"margin-left:10px;\" href=\"javascript:void(0)\"\r\n                 (click)=\"modalAllegatoC()\">\r\n                <span class=\"testo\"><u>Modifica</u></span>\r\n              </a>\r\n            </div>\r\n\r\n            <!-- Elenco opzioni -->\r\n            <br *ngIf=\"!ReadOnly\">\r\n            <div id=\"suggestion_{{a.nome}}\" *ngIf=\"!ReadOnly\" style=\"display:inline-block;margin-left:5px;\">\r\n              ({{allegatiListDescr(a.nome)}})\r\n            </div>\r\n\r\n          </div>\r\n\r\n          <!-- Allegati funzionamento PARTICOLARE (Modalita 2) -->\r\n          <div *ngIf=\"a.ModalitaSelezione === 2\" style=\"margin: 0; padding: 0;\">\r\n\r\n            <!-- Allegato2 => COOBBLIGAZIONE -->\r\n            <div *ngIf=\"a.nome === 'Allegato2' && coobbligatiAziendaList.length > 0\" style=\"display: flex;\">\r\n\r\n              <!-- Elenco CheckBox CO,CQS,CQ -->\r\n              <div>\r\n                <b>Allegati Coobbligazione:</b>\r\n\r\n                <div style=\"display: grid; margin-left: 10px;\">\r\n                  <span *ngFor=\"let opz of allegatoGetOptions(a.nome)\" style=\"margin-top: 5px;\" [hidden]=\"ReadOnly && !opz.checked\">\r\n                    <input type=\"checkbox\" [(ngModel)]=\"opz.checked\"\r\n                           (ngModelChange)=\"allegatoCheckBoxChange(a.nome, opz.checked ? opz.AllegatoModelloID : '')\"\r\n                            [disabled]=\"allegatoCheckBoxDisabled('Allegato2', opz.AllegatoModelloID)\">\r\n                    {{allegatoCodiceGet(opz.AllegatoModelloID)}} - {{opz.AllegatoModelloDescrizione}}\r\n                  </span>\r\n                </div>\r\n              </div>\r\n\r\n              <!-- Gestione elenco coobbligati -->\r\n              <div *ngIf=\"!ReadOnly && obbligatiJSON && allegatiReady\" style=\"margin-left: auto; margin-right: 0;\">\r\n                <a href=\"javascript:void(0)\" (click)=\"modalCoobbligati()\" style=\"float: right;\">\r\n                  <span>Gestisci Coobbligati</span>\r\n                </a>\r\n\r\n                <br/>\r\n                <div class=\"errorDivCoobbligati\" *ngIf=\"coobbligatiIncompleti()\">\r\n                  <i style=\"margin-right: 5px;\">Errore:</i>\r\n                  <span>Dati incompleti!</span>\r\n                </div>\r\n                <div class=\"warningDivCoobbligati\" *ngIf=\"coobbligatiWarining()\">\r\n                  <i style=\"margin-right: 5px;\">Attenzione:</i>\r\n                  <span>{{coobbligatiWarining()}}</span>\r\n                </div>\r\n\r\n              </div>\r\n\r\n            </div>\r\n\r\n          </div>\r\n\r\n        </div>\r\n\r\n      </div>\r\n\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .errorDivCoobbligati {\r\n      background-color: indianred;\r\n      border: solid 2px gray;\r\n      border-radius: 5px;\r\n      font-weight: bold;\r\n      margin-top: 10px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .warningDivCoobbligati {\r\n      background-color: wheat;\r\n      border: solid 2px gray;\r\n      border-radius: 5px;\r\n      font-weight: bold;\r\n      margin-top: 10px;\r\n      padding: 5px;\r\n    }\r\n  `]\r\n})\r\nexport class WebcauAllegatiComponent implements OnInit {\r\n\r\n  // Parametri comportamentali\r\n  @Input() ReadOnly: string;\r\n  @Input() debugLocal: string; // Chiamata su elba.local\r\n  @Input() Record_ID: string; // ID_Richiesta Polizza o ID_Appendice\r\n  @Input() TipoRecord: string; // (BOTipoRecordEnum) Rich.Polizza = 0 - Rich.Appendice = 5\r\n  @Input() dbfu: string; // Se \"true\" allora si tratta di DBFU\r\n\r\n  // Parametri gestione allegati\r\n  @Input() ID_Modello: string;\r\n  @Input() ID_ModelloAppendice: string;\r\n  @Input() CodiceRischio: string;\r\n  @Input() CodiceDelega: string;\r\n  @Input() Convenzione: string;\r\n  @Input() GaranzieCatastrofaliAbilitate: string;\r\n  @Input() SottoProd72: string;\r\n\r\n  // Parametri gestione Coobbligazione\r\n  @Input() ID_TipoUtente: string;\r\n  @Input() ID_Azienda: string;\r\n\r\n  // Nuove gestione Allegati Output\r\n  AllegatoListJSON = '';\r\n\r\n  // Coobbligazione\r\n  coobbligatiAziendaList: AziendaCoobbligato[] = [];\r\n  obbligatiJSON = '';\r\n\r\n  // Vecchia Gestione Allegati ASP\r\n  @Input() Allegato1: string;\r\n  @Input() Allegato2: string;\r\n  @Input() Allegato3: string;\r\n  @Input() Allegato4: string;\r\n  @Input() Allegato5: string;\r\n  @Input() Allegato6: string;\r\n  @Input() AllegatoCR: string;\r\n  @Input() AllegatoCC: string;\r\n  @Input() TestoAllegato: string;\r\n  @Input() TestoAllegatoAQ: string;\r\n  AzioneID = -1;\r\n\r\n  // Componente caricato\r\n  allegatiReady = false as boolean;\r\n\r\n  // Elenco Allegati con Opzioni sottostanti\r\n  allegato_edit = [] as any[];\r\n\r\n  // Data Source configurazioni\r\n  allegato_schema_list = [] as PrAllegatoModello[];\r\n\r\n  // Observables\r\n  coobligatiListGetObservable: Observable<any> = new Observable((observer) => {\r\n    let uri = `/WebRest/app/AppAziendaService.svc/coobbligati_attivi_get_by_azienda/${this.ID_Azienda}`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppAziendaService.svc/coobbligati_attivi_get_by_azienda/${this.ID_Azienda}`;\r\n    }\r\n\r\n    fetch(uri\r\n    )\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          observer.error(response);\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: AziendaCoobbligato[]) => {\r\n        if (data) {\r\n          this.coobbligatiAziendaList = data;\r\n        }\r\n        this.coobbligazioneSetup();\r\n        observer.complete();\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n        this.coobbligazioneSetup();\r\n        observer.error(error);\r\n      });\r\n  });\r\n\r\n  coobbligatiListEditGetObservable: Observable<any> = new Observable((observer) => {\r\n    let uri = `/WebRest/app/AppAziendaService.svc/coobbligati_get_by_azienda_rp`;\r\n\r\n    // DBFU\r\n    if (this.dbfu === 'true') {\r\n      uri = `/WebRest/app/AppAziendaService.svc/dbfu_coobbligati_get_by_titolo`;\r\n    }\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppAziendaService.svc/coobbligati_get_by_azienda_rp`;\r\n    }\r\n\r\n    const obj = {\r\n      ID_Titolo: this.Record_ID,\r\n      Tipo_Record: this.TipoRecord,\r\n      ID_Azienda: this.ID_Azienda\r\n    };\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(obj)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          observer.error(response);\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: AziendaCoobbligato[]) => {\r\n        if (data) {\r\n          this.coobbligatiAziendaList = data;\r\n          this.coobbligazioneSetup();\r\n        }\r\n        observer.complete();\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n        this.coobbligatiAziendaList = JSON.parse('[{\"AZ_CAP\":\"55016\",\"AZ_CodFisc\":\"00271150468\",\"AZ_Comune\":\"PORCARI\",\"AZ_Indirizzo\":\"VIA BOCCHERINI 25\\\\/27\",\"AZ_PIVA\":\"00271150468\",\"AZ_Prov\":\"LU\",\"AZ_RagSoc\":\"GIANNINI GIUSTO SRL\",\"AllegatoList\":[\"CQ\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":10580,\"IsChecked\":true,\"Limite\":250.00,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"92100\",\"AZ_CodFisc\":\"MRNNDR74D19E094J\",\"AZ_Comune\":\"AGRIGENTO\",\"AZ_Indirizzo\":\"Via bisognosi 25\",\"AZ_PIVA\":\"05564760964\",\"AZ_Prov\":\"AG\",\"AZ_RagSoc\":\"Impresa Edile di Meroni\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":10764,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"10100\",\"AZ_CodFisc\":\"00469580013\",\"AZ_Comune\":\"TORINO\",\"AZ_Indirizzo\":\"VIALE AGNELLI 1\",\"AZ_PIVA\":\"00469580013\",\"AZ_Prov\":\"TO\",\"AZ_RagSoc\":\"FIAT\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"FIRENZE\",\"AziendaDocumentoNumero\":\"ww2321314\",\"AziendaDocumentoTipo\":\"Patente\",\"AziendaDocumentoTipoID\":3,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":10774,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"53036\",\"AZ_CodFisc\":\"02817030162\",\"AZ_Comune\":\"POGGIBONSI\",\"AZ_Indirizzo\":\"Via Cappelli 12\",\"AZ_PIVA\":\"02817030162\",\"AZ_Prov\":\"SI\",\"AZ_RagSoc\":\"Expert\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":7,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":10989,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"37042\",\"AZ_CodFisc\":\"00758040042\",\"AZ_Comune\":\"CALDIERO\",\"AZ_Indirizzo\":\"via dei panettoni\",\"AZ_PIVA\":\"00758040042\",\"AZ_Prov\":\"VR\",\"AZ_RagSoc\":\"maina\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11033,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"12051\",\"AZ_CodFisc\":\"00294770045\",\"AZ_Comune\":\"ALBA\",\"AZ_Indirizzo\":\"CORSO BRA 30\\\\/G\",\"AZ_PIVA\":\"00294770045\",\"AZ_Prov\":\"CN\",\"AZ_RagSoc\":\"AGNELLI PIERO SRL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11058,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"92100\",\"AZ_CodFisc\":\"MRNNDR74D19E094J\",\"AZ_Comune\":\"AGRIGENTO\",\"AZ_Indirizzo\":\"VIA BISOGNOSI, 65\",\"AZ_PIVA\":\"\",\"AZ_Prov\":\"AG\",\"AZ_RagSoc\":\"MERONI ANDREA\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11270,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"53019\",\"AZ_CodFisc\":\"00604790527\",\"AZ_Comune\":\"CASTELNUOVO BERARDENGA\",\"AZ_Indirizzo\":\"LOCALITA\\' VILLA A SESTA SNC\",\"AZ_PIVA\":\"00604790527\",\"AZ_Prov\":\"SI\",\"AZ_RagSoc\":\"PODERE LECCI E BROCCHI\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11281,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"24122\",\"AZ_CodFisc\":\"00826600165\",\"AZ_Comune\":\"BERGAMO\",\"AZ_Indirizzo\":\"VIA SANT\\' ALESSANDRO 52\",\"AZ_PIVA\":\"00826600165\",\"AZ_Prov\":\"BG\",\"AZ_RagSoc\":\"TIPOGRAFIA RONCALLI SNC DI CAROBBIO G. & C.\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":8,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11324,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"47522\",\"AZ_CodFisc\":\"00002890408\",\"AZ_Comune\":\"CESENA\",\"AZ_Indirizzo\":\"VIA DISMANO 5819\",\"AZ_PIVA\":\"00002890408\",\"AZ_Prov\":\"FC\",\"AZ_RagSoc\":\"TREVI SPA (IN FORMA ABBREVIATO TREVI SPA )\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11328,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"12030\",\"AZ_CodFisc\":\"00184910040\",\"AZ_Comune\":\"CAVALLERMAGGIORE\",\"AZ_Indirizzo\":\"STRADA REGIONALE DEL COLLE DI TENDA 20\",\"AZ_PIVA\":\"00184910040\",\"AZ_Prov\":\"CN\",\"AZ_RagSoc\":\"O.S.T. SRL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11402,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"11020\",\"AZ_CodFisc\":\"00067100073\",\"AZ_Comune\":\"CHALLAND SAINT VICTOR\",\"AZ_Indirizzo\":\"LOCALITA\\' PLAN FELINAZ 197\",\"AZ_PIVA\":\"00067100073\",\"AZ_Prov\":\"AO\",\"AZ_RagSoc\":\"CHENEVIER SPA\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":5,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11463,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"0000 \",\"AZ_CodFisc\":\"00000599993\",\"AZ_Comune\":\"ESTERO\",\"AZ_Indirizzo\":\"SLUISWEG 10\",\"AZ_PIVA\":\"00000599993\",\"AZ_Prov\":\"EE\",\"AZ_RagSoc\":\"STAHL Europe B.V. test\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11468,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"11029\",\"AZ_CodFisc\":\"00040390072\",\"AZ_Comune\":\"VERRES\",\"AZ_Indirizzo\":\"VIA DEI GIARDINI 370\",\"AZ_PIVA\":\"00040390072\",\"AZ_Prov\":\"AO\",\"AZ_RagSoc\":\"CIMO SRL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11478,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"50012\",\"AZ_CodFisc\":\"VNNDTT76A62D612I\",\"AZ_Comune\":\"BAGNO A RIPOLI\",\"AZ_Indirizzo\":\"VIA CHIANTIGIANA 314\",\"AZ_PIVA\":\"\",\"AZ_Prov\":\"FI\",\"AZ_RagSoc\":\"VANNUTELLI DILETTA\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":0,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11480,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"35125\",\"AZ_CodFisc\":\"00035420280\",\"AZ_Comune\":\"PADOVA\",\"AZ_Indirizzo\":\"VIA GIOVANNI PASCOLI 3\\\\/B\",\"AZ_PIVA\":\"00035420280\",\"AZ_Prov\":\"PD\",\"AZ_RagSoc\":\"HABITAT SOC COOP A RL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2020-07-04T00:00:00+02:00\",\"AziendaDocumentoEnteRilascio\":\"Comune di Milano\",\"AziendaDocumentoNumero\":\"FS3546AF\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":5,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11481,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"85010\",\"AZ_CodFisc\":\"00009760760\",\"AZ_Comune\":\"PIGNOLA\",\"AZ_Indirizzo\":\"VIA VESCOVADO 4\",\"AZ_PIVA\":\"00009760760\",\"AZ_Prov\":\"PZ\",\"AZ_RagSoc\":\"TOURIST HOTEL SNC DI ANASTASIO SALVATORE & C.\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":null,\"AziendaDocumentoEnteRilascio\":null,\"AziendaDocumentoNumero\":null,\"AziendaDocumentoTipo\":null,\"AziendaDocumentoTipoID\":null,\"CodAffidamento\":5,\"DocumentoDatiIncompleti\":true,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11483,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"36030\",\"AZ_CodFisc\":\"00145890240\",\"AZ_Comune\":\"SAN VITO DI LEGUZZANO\",\"AZ_Indirizzo\":\"VIA VICENZA 23\",\"AZ_PIVA\":\"00145890240\",\"AZ_Prov\":\"VI\",\"AZ_RagSoc\":\"SIGGI GROUP SPA\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11522,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"23100\",\"AZ_CodFisc\":\"00122730146\",\"AZ_Comune\":\"SONDRIO\",\"AZ_Indirizzo\":\"VIA VENTINA 17\",\"AZ_PIVA\":\"00122730146\",\"AZ_Prov\":\"SO\",\"AZ_RagSoc\":\"EDIL BI SPA\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11524,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"27058\",\"AZ_CodFisc\":\"00032610180\",\"AZ_Comune\":\"VOGHERA\",\"AZ_Indirizzo\":\"VIA DEL LAVORO 186 EX CONS. AGR. PROV\\\\/LE CASERTA PROVA LUNGHEZZA 888\",\"AZ_PIVA\":\"00032610180\",\"AZ_Prov\":\"PV\",\"AZ_RagSoc\":\"FRANZOSI AMBIENTE SRL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2000-01-01T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"COMUNE DI MILANO\",\"AziendaDocumentoNumero\":\"AT000000\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":1,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11547,\"IsChecked\":true,\"Limite\":null,\"Quota\":5.000,\"STATUS\":\"A\"}]');\r\n        this.coobbligazioneSetup();\r\n        observer.error(error);\r\n      });\r\n  });\r\n\r\n  constructor(private _modal: NgbModal) { }\r\n\r\n  ngOnInit(): void {\r\n    // Recupero Configurazioni\r\n    this.allegatiConfigGet();\r\n    // Setup Listeners per comandi dall'esterno\r\n    this.setupListeners();\r\n  }\r\n\r\n  // EVENTI LISTENER\r\n  setupListeners() {\r\n\r\n    // Listener per SET esterni\r\n    window.addEventListener('allegatoSet', (e: CustomEvent) => {\r\n      this.allegatoSelectChange(e.detail.obj.allegato, e.detail.obj.value); // Mi aspetto in input {allegato: 'Allegato1', value: 'GE'}\r\n      // Se viene passato anche il parametro 'testo' lo imposto (Accade solo per l'AQ per adesso)\r\n      if (e.detail.obj.testo) {\r\n        if (e.detail.obj.value === 'GE') {\r\n          this.TestoAllegato = e.detail.obj.testo;\r\n        } else if (e.detail.obj.value === 'AQ') {\r\n          this.TestoAllegatoAQ = e.detail.obj.testo;\r\n        } else {\r\n          console.log('ERRORE Allegati: Aleggato ' + e.detail.obj.allegato + ', testo non previsto ma passato!');\r\n        }\r\n      }\r\n    }, { passive: true });\r\n\r\n    // Listener per SET visibilità allegati\r\n    window.addEventListener('allegatoSetVisibility', (e: CustomEvent) => {\r\n      // Mi aspetto in input {allegato: 'Allegato1', list: ['AI','AT']}\r\n      const allegato = e.detail.obj.allegato as string;\r\n      const list = e.detail.obj.list as string[];\r\n      // Pulisco elenco attuale opzioni\r\n      const ae = this.allegato_edit.filter(x => x.nome === allegato)[0];\r\n      ae.option_list = [];\r\n      // Ripopolo con opzioni passate\r\n      this.allegato_schema_list.filter(opt => opt.ColonnaSalvataggioInRichiesta === allegato).forEach(o => {\r\n        // Se presente in lista\r\n        if (list.indexOf(o.AllegatoModelloID) >= 0) {\r\n          const opt = {\r\n            nome: o.AllegatoModelloID,\r\n            AllegatoModelloID: o.AllegatoModelloID,\r\n            AllegatoModelloDescrizione: o.AllegatoModelloDescrizione,\r\n            OpzioneVisibile: o.OpzioneVisibile,\r\n            OpzioneDisabilitata: o.OpzioneDisabilitata\r\n          } as any;\r\n\r\n          ae.option_list.push(opt); // Aggiungo opzione ad elenco select\r\n        }\r\n      });\r\n\r\n      // Se Allegato attivo non presente e Default abilitato => Imposto il Default\r\n      if (list.indexOf(this[allegato]) < 0 && this.allegatoDefaultEnable(ae.nome)) {\r\n        this.allegatoSelectChange(allegato, '');\r\n      // Se Allegato attivo non presente e Default non abilitato => Seleziono prima opzione\r\n      } else if (list.indexOf(this[allegato]) < 0 && !this.allegatoDefaultEnable(ae.nome)) {\r\n        this.allegatoSelectChange(allegato, ae.option_list[0].AllegatoModelloID);\r\n      }\r\n\r\n    }, { passive: true });\r\n  }\r\n\r\n  // GET CONFIGURAZIONE\r\n  allegatiConfigGet() {\r\n    if (!this.ID_Modello) {\r\n      console.log('ERRORE Allegati: ID Modello non specificato!');\r\n      return;\r\n    }\r\n    if (!this.CodiceRischio) {\r\n      console.log('ERRORE Allegati: CodiceRischio non specificato!');\r\n      return;\r\n    }\r\n\r\n    // Definisco quale chiamata in base alla tipologia\r\n    let mode = 'polizza';\r\n    let uriData = `${this.ID_Modello}/${this.CodiceRischio}`;\r\n\r\n    if (this.TipoRecord !== '0' &&  this.TipoRecord !== '2') {\r\n      mode = 'appendice';\r\n      uriData += `/` + this.ID_ModelloAppendice;\r\n    }\r\n\r\n    let allConfig = 'false';\r\n    if (this.ReadOnly){\r\n      allConfig = 'true';\r\n    }\r\n\r\n    let uri = `/WebRest/app/AppModelloService.svc/modello_rischio_allegato_${mode}_configurazione_get/${uriData}/${allConfig}`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppModelloService.svc/modello_rischio_allegato_${mode}_configurazione_get/${uriData}/${allConfig}`;\r\n    }\r\n\r\n\r\n    fetch(uri)\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: PrAllegatoModello[]) => {\r\n        if (data && data.length > 0) {\r\n          this.allegato_schema_list = [...data];\r\n          // Se Inserimento/Edit rimuovo allegati non attivi\r\n          if (!this.ReadOnly) {\r\n            this.allegato_schema_list = [...this.allegato_schema_list.filter(a => a.AllegatoModelloIsAlive)];\r\n          }\r\n\r\n          // Se è presente in configurazione un Allegato di Coobbligazione => GET COOBBLIGATI BASE\r\n          if (this.allegato_schema_list.filter(x => x.ColonnaSalvataggioInRichiesta === 'Allegato2').length > 0) {\r\n            if (this.Record_ID) {\r\n              this.coobbligatiListEditGetObservable.subscribe({\r\n                complete: () => {\r\n                  this.allegatiConfigSet();\r\n                },\r\n                error: err => {\r\n                  console.log('Errore \"coobbligatiListEditGetObservable\" => ' + err.toString());\r\n                  this.allegatiConfigSet();\r\n                }\r\n              });\r\n            } else {\r\n              this.coobligatiListGetObservable.subscribe({\r\n                complete: () => {\r\n                  this.allegatiConfigSet();\r\n                },\r\n                error: err => {\r\n                  console.log('Errore \"coobligatiListGetObservable\" => ' + err.toString());\r\n                  this.allegatiConfigSet();\r\n                }\r\n              });\r\n            }\r\n          } else {\r\n            this.allegatiConfigSet();\r\n          }\r\n        } else {\r\n          console.log('Nessuna configurazione allegati per il Prodotto ' + this.ID_Modello + ' - ' + this.CodiceRischio);\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare la configurazione degli allegati');\r\n      });\r\n  }\r\n\r\n  // SET CONFIGURAZIONE\r\n  allegatiConfigSet() {\r\n    this.allegato_schema_list.forEach(ac => {\r\n\r\n      // Se non ancora calcolato l'Allegato in questione procedo\r\n      if (this.allegato_edit.filter(a => a.nome === ac.ColonnaSalvataggioInRichiesta).length <= 0) {\r\n\r\n        // Item lista configurazione campo Allegato1 (per esemprio)\r\n        const item = {\r\n          OpzioneVisibile: this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === ac.ColonnaSalvataggioInRichiesta && conf.OpzioneVisibile === true).length > 0, // True se almeno una opzioni visibile\r\n          OpzioneDisabilitata: this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === ac.ColonnaSalvataggioInRichiesta && conf.OpzioneDisabilitata === false).length <= 0, // True se tutte le config sono disabilitate\r\n          nome: ac.ColonnaSalvataggioInRichiesta,\r\n          formvar: ac.ColonnaSalvataggioInRichiesta,\r\n          fixed: this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === ac.ColonnaSalvataggioInRichiesta && conf.OpzioneFissa === false).length <= 0, // True se tutte le config sono fisse (se fosse così deve essere solo una)\r\n          def_enable: this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === ac.ColonnaSalvataggioInRichiesta && conf.OpzioneDefault === true).length > 0,\r\n          // selected: this.allegatoGetSelected(ac.ColonnaSalvataggioInRichiesta),\r\n          ModalitaSelezione: ac.ModalitaSelezione,\r\n          option_list: []\r\n        } as any;\r\n\r\n        // Elenco opzioni select Allegato1\r\n        this.allegato_schema_list.filter(opt => opt.ColonnaSalvataggioInRichiesta === ac.ColonnaSalvataggioInRichiesta).forEach(o => {\r\n          const opt = {\r\n            nome: o.AllegatoModelloID,\r\n            AllegatoModelloID: o.AllegatoModelloID,\r\n            AllegatoModelloDescrizione: o.AllegatoModelloDescrizione,\r\n            OpzioneVisibile: o.OpzioneVisibile,\r\n            OpzioneDisabilitata: o.OpzioneDisabilitata,\r\n            // checked: this.Record_ID ? false : item.selected === o.AllegatoModelloID // Gestione checkbox\r\n          } as any;\r\n\r\n          item.option_list.push(opt); // Aggiungo opzione ad elenco select\r\n        });\r\n\r\n        // Aggiungo alla lista di allegati attivi\r\n        this.allegato_edit.push(item);\r\n\r\n        // Imposto allegato selezionato di defualt o tramite condizioni particolari\r\n        item.selected = this.allegatoGetSelected(ac.ColonnaSalvataggioInRichiesta);\r\n        item.option_list.forEach(o => {\r\n          o.checked = this.Record_ID ? false : item.selected === o.AllegatoModelloID; // Gestione checkbox\r\n        });\r\n\r\n      }\r\n    });\r\n\r\n    // Recupero Allegati selezionati da Richiesta (se ID_Richiesta valorizzato)\r\n    if (this.Record_ID) {\r\n      this.allegatiGet();\r\n    } else {\r\n      this.allegatiReady = true;\r\n      window.dispatchEvent(new CustomEvent('allegatiReady'));\r\n    }\r\n  }\r\n\r\n  // GET AND SET ALLEGATO\r\n  allegatoGetSelected(colonna: string): string {\r\n    let selectedValue = '';\r\n\r\n    // Allegato in EDIT (Non faccio chiamate ma sto utilizzando i campi in input)\r\n    if (this.allegatoHasValue(colonna)) {\r\n      selectedValue = this[colonna];\r\n    }\r\n\r\n    // Ho il Record ID => Dopo la prima fase di configurazione farò la chiamata di GET degli allegati attivi e quindi per adesso ignoro logiche di Default ecc\r\n    // Non Ho il Record ID => Nella prima fase utilizzo i valori Default e casi particolari\r\n    if (!this.Record_ID) {\r\n\r\n      // Allegato selezionato di Default\r\n      const allegatoDefault = this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === colonna && conf.AllegatoDefault);\r\n      if (allegatoDefault.length > 0) {\r\n        selectedValue = allegatoDefault[0].AllegatoDefault;\r\n      }\r\n\r\n      // Elenco opzioni disponibile per l'allegato\r\n      const allegatoOptionList = this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === colonna);\r\n\r\n      // Gestisco casi particolari per ciascuna possibile opzione dell'allegato\r\n      allegatoOptionList.forEach(allegatoMod => {\r\n\r\n        // Allegato in base a Modalità\r\n        switch (allegatoMod.ModalitaSelezione) {\r\n          case 0:\r\n            // Selezionabile solo da Utente\r\n            break;\r\n          case 1:\r\n            // Componente Allegati scegli in base alle informazioni passate o esternamente (CASI PARTICOALRI)\r\n            if (allegatoMod.AllegatoModelloID === 'CN' && this.CodiceDelega && parseInt(this.CodiceDelega, 10) === 2) {\r\n              selectedValue = 'CN';\r\n            }\r\n            if (allegatoMod.AllegatoModelloID === 'AQ' && this.Convenzione) {\r\n              selectedValue = 'AQ';\r\n            }\r\n\r\n            // ELB72 sottoprodotti\r\n            if (allegatoMod.AllegatoModelloID === 'PI' && this.SottoProd72 === 'CPI') {\r\n              selectedValue = 'PI';\r\n            }\r\n            if (allegatoMod.AllegatoModelloID === 'PX' && this.SottoProd72 === 'CPN') {\r\n              selectedValue =  'PX';\r\n            }\r\n            if (allegatoMod.AllegatoModelloID === 'IC' && this.SottoProd72 === 'IDC') {\r\n              selectedValue = 'IC';\r\n            }\r\n\r\n            break;\r\n          case 2:\r\n            // Comportamento speciale Coobbligati\r\n            if (allegatoMod.AllegatoModelloID === 'CO') {\r\n              selectedValue = 'CO';\r\n            }\r\n            break;\r\n        }\r\n\r\n      });\r\n\r\n    }\r\n\r\n    this.allegatoSelectChange(colonna, selectedValue);\r\n    return selectedValue;\r\n  }\r\n\r\n  // GET DA RICHIESTA\r\n  allegatiGet() {\r\n    if (!this.TipoRecord) {\r\n      return;\r\n    }\r\n\r\n    // Si ricarica gli allegati => Not Ready\r\n    this.allegatiReady = false;\r\n\r\n    let uri = `/WebRest/app/AppRichiestaService.svc/allegati_get/${this.TipoRecord}/${this.Record_ID}`;\r\n\r\n    if (this.dbfu === 'true') {\r\n      uri = `/WebRest/app/AppRichiestaService.svc/dbfu_allegati_get/${this.TipoRecord}/${this.Record_ID}`;\r\n    }\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppRichiestaService.svc/allegati_get/${this.TipoRecord}/${this.Record_ID}`;\r\n    }\r\n\r\n    fetch(uri\r\n    )\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: any[]) => {\r\n        if (data && data.length > 0) {\r\n          data.forEach(d => {\r\n            const schemas = this.allegato_schema_list.filter(s => s.AllegatoModelloID === d.AllegatoModelloId);\r\n            if (schemas.length > 0) {\r\n              this.allegatiReady = false;\r\n              this.allegatoSelectChange(schemas[0].ColonnaSalvataggioInRichiesta, d.AllegatoModelloId);\r\n              // Se contine Testo\r\n              if (d.Testo) {\r\n                // GE e AQ possono avere il testo\r\n                if (d.AllegatoModelloId === 'GE') {\r\n                  this.TestoAllegato = d.Testo;\r\n                } else if (d.AllegatoModelloId === 'AQ') {\r\n                  this.TestoAllegatoAQ = d.Testo;\r\n                }\r\n              }\r\n              // Se Allegato2 => Set checkbox\r\n              if (schemas[0].ColonnaSalvataggioInRichiesta === 'Allegato2') {\r\n                const optionList = this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list;\r\n                const opt = optionList.filter(a => a.AllegatoModelloID === d.AllegatoModelloId)[0];\r\n                opt.checked = true;\r\n                this.allegatoCheckBoxChange(schemas[0].ColonnaSalvataggioInRichiesta, opt.AllegatoModelloID);\r\n                this.allegatoListSet();\r\n              }\r\n            }\r\n          });\r\n        }\r\n\r\n        this.allegatiReady = true;\r\n        window.dispatchEvent(new CustomEvent('allegatiReady'));\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare gli allegati associati alla Richiesta');\r\n\r\n        this.allegatiReady = true;\r\n        window.dispatchEvent(new CustomEvent('allegatiReady'));\r\n      });\r\n  }\r\n\r\n  // NEW allegato_select_on_change\r\n  allegatoSelectChange(nome: string, value: string): void {\r\n    // Set AllegatoX = value\r\n    this[nome] = value; // Ridondante ma necessario nella fase di init\r\n    // Gestione CASI PARTICOLARI nella SELEZIONE\r\n    switch (nome) {\r\n      case 'Allegato1':\r\n        if (value === 'GE' && this.allegatiReady) {\r\n          this.modalTesto(nome, 'GE');\r\n          this.AzioneID = -1; // Nessuna Azione\r\n        } else if (value !== 'GE' && this.allegatiReady) {\r\n          this.AzioneID = 2; // Delete\r\n        }\r\n        break;\r\n      case 'Allegato2':\r\n        // Se il componente non si è caricato la CheckBox Change fallisce => Aspetto 2sec\r\n        // console.log('allegatoSelectChange() => Allegato 2 Gestione!');\r\n        // this.coobbligazioneInit(false);\r\n        // this.allegatoCheckBoxChange(nome, value); // Imposto checkbox e correggo valore Allegato2 e AllegatoCO\r\n\r\n        // Allegato2 NON DEVE essere settato con valori diversi da CO\r\n        if (value !== 'CO') {\r\n          nome = 'AllegatoCO';\r\n        }\r\n        break;\r\n      case 'AllegatoC':\r\n        if (value === 'C' && this.allegatiReady) {\r\n          this.modalAllegatoC();\r\n        }\r\n        break;\r\n    }\r\n\r\n    // Allineo sempre \"allegato_edit\" => AllegatiList\r\n    const ae = this.allegato_edit.filter(x => x.nome === nome);\r\n    if (ae.length > 0) {\r\n      this.allegato_edit.filter(x => x.nome === nome)[0].selected = value;\r\n      if (value === 'CO') {\r\n        const optionList = this.allegato_edit.filter(a => a.nome === nome)[0].option_list;\r\n        const optCO = optionList.filter(a => a.AllegatoModelloID === 'CO')[0];\r\n        optCO.checked = true;\r\n      }\r\n    }\r\n\r\n    // Imposto sempre AllefatoListJSON\r\n    this.allegatoListSet();\r\n\r\n    // Evento allegato selezionato\r\n    const objEvent = { allegato: nome, value };\r\n    window.dispatchEvent(new CustomEvent('allegatiChange', { detail: { obj: objEvent } }));\r\n  }\r\n\r\n  allegatoCheckBoxChange(nome: string, value: string) {\r\n    if (nome === 'Allegato2' && this.coobbligatiAziendaList.length > 0) {\r\n\r\n      const allegatiList = JSON.parse(this.AllegatoListJSON) as string[];\r\n      const nessunAllegatoCoobInModifica = (this.Record_ID && allegatiList.filter(x => x === 'CO' || x === 'CQ' || x === 'CQS').length <= 0);\r\n\r\n      const optionList = this.allegato_edit.filter(a => a.nome === nome)[0].option_list;\r\n\r\n      const optCO = optionList.filter(a => a.AllegatoModelloID === 'CO')[0];\r\n      const optCQS = optionList.filter(a => a.AllegatoModelloID === 'CQS')[0];\r\n      const optCQ = optionList.filter(a => a.AllegatoModelloID === 'CQ')[0];\r\n\r\n      // Se CQS selezionato => CQ deve essere deselezionato!\r\n      // if (value === 'CQS') {\r\n      //   optCQ.checked = false;\r\n      // }\r\n      //\r\n      // // Se CQ selezionato => CQS deve essere deselezionato!\r\n      // if (value === 'CQ') {\r\n      //   optCQS.checked = false;\r\n      // }\r\n\r\n      // Se tutti attivi di base disattivo CO sennò CQ\r\n      // if (value !== 'CO' && optCO.checked && optCQS.checked && optCQ.checked) {\r\n      //   optCO.checked = false;\r\n      // } else if (value === 'CO' && optCO.checked && optCQS.checked && optCQ.checked) {\r\n      //   optCQ.checked = false;\r\n      // }\r\n\r\n      // Se Utente (allegatoReady) toglie il Check da CQ/CQS e non è DIREZIONE => Setto CO come default obbligatorio!\r\n      if (this.allegatiReady && !optCQ.checked && !optCQS.checked && parseInt(this.ID_TipoUtente, 10) <= 1) {\r\n        optCO.checked = true;\r\n      }\r\n\r\n      // Popolo campi model\r\n      this[nome] = optCO.checked ? 'CO' : '';\r\n\r\n      // Aggiorno elenco\r\n      this.allegatoListSet();\r\n      // Init Coobbligazione\r\n      this.coobbligazioneInit(nessunAllegatoCoobInModifica);\r\n      // Se dati incompleti apro modale in automatico\r\n      if (this.allegatiReady && this.coobbligatiIncompleti()) {\r\n        this.modalCoobbligati();\r\n      }\r\n    }\r\n  }\r\n\r\n  allegatoCheckBoxDisabled(nome: string, value: string) {\r\n    if (this.ReadOnly) {\r\n      return true; // Sempre DISABLED quando readonly\r\n    }\r\n    if (nome === 'Allegato2') {\r\n      if (value === 'CO') {\r\n        if (this.AllegatoListJSON.indexOf('CO') > -1) {\r\n          // Se Polizza & Cliente/Agenzia & Solo CO => Checkbox CO disabled (e dovrebbe essere attiva)\r\n          return ((parseInt(this.TipoRecord, 10) === 0 || parseInt(this.TipoRecord, 10) === 2) && (parseInt(this.ID_TipoUtente, 10) === 0 || parseInt(this.ID_TipoUtente, 10) === 1)\r\n            && (this.AllegatoListJSON.indexOf('CQ') === -1 && this.AllegatoListJSON.indexOf('CQS') === -1));\r\n        }\r\n      } else {\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n\r\n  allegatoGetOptions(nome: string): any[] {\r\n    if (this.allegato_edit.filter(x => x.nome === nome).length > 0) {\r\n      return this.allegato_edit.filter(x => x.nome === nome)[0].option_list;\r\n    } else {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  allegatoVisible(nome: string): boolean {\r\n    // Lascio Visibilità se Modalità 'Selezione Utente' o Campo Valorizzato\r\n    const allegatoMod = this.allegato_schema_list.filter(conf => conf.ColonnaSalvataggioInRichiesta === nome)[0];\r\n    if (allegatoMod.ModalitaSelezione === 0 || this.allegatoHasValue(nome)) {\r\n      if (this.ReadOnly) {\r\n        return this.allegatoHasValue(nome); // In ReadOnly mostro solo se Allegato valorizzato\r\n      } else {\r\n        return this.allegato_edit.filter(x => x.nome === nome).length > 0\r\n          && this.allegato_edit.filter(x => x.nome === nome)[0].option_list.length > 0\r\n          && this.allegato_edit.filter(x => x.nome === nome)[0].OpzioneVisibile; // Nella configurazione deve essere anche impostato come Visibile\r\n      }\r\n    } else if (allegatoMod.ModalitaSelezione === 2) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  allegatoFixed(nome: string): boolean {\r\n    return this.allegato_edit.filter(x => x.nome === nome).length > 0 && this.allegato_edit.filter(x => x.nome === nome)[0].fixed;\r\n  }\r\n\r\n  allegatoSelected(nome: string, value: string): boolean {\r\n    return this.allegato_edit.filter(x => x.nome === nome).length > 0 && this.allegato_edit.filter(x => x.nome === nome)[0].selected === value;\r\n  }\r\n\r\n  allegatoDisabled(nome: string): boolean {\r\n    return this.allegato_edit.filter(x => x.nome === nome).length > 0 && this.allegato_edit.filter(x => x.nome === nome)[0].OpzioneDisabilitata;\r\n  }\r\n\r\n  allegatoCodiceGet(allegatoModello: string): string {\r\n    if (allegatoModello === 'C3') {\r\n      return 'C1';\r\n    } else if (allegatoModello === 'C4') {\r\n      return 'C2';\r\n    }\r\n    return allegatoModello;\r\n  }\r\n\r\n  allegatoDescriptionGet(allegatoModello: string): string {\r\n    if (allegatoModello && this.allegato_schema_list.length > 0 && this.allegato_schema_list.filter(x => x.AllegatoModelloID === allegatoModello).length > 0) {\r\n      return this.allegato_schema_list.filter(x => x.AllegatoModelloID === allegatoModello)[0].AllegatoModelloDescrizione;\r\n    }\r\n    return 'N.D.';\r\n  }\r\n\r\n  allegatoFixedDescrtionGet(nome: string): string {\r\n    if (this.allegatoFixed(nome) && this.allegatoHasValue(nome)) {\r\n      const a = this.allegato_edit.filter(x => x.nome === nome)[0].option_list.filter(o => o.AllegatoModelloID === this[nome])[0];\r\n      return a.AllegatoModelloID + ' - ' + a.AllegatoModelloDescrizione;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  allegatiListDescr(nome: string): string {\r\n    const a = this.allegato_edit.filter(x => x.nome === nome)[0];\r\n    return a.option_list.map(x => this.allegatoCodiceGet(x.AllegatoModelloID)).join(',');\r\n  }\r\n\r\n  allegatoDefaultEnable(nome: string): boolean {\r\n    return this.allegato_edit.filter(x => x.nome === nome).length > 0 && this.allegato_edit.filter(x => x.nome === nome)[0].def_enable;\r\n  }\r\n\r\n  allegatoHasValue(nome: string): boolean {\r\n    return this[nome] !== undefined && this[nome] !== null && this[nome] !== '';\r\n  }\r\n\r\n  allegatiSelectedCount(): number {\r\n    return this.allegato_edit.filter(x => x.selected).length;\r\n  }\r\n\r\n  allegatoListSet() {\r\n    let list = this.allegato_edit.filter(a => a.selected).map(a => a.selected);\r\n\r\n    // Gestione Particolare Coobbligati (Allegato2)\r\n    if (this.allegato_edit.filter(a => a.nome === 'Allegato2').length > 0 && this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list.length > 0) {\r\n      // Rimuovo CO\r\n      list = list.filter(o => o !== 'CO');\r\n      // Ripopolo con Checkbox\r\n      const optionList = this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list.filter(o => o.checked).map(o => o.AllegatoModelloID);\r\n      optionList.forEach(o => {\r\n        if (list.indexOf(o) < 0) {\r\n          list.push(o);\r\n        }\r\n      });\r\n    }\r\n\r\n    this.AllegatoListJSON = JSON.stringify(list);\r\n  }\r\n\r\n  // Utility\r\n\r\n  allegatoIsSelected(allegatoModello: string): boolean {\r\n    return this.allegato_edit.filter(a => a.selected && a.nome === allegatoModello).length > 0;\r\n  }\r\n\r\n  // Coobligazione\r\n\r\n  coobbligazioneInit(aggiuntoAllegatoCoobbInModifica: boolean) {\r\n    if (this.ReadOnly || !this.allegatiReady) {\r\n      return;\r\n    }\r\n\r\n    if (this.Allegato2 || this.AllegatoListJSON.indexOf('CO') !== -1 || this.AllegatoListJSON.indexOf('CQ') !== -1 || this.AllegatoListJSON.indexOf('CQS') !== -1) {\r\n      // Se acnora non è stata inizializzata\r\n      if (this.obbligatiJSON === '') {\r\n        // Nuova Richiesta (Oppure caso evento Selezione Allegato Coob in Richiesta senza allegati Coob)\r\n        if (!this.Record_ID || (this.Record_ID && aggiuntoAllegatoCoobbInModifica)) {\r\n          this.coobbligazioneSetup();\r\n        }\r\n        // Modifica Richiesta\r\n        if (this.Record_ID) {\r\n          // Evito che siano triggerate più volte le chiamate\r\n          this.coobbligatiListEditGetObservable.subscribe({\r\n            complete: () => {\r\n            },\r\n            error: err => {\r\n              console.log('Errore \"coobbligatiListEditGetObservable\" => ' + err.toString());\r\n            }\r\n          });\r\n        }\r\n      } else if (this.obbligatiJSON !== '') {\r\n        // Ho l'elenco dei coobbligati già attivo => Controllo coerenza dati\r\n        const obbligati = JSON.parse(this.obbligatiJSON) as AziendaCoobbligato[];\r\n\r\n        const allegatoList = JSON.parse(this.AllegatoListJSON);\r\n\r\n        const coPresente = (allegatoList.indexOf('CO') !== -1);\r\n        const cqPresente = (allegatoList.indexOf('CQ') !== -1);\r\n        const cqsPresente = (allegatoList.indexOf('CQS') !== -1);\r\n\r\n        // Se non ho CQ => Limite non seve, sbianco\r\n        if (!cqPresente) {\r\n          obbligati.forEach(x => {\r\n            x.Limite = null;\r\n          });\r\n        }\r\n\r\n        // Se non ho CQ ne CQS => Limite e Quota non serve, sbianco (HO SOLO CO)\r\n        if (coPresente && !cqPresente && !cqsPresente) {\r\n          obbligati.forEach(x => {\r\n            x.Quota = null;\r\n            x.Limite = null;\r\n            x.AllegatoList = ['CO'];\r\n          });\r\n        }\r\n\r\n        // Se ho un solo Allegato di Coobbligazione, tutti devono avere selezionato solo quello\r\n        let count = 0;\r\n        let allegatoSolo = '';\r\n        if (coPresente) {count++; allegatoSolo = 'CO'; }\r\n        if (cqPresente) {count++; allegatoSolo = 'CQ'; }\r\n        if (cqsPresente) {count++; allegatoSolo = 'CQS'; }\r\n\r\n        if (count === 1) {\r\n          obbligati.forEach(x => {\r\n            x.AllegatoList = [allegatoSolo];\r\n          });\r\n        }\r\n\r\n        // Salvo eventuali modifiche\r\n        this.obbligatiJSON = JSON.stringify(obbligati);\r\n\r\n      }\r\n    }\r\n    else {\r\n     this.obbligatiJSON = '';\r\n    }\r\n  }\r\n\r\n  coobbligazioneSetup(editCoobbligati: boolean = false) {\r\n\r\n    if (this.coobbligatiAziendaList.length <= 0) {\r\n      this.coobbligatiDisable();\r\n    } else {\r\n      // Inizializzo Allegato List x ogni coobbligato se in NEW\r\n      if (!editCoobbligati && !this.Record_ID && this.allegato_schema_list.filter(x => x.AllegatoModelloID === 'CO').length > 0) {\r\n        this.coobbligatiAziendaList.map(x => x.AllegatoList = ['CO']);\r\n      }\r\n\r\n      // Imposto l'elenco dei coobbligati\r\n      this.obbligatiJSON = JSON.stringify(this.coobbligatiAziendaList);\r\n\r\n      // Cliente/Agenzia deve avere i coobbligati chechati\r\n      if (parseInt(this.ID_TipoUtente, 10) < 2) {\r\n        const soloChecked = this.coobbligatiAziendaList.filter(c => c.IsChecked);\r\n        if (soloChecked.length > 0) {\r\n          this.obbligatiJSON = JSON.stringify(soloChecked);\r\n        } else {\r\n          this.coobbligatiDisable(); // Se non ho coobbligati abilitati dalla direzione allora non posso avere i coobbligati\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // Definisce se i dati dei Coobbligati sono correttamente inseriti\r\n  coobbligatiIncompleti(): boolean {\r\n    // Se CO,CQS o CQ\r\n    if (this.Allegato2 || this.AllegatoListJSON.indexOf('CQ') !== -1 || this.AllegatoListJSON.indexOf('CQS') !== -1) {\r\n      // Se JSON inizializzato\r\n      if (this.obbligatiJSON) {\r\n\r\n        const msgErrors = AziendaCoobbligatoUtils.check(JSON.parse(this.obbligatiJSON), this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list.filter(o => o.checked).map(x => x.AllegatoModelloID));\r\n\r\n        if (msgErrors.length <= 0) {\r\n          return false;\r\n        } else {\r\n          return true;\r\n        }\r\n\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  coobbligatiWarining(): string {\r\n    // Se CO,CQS o CQ\r\n    if (this.Allegato2 || this.AllegatoListJSON.indexOf('CQ') !== -1 || this.AllegatoListJSON.indexOf('CQS') !== -1) {\r\n      // Se JSON inizializzato\r\n      if (this.obbligatiJSON) {\r\n\r\n        const msgWarns = AziendaCoobbligatoUtils.warningCheck(JSON.parse(this.obbligatiJSON), this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list.filter(o => o.checked).map(x => x.AllegatoModelloID));\r\n\r\n        if (msgWarns.length <= 0) {\r\n          return '';\r\n        } else {\r\n          return msgWarns.join(' \\n');\r\n        }\r\n\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n  // Get numero coobbligati\r\n  coobbligatiNrGet(): number {\r\n    if (this.obbligatiJSON) {\r\n      return JSON.parse(this.obbligatiJSON).length;\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  // Disabilita i Coobbligati nel caso non ci siamo\r\n  coobbligatiDisable() {\r\n    this.obbligatiJSON = '';\r\n    this.Allegato2 = '';\r\n    this.allegato_schema_list = this.allegato_schema_list.filter(a => a.ColonnaSalvataggioInRichiesta !== 'Allegato2');\r\n    this.allegato_edit = this.allegato_edit.filter(a => a.nome !== 'Allegato2');\r\n    this.allegatoListSet();\r\n  }\r\n\r\n  // Modali\r\n\r\n  modalTesto(colonna: string, allegatoModelloID: string) {\r\n    const modal = this._modal.open(WebcauAllegatiModalTestoComponent, { size: 'lg' });\r\n    modal.componentInstance.richiestaID = this.Record_ID;\r\n    modal.componentInstance.allegatoModelloID = allegatoModelloID;\r\n    modal.componentInstance.testoAllegato = allegatoModelloID === 'GE' ? this.TestoAllegato : this.TestoAllegatoAQ;\r\n    modal.componentInstance.mode = (this.ReadOnly ? 'read' : 'edit');\r\n\r\n    modal.result.then((result: any) => {\r\n      if (result) {\r\n\r\n        if (allegatoModelloID === 'GE') {\r\n          this.TestoAllegato = result;\r\n        } else if (allegatoModelloID === 'AQ') {\r\n          this.TestoAllegatoAQ = result;\r\n        }\r\n        // Allineo sempre \"allegato_edit\" => AllegatiList\r\n        const ae = this.allegato_edit.filter(x => x.nome === colonna);\r\n        if (ae.length > 0) {\r\n          this.AzioneID = 1; // Insert/Update\r\n          this.allegato_edit.filter(x => x.nome === colonna)[0].TestoAllegato = result;\r\n        }\r\n      }\r\n    }, (reason: any) => {\r\n    });\r\n  }\r\n\r\n  modalCoobbligati() {\r\n    const modal = this._modal.open(WebcauAllegatiModalCoobbligatiComponent, { size: 'xl', windowClass: 'coobbligatiModalClass' });\r\n    modal.componentInstance.debugLocal = this.debugLocal;\r\n    modal.componentInstance.tipoUtente = parseInt(this.ID_TipoUtente, 10);\r\n    modal.componentInstance.tipoRecord = this.TipoRecord;\r\n    modal.componentInstance.recordId = this.Record_ID;\r\n    modal.componentInstance.modelloId = this.ID_Modello;\r\n    modal.componentInstance.aziendaId = this.ID_Azienda;\r\n    modal.componentInstance.allegatiSelectedList = this.allegato_edit.filter(a => a.nome === 'Allegato2')[0].option_list.filter(o => o.checked).map(o => o.AllegatoModelloID);\r\n    modal.componentInstance.mode = (this.ReadOnly ? 'read' : 'edit');\r\n    modal.componentInstance.coobbligatiList = JSON.parse(this.obbligatiJSON);\r\n\r\n    modal.result.then((result: any) => {\r\n      if (result) {\r\n        // Modifica Effettuata ad un Coobbligaro\r\n        this.obbligatiJSON = JSON.stringify(result);\r\n        this.coobbligazioneInit(false);\r\n      }\r\n    }, (reason: any) => {\r\n    });\r\n  }\r\n\r\n  modalAllegatoC() {\r\n    const jsonGet = (document.getElementById('AllegatoC_JSON') as HTMLInputElement);\r\n    const modal = this._modal.open(WebcauAllegatiModalAllegatoCComponent, { size: 'lg' });\r\n\r\n    if (jsonGet && jsonGet.value) {\r\n      const data = JSON.parse(jsonGet.value);\r\n      modal.componentInstance.metodo_pagamento = data.metodo_pagamento;\r\n      modal.componentInstance.data_pagamento = data.data_pagamento;\r\n      modal.componentInstance.conto_destinatario = data.conto_destinatario;\r\n\r\n      modal.componentInstance.assicurato_sezione_a = data.assicurato_sezione_a;\r\n      modal.componentInstance.assicurato_sezione_b = data.assicurato_sezione_b;\r\n    } else {\r\n      modal.componentInstance.assicurato_sezione_a = 'il Beneficiario';\r\n      modal.componentInstance.assicurato_sezione_b = 'il Costruttore';\r\n    }\r\n\r\n    modal.componentInstance.mode = (this.ReadOnly ? 'read' : 'edit');\r\n\r\n    modal.result.then((result: any) => {\r\n\r\n      const jsonSave = (document.getElementById('AllegatoC_JSON') as HTMLInputElement);\r\n      if (result && jsonSave) {\r\n        jsonSave.value = JSON.stringify(result);\r\n      }\r\n    }, (reason: any) => {\r\n    });\r\n  }\r\n}\r\n","import {Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport {AziendaCoobbligato} from './webcau-allegati/interfaces/azienda-coobbligato';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-coobbligati',\r\n  template: `\r\n    <input type=\"hidden\" name=\"numeroCoobbligati\" id=\"numeroCoobbligati\" value=\"{{this.coobbligatiList.length}}\"/>\r\n    <input type=\"hidden\" name=\"coobbligatiDatiIncompleti\" id=\"coobbligatiDatiIncompleti\" [(ngModel)]=\"coobbligatiDatiIncompleti\"/>\r\n\r\n    <div class=\"grid_row\" *ngIf=\"mode === 'perf' && coobbligatiList.length > 0\">\r\n      <h2 class=\"webcau_subtitle\">CONFERMA COOBBLIGATI FIRMATARI</h2>\r\n    </div>\r\n\r\n    <div id=\"CoobbligatiDiv\" *ngIf=\"coobbligatiReady\" [hidden]=\"mode === 'perf' && coobbligatiList.length <= 0\">\r\n\r\n      <div id=\"CorpoCoobbligati\">\r\n\r\n        <!-- lista coobbligati -->\r\n        <table id=\"CoobbligatiTable\" [ngClass]=\"showLegenda === false ? 'tblDatiAziendaCons' : 'tblDatiAzienda'\">\r\n          <tr class=\"tblRowHeader\">\r\n            <th style=\"min-width: 125px;\" *ngIf=\"showAzioni\">Azioni</th>\r\n            <th *ngIf=\"showPIva\">P.IVA</th>\r\n            <th *ngIf=\"showCF\">C.F.</th>\r\n            <th *ngIf=\"showRagSoc\">Ragione Sociale</th>\r\n            <th *ngIf=\"showIndirizzo\">Indirizzo</th>\r\n            <th *ngIf=\"showCAP\">CAP</th>\r\n            <th *ngIf=\"showComune\">Comune</th>\r\n            <th *ngIf=\"showTipoDoc\">Tipo Documento Riconoscimento</th>\r\n            <th *ngIf=\"showNumeroDoc\">Numero Documento Riconoscimento</th>\r\n            <th *ngIf=\"showEnteDoc\">Ente Rilascio Documento</th>\r\n            <th *ngIf=\"showDataDoc\">Data Rilascio Documento</th>\r\n            <th *ngIf=\"showFDP\">Firma Digitale</th>\r\n            <th *ngIf=\"showQuota\">Quota %</th>\r\n            <th *ngIf=\"showLimite\">Limite €</th>\r\n            <th *ngIf=\"showAllegato\">Allegato</th>\r\n          </tr>\r\n          <tbody>\r\n          <tr *ngFor=\"let c of coobbligatiList\" [ngClass]=\"getClassStyle(c)\" [hidden]=\"!c.IsChecked\">\r\n            <td align=\"center\" *ngIf=\"showAzioni\">\r\n              <button type=\"button\" class=\"button-corner-all\" *ngIf=\"!c.DocumentoDatiIncompleti\" (click)=\"modificaCoobbligato(c)\">Modifica</button>\r\n              <button type=\"button\" class=\"button-corner-all\" style=\"color: red; font-weight: bold;\" *ngIf=\"c.DocumentoDatiIncompleti\" (click)=\"modificaCoobbligato(c)\">Modifica</button>\r\n            </td>\r\n            <td align=\"center\" *ngIf=\"showPIva\">{{c.AZ_PIVA ? c.AZ_PIVA : 'N.D.'}}</td>\r\n            <td align=\"center\" *ngIf=\"showCF\">{{c.AZ_CodFisc}}</td>\r\n            <td align=\"center\" *ngIf=\"showRagSoc\">{{c.AZ_RagSoc}}</td>\r\n            <td align=\"center\" *ngIf=\"showIndirizzo\">{{c.AZ_Indirizzo}}</td>\r\n            <td align=\"center\" *ngIf=\"showCAP\">{{c.AZ_CAP}}</td>\r\n            <td align=\"center\" *ngIf=\"showComune\">{{c.AZ_Comune}}</td>\r\n            <td align=\"center\" *ngIf=\"showTipoDoc\">{{c.AziendaDocumentoTipo}}</td>\r\n            <td align=\"center\" *ngIf=\"showNumeroDoc\">{{c.AziendaDocumentoNumero}}</td>\r\n            <td align=\"center\" *ngIf=\"showEnteDoc\">{{c.AziendaDocumentoEnteRilascio}}</td>\r\n            <td align=\"center\" *ngIf=\"showDataDoc\">{{c.AziendaDocumentoDataRilascio | date: 'dd/MM/yyyy' }}</td>\r\n            <td align=\"center\" *ngIf=\"showFDP\">{{c.FirmaDigitalePresente ? 'Presente' : 'Non Presente'}}</td>\r\n            <td align=\"center\" *ngIf=\"showQuota\">{{ c.Quota ? c.Quota : 'N.D.' }}</td>\r\n            <td  align=\"center\" *ngIf=\"showLimite\">{{ c.Limite ? c.Limite : 'N.D.' }}</td>\r\n            <td align=\"center\" style=\"text-align: start;\" *ngIf=\"showAllegato\">{{ c.AllegatoList.toString() }}</td>\r\n          </tr>\r\n          </tbody>\r\n        </table>\r\n\r\n        <div style=\"margin: 0px 20px 0px 20px;\" *ngIf=\"showLegenda\">\r\n          <i>Legenda:</i>\r\n          <img src=\"/images/icons/16x16/led_red.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp; Azienda Respinta\r\n          (rosso) &nbsp;\r\n          <img src=\"/images/icons/16x16/led_blue.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp;\r\n          Coobbligato da Approvare (blu) &nbsp;\r\n          <img src=\"/images/icons/16x16/led_green.gif\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>&nbsp; Respinta e da\r\n          Approvare (verde) &nbsp;\r\n          <img src=\"\" width=\"15\" height=\"4\" border=\"0\" align=\"absmiddle\"/>\r\n          Dati Incompleti (<span class=\"datiIncompleti\">evidenziato</span>)\r\n        </div>\r\n\r\n        <div class=\"modal-coob\" *ngIf=\"coobbligatoEdit\">\r\n          <div class=\"modal-coob-content\">\r\n            <iframe #iframe title=\"Modifica Coobbligato\" *ngIf=\"coobbligatoEdit\" [src]=\"modificaCoobbligatoURL()\" style=\"width: 1250px; height: 350px;\">\r\n            </iframe>\r\n          </div>\r\n        </div>\r\n\r\n      </div>\r\n    </div>\r\n\r\n  `,\r\n  styles: [`\r\n    .tblDatiAzienda {\r\n      width: auto !important;\r\n      margin: 10px 20px 10px 20px !important;\r\n    }\r\n\r\n    .tblDatiAzienda tr {\r\n      height: 28px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda th {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda td {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAzienda .thCaption {\r\n      width: 20%;\r\n    }\r\n\r\n    .tblDatiAzienda .tblRowHeader {\r\n      background-color: #FFB517;\r\n    }\r\n\r\n    .tblDatiAzienda .tblRow {\r\n      background: #F2F2F2;\r\n      text-align: left;\r\n      vertical-align: middle;\r\n      font-family: Verdana;\r\n      font-size: 10pt;\r\n      color: #333333;\r\n    }\r\n\r\n    .tblDatiAzienda .tdFormBground {\r\n      width: 80%;\r\n    }\r\n\r\n    .tblDatiAzienda td.pushbutton {\r\n      width: 50%;\r\n      text-align: center;\r\n    }\r\n\r\n     tblDatiAziendaCons {\r\n       width: auto !important;\r\n       margin: 0px !important;\r\n       background-color: #fafafa !important;\r\n     }\r\n\r\n    .tblDatiAziendaCons tr {\r\n      height: 28px;\r\n      padding: 1px;\r\n    }\r\n\r\n    .tblDatiAziendaCons th {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 5px;\r\n    }\r\n\r\n    .tblDatiAziendaCons td {\r\n      border-bottom: solid;\r\n      border-bottom-color: #FFB517;\r\n      border-bottom-width: 1px;\r\n      border-left: solid;\r\n      border-left-color: white;\r\n      border-left-width: 1px;\r\n      padding: 1px;\r\n    }\r\n\r\n    .tblDatiAziendaCons .thCaption {\r\n      width: 20%;\r\n    }\r\n\r\n    .tblDatiAziendaCons .tblRowHeader {\r\n      background-color: #FFB517;\r\n    }\r\n\r\n    .tblDatiAziendaCons .tblRow {\r\n      background: #F2F2F2;\r\n      text-align: left;\r\n      vertical-align: middle;\r\n      font-family: Verdana;\r\n      font-size: 10pt;\r\n      color: #333333;\r\n    }\r\n\r\n    .tblDatiAziendaCons .tdFormBground {\r\n      width: 80%;\r\n    }\r\n\r\n    .tblDatiAziendaCons td.pushbutton {\r\n      width: 50%;\r\n      text-align: center;\r\n    }\r\n\r\n    .c-da-approvare {\r\n      color:#072bf6 !important;\r\n    }\r\n\r\n    .c-azienda-respinta {\r\n      color:#fa0404 !important;\r\n    }\r\n\r\n    .c-both {\r\n      color:green !important;\r\n    }\r\n\r\n    .c-seleziona {\r\n      border: solid;\r\n      border-color: #FFB517;\r\n      border-width: 1px;\r\n      width: 180px;\r\n    }\r\n\r\n    .datiIncompleti {\r\n      background-color: yellow;\r\n    }\r\n\r\n\r\n\r\n\r\n    /* The Modal (background) */\r\n    .modal-coob {\r\n      position: fixed; /* Stay in place */\r\n      z-index: 1; /* Sit on top */\r\n      padding-top: 100px; /* Location of the box */\r\n      left: 0;\r\n      top: 0;\r\n      width: 100%; /* Full width */\r\n      height: 100%; /* Full height */\r\n      overflow: auto; /* Enable scroll if needed */\r\n      background-color: rgb(0,0,0); /* Fallback color */\r\n      background-color: rgba(0,0,0,0.4); /* Black w/ opacity */\r\n    }\r\n\r\n    /* Modal Content */\r\n    .modal-coob-content {\r\n      background-color: #fefefe;\r\n      margin: auto;\r\n      padding: 20px;\r\n      border: 1px solid #888;\r\n      width: 1300px; height: 400px;\r\n    }\r\n\r\n    /* The Close Button */\r\n    .close-coob {\r\n      color: #aaaaaa;\r\n      float: right;\r\n      font-size: 28px;\r\n      font-weight: bold;\r\n    }\r\n\r\n    .close-coob:hover,\r\n    .close-coob:focus {\r\n      color: #000;\r\n      text-decoration: none;\r\n      cursor: pointer;\r\n    }\r\n\r\n  `]\r\n})\r\nexport class WebcauCoobbligatiComponent implements OnInit {\r\n\r\n  constructor(public sanitizer: DomSanitizer) { }\r\n\r\n  // Logica\r\n  @Input() debugLocal: string;\r\n  @Input() mode: string; // perf/cons => Perfezionamento e Consultazione\r\n  @Input() tipoRecord: number;\r\n  @Input() recordId: number;\r\n  @Input() modelloId: string;\r\n  @Input() aziendaId: string;\r\n  @Input() dbfu: string;\r\n\r\n  // Controlli\r\n  @Input() showAzioni: boolean;\r\n  @Input() showPIva: boolean;\r\n  @Input() showCF: boolean;\r\n  @Input() showRagSoc: boolean;\r\n  @Input() showIndirizzo: boolean;\r\n  @Input() showCAP: boolean;\r\n  @Input() showComune: boolean;\r\n  @Input() showTipoDoc: boolean;\r\n  @Input() showNumeroDoc: boolean;\r\n  @Input() showEnteDoc: boolean;\r\n  @Input() showDataDoc: boolean;\r\n  @Input() showFDP: boolean;\r\n  @Input() showQuota: boolean;\r\n  @Input() showLimite: boolean;\r\n  @Input() showAllegato: boolean;\r\n\r\n  @Input() showLegenda: boolean;\r\n\r\n\r\n  @ViewChild('iframe') iframe: ElementRef<HTMLIFrameElement>;\r\n\r\n  coobbligatiList = [] as AziendaCoobbligato[];\r\n  coobbligatiReady = false;\r\n  numeroCoobbligati = 0;\r\n  coobbligatiDatiIncompleti = false;\r\n\r\n  coobbligatoToEdit = null as AziendaCoobbligato;\r\n  coobbligatoEdit = false;\r\n\r\n  ngOnInit(): void {\r\n    this.coobbligatiListEditGet();\r\n\r\n    // Inizializzo visibilità\r\n    if (this.mode === 'cons') { // Consultazione\r\n      this.showAzioni = false;\r\n      this.showPIva = true;\r\n      this.showCF = true;\r\n      this.showRagSoc = true;\r\n      this.showIndirizzo = true;\r\n      this.showCAP = true;\r\n      this.showComune = true;\r\n      this.showTipoDoc = false;\r\n      this.showNumeroDoc = false;\r\n      this.showEnteDoc = false;\r\n      this.showDataDoc = false;\r\n      this.showFDP = true;\r\n      this.showQuota = true;\r\n      this.showLimite = true;\r\n      this.showAllegato = true;\r\n\r\n      this.showLegenda = false;\r\n    } else if (this.mode === 'consApp') { // ConsultazioneApp\r\n      this.showAzioni = false;\r\n      this.showPIva = false;\r\n      this.showCF = true;\r\n      this.showRagSoc = true;\r\n      this.showIndirizzo = false;\r\n      this.showCAP = false;\r\n      this.showComune = false;\r\n      this.showTipoDoc = false;\r\n      this.showNumeroDoc = false;\r\n      this.showEnteDoc = false;\r\n      this.showDataDoc = false;\r\n      this.showFDP = false;\r\n      this.showQuota = true;\r\n      this.showLimite = true;\r\n      this.showAllegato = true;\r\n\r\n      this.showLegenda = false;\r\n    } else if (this.mode === 'perf') { // Perfezionamento Polizza/Appendice\r\n      this.showAzioni = true;\r\n      this.showPIva = false;\r\n      this.showCF = true;\r\n      this.showRagSoc = true;\r\n      this.showIndirizzo = false;\r\n      this.showCAP = false;\r\n      this.showComune = false;\r\n      this.showTipoDoc = true;\r\n      this.showNumeroDoc = true;\r\n      this.showEnteDoc = true;\r\n      this.showDataDoc = true;\r\n      this.showFDP = false;\r\n      this.showQuota = false;\r\n      this.showLimite = false;\r\n      this.showAllegato = false;\r\n\r\n      this.showLegenda = true;\r\n    } else {\r\n      // Tramite @Input\r\n    }\r\n  }\r\n\r\n  getClassStyle(c: AziendaCoobbligato): string {\r\n    let classes = '';\r\n\r\n    // Consultazione => no info su stato coobbligati\r\n    if (!this.showLegenda) {\r\n      return '';\r\n    }\r\n\r\n    if (c.Approvato === false) {\r\n      if (c.CodAffidamento === 7) {\r\n        classes = 'c-both tblRow';\r\n      }\r\n      classes = 'c-da-approvare tblRow';\r\n    } else if (c.CodAffidamento === 7) {\r\n      classes = 'c-azienda-respinta tblRow';\r\n    } else {\r\n      classes = 'tblRow';\r\n    }\r\n\r\n    if (c.DocumentoDatiIncompleti) {\r\n      classes = ' datiIncompleti';\r\n    }\r\n\r\n    return classes;\r\n  }\r\n\r\n  modificaCoobbligato(c: AziendaCoobbligato) {\r\n    this.coobbligatoToEdit = c;\r\n    this.coobbligatoEdit = true;\r\n\r\n    // Listener Modifica effettuata\r\n    setTimeout(() => {\r\n      window.addEventListener('coobbligatoEdit', (e: CustomEvent) => {\r\n        this.coobbligatoEdit = false;\r\n        this.coobbligatoToEdit = null;\r\n\r\n        if (e.detail.obj.ModificaEffettuata === true) {\r\n          this.coobbligatiListEditGet();\r\n        }\r\n      }, { passive: false });\r\n\r\n    }, 1000);\r\n\r\n  }\r\n\r\n  modificaCoobbligatoURL() {\r\n    if (!this.coobbligatoToEdit) {\r\n      return '';\r\n    }\r\n\r\n    const recordString = '&tipo_record=' + this.tipoRecord + '&record_id=' + this.recordId;\r\n\r\n    let coobbligatoEditURL = '';\r\n    if (this.debugLocal) {\r\n      coobbligatoEditURL = `http://elba.local/Cauzioni/Common/Coobbligato/CoobbligatoModifica.asp?coobbligatoId=${this.coobbligatoToEdit.ID_Azienda}&coobbligato_nome=${this.coobbligatoToEdit.AZ_RagSoc}&show_menu=false&richiesta=true` + recordString;\r\n    } else {\r\n      coobbligatoEditURL =  window.location.origin +  `/Cauzioni/Common/Coobbligato/CoobbligatoModifica.asp?coobbligatoId=${this.coobbligatoToEdit.ID_Azienda}&coobbligato_nome=${this.coobbligatoToEdit.AZ_RagSoc}&show_menu=false&richiesta=true` + recordString;\r\n    }\r\n    return this.sanitizer.bypassSecurityTrustResourceUrl(coobbligatoEditURL);\r\n  }\r\n\r\n  replaceAll(str, find, replace) {\r\n    return str.replace(new RegExp(this.escapeRegExp(find), 'g'), replace);\r\n  }\r\n\r\n  escapeRegExp(str: string) {\r\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\r\n  }\r\n\r\n  // Chiamata Edit Richiesta => Passa la lista a coobbligazioneSetup(data)\r\n  coobbligatiListEditGet() {\r\n    this.coobbligatiDatiIncompleti = false; // Inizialmente do per buono l'elenco\r\n\r\n    // Consulta\r\n    let uri = `/WebRest/app/AppAziendaService.svc/coobbligati_get_by_titolo`;\r\n\r\n    // Perfezionamento\r\n    if (this.mode === 'perf') {\r\n      uri = `/WebRest/app/AppAziendaService.svc/coobbligati_get_by_azienda_rp`;\r\n    }\r\n\r\n    // DBFU\r\n    if (this.dbfu === 'true') {\r\n      uri = `/WebRest/app/AppAziendaService.svc/dbfu_coobbligati_get_by_titolo`;\r\n    }\r\n\r\n    const obj = {\r\n      ID_Titolo: this.recordId,\r\n      Tipo_Record: this.tipoRecord,\r\n      ID_Azienda: this.aziendaId\r\n    };\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(obj)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: AziendaCoobbligato[]) => {\r\n        if (data) {\r\n          this.coobbligatiList = [...data];\r\n          this.coobbligatiList.forEach(x => {\r\n            if (x.DocumentoDatiIncompleti === true) {\r\n              this.coobbligatiDatiIncompleti = true; // Imposto INPUT HIDDEN per definire all'esterno che i coobbligati non cono completi\r\n            }\r\n          });\r\n        }\r\n        this.coobbligatiReady = true;\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n        if (this.debugLocal) {\r\n          this.coobbligatiList = JSON.parse('[{\"AZ_CAP\":\"50041\",\"AZ_CodFisc\":\"MLSNRE77M12D612I\",\"AZ_Comune\":\"CALENZANO\",\"AZ_Indirizzo\":\"pincopallo\",\"AZ_PIVA\":\"\",\"AZ_Prov\":\"FI\",\"AZ_RagSoc\":\"malesci neri\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2020-01-10T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"Comune di SCANDICCI\",\"AziendaDocumentoNumero\":\"AA54321XB\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":0,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11601,\"IsChecked\":true,\"Limite\":null,\"Quota\":25.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"83030\",\"AZ_CodFisc\":\"02677500643\",\"AZ_Comune\":\"MANOCALZATI\",\"AZ_Indirizzo\":\"VIA TOPPOLI 1\",\"AZ_PIVA\":\"02677500643\",\"AZ_Prov\":\"AV\",\"AZ_RagSoc\":\"ENERGYTOP SRL\",\"AllegatoList\":[\"CQS\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2020-01-10T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"Comune di Sesto Fiorentino\",\"AziendaDocumentoNumero\":\"AA123456789\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":7,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":false,\"ID_Azienda\":11788,\"IsChecked\":true,\"Limite\":null,\"Quota\":25.000,\"STATUS\":\"A\"},{\"AZ_CAP\":\"50122\",\"AZ_CodFisc\":\"01307110484\",\"AZ_Comune\":\"FIRENZE\",\"AZ_Indirizzo\":\"PALAZZO VECCHIO, PIAZZA DELLA SIGNORIA\",\"AZ_PIVA\":\"01307110484\",\"AZ_Prov\":\"FI\",\"AZ_RagSoc\":\"Comune di Firenze\",\"AllegatoList\":[\"CQ\"],\"Approvato\":true,\"AziendaDocumentoDataRilascio\":\"2020-01-10T00:00:00+01:00\",\"AziendaDocumentoEnteRilascio\":\"Comune di Sesto Fiorentino\",\"AziendaDocumentoNumero\":\"AA99999XB\",\"AziendaDocumentoTipo\":\"Carta d\\'Identità\",\"AziendaDocumentoTipoID\":1,\"CodAffidamento\":0,\"DocumentoDatiIncompleti\":false,\"FirmaDigitalePresente\":true,\"ID_Azienda\":11971,\"IsChecked\":true,\"Limite\":50000.00,\"Quota\":25.000,\"STATUS\":\"A\"}]');\r\n        }\r\n        this.coobbligatiReady = true;\r\n      });\r\n  }\r\n\r\n}\r\n","import {Component, Inject, Input, LOCALE_ID, OnInit} from '@angular/core';\r\nimport {SezionePartiteConfig} from './interfaces/sezione-partite-config';\r\nimport {FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn, Validators} from '@angular/forms';\r\nimport {PartitaConfig} from './interfaces/partita-config';\r\nimport {SezionePartite} from './interfaces/sezione-partite';\r\nimport {Partita} from './interfaces/partita';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-partite',\r\n  template: `\r\n    <input type=\"hidden\" name=\"sezioniPartiteJSON\" id=\"sezioniPartiteJSON\" [value]=\"sezioniPartiteJSONGet()\"\r\n           *ngIf=\"!ReadOnly\"/>\r\n    <input type=\"hidden\" name=\"sezioniPartiteValidationJSON\" id=\"sezioniPartiteValidationJSON\"\r\n           [value]=\"sezioniPartiteValidationJSONGet()\" *ngIf=\"!ReadOnly\"/>\r\n\r\n    <div style=\"max-width: 100%;\" *ngIf=\"partiteReady\">\r\n\r\n      <form [formGroup]=\"sezioniPartiteForm\" novalidate>\r\n        <table class=\"grid-layout-partite\">\r\n\r\n          <tbody formArrayName=\"sezioniPartiteFormArray\">\r\n\r\n          <tr *ngFor=\"let sezione of sezioniPartiteFormArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n            <td colspan=\"6\" style=\"vertical-align: top;\" class=\"sottotitolo\">\r\n\r\n              <!-- Titolo Sezione -->\r\n              <h4\r\n                *ngIf=\"getSezioneByFormGroup(sezione).SottoSezionePosizione === 0\">{{getSezioneByFormGroup(sezione).Nome}}</h4>\r\n              <br/>\r\n\r\n              <table class=\"grid-layout-partite\">\r\n                <tbody formArrayName=\"Partite\">\r\n                <!-- Header Campi -->\r\n                <tr>\r\n                  <td colspan=\"2\" style=\"text-align: left; vertical-align: top;\"\r\n                      class=\"sottotitolo\">{{getSezioneByFormGroup(sezione).HeaderNome_Partite}}</td>\r\n                  <td colspan=\"2\" style=\"text-align: center; vertical-align: top;\"\r\n                      class=\"sottotitolo\">{{getSezioneByFormGroup(sezione).HeaderNome_Somma}}</td>\r\n                  <td colspan=\"2\" style=\"text-align: center; vertical-align: top;\"\r\n                      class=\"sottotitolo\">{{getSezioneByFormGroup(sezione).HeaderNome_Scoperto}}</td>\r\n                  <td colspan=\"3\" style=\"text-align: center; vertical-align: top;\"\r\n                      class=\"sottotitolo\">{{getSezioneByFormGroup(sezione).HeaderNome_Limite}}</td>\r\n                </tr>\r\n                <!-- Info Campi -->\r\n                <tr>\r\n                  <td colspan=\"2\" class=\"testo\"\r\n                      style=\"text-align: left; vertical-align: middle; font-weight: bold; text-decoration: underline;\">{{getSezioneByFormGroup(sezione).SottoSezioneNome}}</td>\r\n                  <td colspan=\"2\" class=\"testo\"\r\n                      style=\"text-align: center; vertical-align: middle;\">{{getSezioneByFormGroup(sezione).Partite[0].SommaDescrizione}}</td>\r\n                  <td class=\"testo\"\r\n                      style=\"text-align: center; vertical-align: middle;\">{{getSezioneByFormGroup(sezione).Partite[0].ScopertoDescrizione}}</td>\r\n                  <td class=\"testo\"\r\n                      style=\"text-align: center; vertical-align: middle;\">{{getSezioneByFormGroup(sezione).Partite[0].ScopertoMinimoDescrizione}}</td>\r\n                  <td class=\"testo\"\r\n                      style=\"text-align: center; vertical-align: middle;\">{{getSezioneByFormGroup(sezione).Partite[0].LimiteDescrizione}}</td>\r\n                  <td class=\"testo\"\r\n                      style=\"text-align: center; vertical-align: middle;\">{{getSezioneByFormGroup(sezione).Partite[0].LimiteAltroDescrizione}}</td>\r\n                </tr>\r\n                <!-- Lista Partite -->\r\n                <tr *ngFor=\"let item of sezione.get('Partite')?.controls; let j = index\" [formGroupName]=\"j\"\r\n                    style=\"border-bottom: solid 1px lightgray !important;\">\r\n                  <td colspan=\"2\" style=\"vertical-align: middle;\">\r\n                    <span style=\"font-size: 12px; font-weight: bold; margin-top: 8px; margin-bottom: 12px;\"\r\n                          *ngIf=\"getPartitaByFormGroup(item).NomeTitolo\">{{getPartitaByFormGroup(item).NomeTitolo}}</span>\r\n                    {{getPartitaByFormGroup(item).Nome}}\r\n                  </td>\r\n\r\n                  <td [hidden]=\"getPartitaByFormGroup(item).PartitaOpzionale === false\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\">\r\n                    <span><input type=\"radio\" [value]=\"true\" [attr.disabled]=\"ReadOnly\"\r\n                                 (change)=\"abilitataChanged(item, getPartitaByFormGroup(item))\"\r\n                                 formControlName=\"Abilitata\"> Abilita</span>\r\n                    <span><input type=\"radio\" [value]=\"false\" [attr.disabled]=\"ReadOnly\"\r\n                                 (change)=\"abilitataChanged(item, getPartitaByFormGroup(item))\"\r\n                                 formControlName=\"Abilitata\"> Disabilita</span>\r\n                  </td>\r\n                  <td [hidden]=\"!(getPartitaByFormGroup(item).PartitaOpzionale === false)\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"></td>\r\n\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                        <span *ngIf=\"getPartitaByFormGroup(item).SommaVisible\">\r\n                          <input\r\n                            formControlName=\"Somma\"\r\n                            id=\"{{getPartitaByFormGroup(item).SommaInputName}}\"\r\n                            name=\"{{getPartitaByFormGroup(item).SommaInputName}}\"\r\n                            [readOnly]=\"ReadOnly || getPartitaByFormGroup(item).SommaDisabled\"\r\n                            SinAllowInput\r\n                            [allowNumber]=\"true\"\r\n                            [allowSpecialCharacter]=\"','\"\r\n                            SinThousandSeparator\r\n                            (focusin)=\"sommaFocusIn = item.get('Somma').value\"\r\n                            (change)=\"sommaChanged(item, getPartitaByFormGroup(item))\"\r\n                            SinDifferenceFromDefaultValue\r\n                            [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'Somma')\"\r\n                            class=\"input-filter form-control webcau-yellow-border-1\"\r\n                            [ngClass]=\"getPartitaByFormGroup(item).SommaDisabled ? 'input-disabled' : ''\"\r\n                            style=\"text-align:right; width: 100px;\"\r\n                            tabindex=\"-1\"\r\n                          />\r\n                        </span>\r\n                  </td>\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true || !item.get('Somma').value\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                      <span *ngIf=\"getPartitaByFormGroup(item).ScopertoVisible\">\r\n                        <input\r\n                          formControlName=\"Scoperto\"\r\n                          id=\"{{getPartitaByFormGroup(item).ScopertoInputName}}\"\r\n                          name=\"{{getPartitaByFormGroup(item).ScopertoInputName}}\"\r\n                          [readOnly]=\"ReadOnly || item.get('Somma').value <= 0 || getPartitaByFormGroup(item).ScopertoDisabled\"\r\n                          SinPercentage\r\n                          [noDecimals]=\"true\"\r\n                          [hidePercentage]=\"true\"\r\n                          SinAllowInput\r\n                          [allowNumber]=\"true\"\r\n                          (change)=\"scopertoChanged(item, getPartitaByFormGroup(item))\"\r\n                          SinDifferenceFromDefaultValue\r\n                          [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'Scoperto')\"\r\n                          class=\"input-filter form-control mr-0 pr-0 webcau-yellow-border-1\"\r\n                          [ngClass]=\"item.get('Somma').value <= 0 || getPartitaByFormGroup(item).ScopertoDisabled ? 'input-disabled' : ''\"\r\n                          style=\"width: 35px; text-align:center;\"\r\n                          [tabindex]=\"0\"\r\n                        />\r\n                      </span>\r\n                  </td>\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true || !item.get('Somma').value\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                      <span *ngIf=\"getPartitaByFormGroup(item).ScopertoMinimoVisible\">\r\n                        <input\r\n                          formControlName=\"ScopertoMinimo\"\r\n                          id=\"{{getPartitaByFormGroup(item).ScopertoMinimoInputName}}\"\r\n                          name=\"{{getPartitaByFormGroup(item).ScopertoMinimoInputName}}\"\r\n                          [readOnly]=\"ReadOnly || item.get('Somma').value <= 0 || getPartitaByFormGroup(item).ScopertoMinimoDisabled\"\r\n                          SinAllowInput\r\n                          [allowNumber]=\"true\"\r\n                          [allowSpecialCharacter]=\"','\"\r\n                          SinThousandSeparator\r\n                          (change)=\"scopertoMinimoChanged(item, getPartitaByFormGroup(item))\"\r\n                          SinDifferenceFromDefaultValue\r\n                          [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'ScopertoMinimo')\"\r\n                          class=\"input-filter form-control webcau-yellow-border-1\"\r\n                          [ngClass]=\"item.get('Somma').value <= 0 || getPartitaByFormGroup(item).ScopertoMinimoDisabled ? 'input-disabled' : ''\"\r\n                          style=\"text-align:right; width: 100px;\"\r\n                          tabindex=\"-1\"\r\n                          SinDebounceChange\r\n                        />\r\n                      </span>\r\n                  </td>\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true || !item.get('Somma').value\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                      <span *ngIf=\"getPartitaByFormGroup(item).LimiteVisible\">\r\n                        <input\r\n                          formControlName=\"Limite\"\r\n                          id=\"{{getPartitaByFormGroup(item).LimiteInputName}}\"\r\n                          name=\"{{getPartitaByFormGroup(item).LimiteInputName}}\"\r\n                          [readOnly]=\"ReadOnly || item.get('Somma').value <= 0 || getPartitaByFormGroup(item).LimiteDisabled\"\r\n                          SinPercentage\r\n                          [noDecimals]=\"true\"\r\n                          [hidePercentage]=\"true\"\r\n                          SinAllowInput\r\n                          [allowNumber]=\"true\"\r\n                          (change)=\"limiteChanged(item, getPartitaByFormGroup(item))\"\r\n                          SinDifferenceFromDefaultValue\r\n                          [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'Limite')\"\r\n                          class=\"input-filter form-control mr-0 pr-0 webcau-yellow-border-1\"\r\n                          [ngClass]=\"item.get('Somma').value <= 0 || getPartitaByFormGroup(item).LimiteDisabled ? 'input-disabled' : ''\"\r\n                          style=\"width: 35px; text-align:center;\"\r\n                          [tabindex]=\"0\"\r\n                          required\r\n                        />\r\n                      </span>\r\n                  </td>\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true || !item.get('Somma').value\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                      <span *ngIf=\"getPartitaByFormGroup(item).LimiteImportoVisible\">\r\n                        <input\r\n                          formControlName=\"LimiteImporto\"\r\n                          id=\"{{getPartitaByFormGroup(item).LimiteImportoInputName}}\"\r\n                          name=\"{{getPartitaByFormGroup(item).LimiteImportoInputName}}\"\r\n                          [readOnly]=\"ReadOnly || item.get('Somma').value <= 0 || getPartitaByFormGroup(item).LimiteImportoDisabled\"\r\n                          SinAllowInput\r\n                          [allowNumber]=\"true\"\r\n                          [allowSpecialCharacter]=\"','\"\r\n                          SinThousandSeparator\r\n                          (change)=\"limiteImportoChanged(item, getPartitaByFormGroup(item))\"\r\n                          SinDifferenceFromDefaultValue\r\n                          [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'LimiteImporto')\"\r\n                          class=\"input-filter form-control webcau-yellow-border-1\"\r\n                          [ngClass]=\"item.get('Somma').value <= 0 || getPartitaByFormGroup(item).LimiteImportoDisabled ? 'input-disabled' : ''\"\r\n                          style=\"text-align:right; width: 100px;\"\r\n                          tabindex=\"-1\"\r\n                          SinDebounceChange\r\n                        />\r\n                      </span>\r\n                  </td>\r\n                  <td [hidden]=\"!item.get('Abilitata').value === true || !item.get('Somma').value\"\r\n                      [ngClass]=\"getPartitaByFormGroup(item).NomeTitolo ? 'tdNomeTitolo' : ''\"\r\n                      style=\"text-align: center; vertical-align: middle;\">\r\n                      <span *ngIf=\"getPartitaByFormGroup(item).LimiteAltroVisible && item.get('Somma').value > 0\">\r\n                        <label\r\n                          *ngIf=\"getPartitaByFormGroup(item).LimiteAltroDisabled\">{{item.get('LimiteAltro').value}}</label>\r\n                        <textarea\r\n                          id=\"{{getPartitaByFormGroup(item).LimiteAltroInputName}}\"\r\n                          name=\"{{getPartitaByFormGroup(item).LimiteAltroInputName}}\"\r\n                          type=\"text\"\r\n                          formControlName=\"LimiteAltro\"\r\n                          [readOnly]=\"ReadOnly\"\r\n                          *ngIf=\"!getPartitaByFormGroup(item).LimiteAltroDisabled\"\r\n                          class=\"input-filter form-control mr-0 pr-0 p-0 webcau-yellow-border-1\"\r\n                          [ngClass]=\"getPartitaByFormGroup(item).LimiteAltroDisabled ? 'input-disabled' : ''\"\r\n                          (change)=\"limiteAltroChanged(item, getPartitaByFormGroup(item))\"\r\n                          SinDifferenceFromDefaultValue\r\n                          [defaultValue]=\"getDefaultValue(item, getPartitaByFormGroup(item), 'LimiteAltro')\"\r\n                          style=\"text-align: left;\">\r\n                        </textarea>\r\n                        </span>\r\n                    <span *ngIf=\"getPartitaByFormGroup(item).LimiteAltroVisible && item.get('Somma').value <= 0\">\r\n                        <label style=\"margin-left: 20px;\">*****</label>\r\n                      </span>\r\n                  </td>\r\n\r\n                </tr>\r\n\r\n                </tbody>\r\n              </table>\r\n\r\n            </td>\r\n          </tr>\r\n\r\n          </tbody>\r\n        </table>\r\n\r\n        <table *ngIf=\"debugLocal && partiteReady\" style=\"margin-top: 100px\">\r\n          <tr *ngFor=\"let sezioneForm of sezioniPartiteFormArray.controls\">\r\n            <span>#SezioneID: {{sezioneForm.get('SezioneID').value}} => Status {{sezioneForm.get('Partite').status}}\r\n              - {{sezioneForm.get('Partite').valid ? 'valid' : 'not valid'}}</span>\r\n          </tr>\r\n          <!--        <input id=\"DataEffetto\" name=\"DataEffetto\" data-descrcampo=\"Data effetto\" data-role=\"datepicker\" class=\"datePicker k-input\" data-culture=\"it-IT\" type=\"text\" role=\"combobox\" value=\"31/05/2022\">-->\r\n        </table>\r\n      </form>\r\n\r\n    </div>\r\n  `,\r\n  styles: [  `\r\n\r\n    .input-filter {\r\n      text-align: right;\r\n      border-width: 1px;\r\n      border-style: solid;\r\n      border-radius: 4px;\r\n      color: #313131;\r\n      border-color: #c5c5c5;\r\n      background-image: none, linear-gradient(to bottom, rgba(255, 255, 255, .6) 0, rgba(255, 255, 255, 0) 100%);\r\n      background-position: 50% 50%;\r\n      background-repeat: repeat;\r\n      padding: 0 1.9em 0 0;\r\n      vertical-align: middle;\r\n      font-size: 13.33px;\r\n    }\r\n\r\n    .input-disabled {\r\n      background-color: #eae8e8;\r\n      opacity: .7;\r\n    }\r\n\r\n    .form-control[readonly] {\r\n      background-color: #eae8e8 !important;\r\n      opacity: .7 !important;\r\n    }\r\n\r\n    .sottotitolo {\r\n      font-family: Verdana;\r\n      font-size: 10pt;\r\n      color: #333333;\r\n      font-weight: bold;\r\n    }\r\n\r\n    .grid-layout-partite {\r\n      width: 99%;\r\n      border-collapse: collapse;\r\n      border-spacing: 0px;\r\n    }\r\n\r\n    .grid-layout-partite tr {\r\n      font: normal 10pt Verdana, Arial, sans-serif;\r\n      color: #000000;\r\n      height: 50px !important;\r\n    }\r\n\r\n    .grid-layout-partite tr.row-data {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .grid-layout-partite th {\r\n      font: bold 11pt Verdana, Arial, sans-serif;\r\n      text-align: center;\r\n      vertical-align: middle;\r\n    }\r\n\r\n    .grid-layout-partite td {\r\n      padding: 2px;\r\n    }\r\n\r\n    .tdNomeTitolo {\r\n      vertical-align: bottom !important;\r\n      padding-bottom: 10px !important;\r\n    }\r\n\r\n    .grid-layout-partite td > span {\r\n      display: flex;\r\n    }\r\n\r\n    .grid-layout-partite td > span > input {\r\n      margin: 0 2px 0 2px !important;\r\n      padding: 4px !important;\r\n      max-width: 160px !important;\r\n    }\r\n\r\n    .grid-layout-partite td.row-label {\r\n      text-align: right;\r\n      width: 30%;\r\n    }\r\n\r\n    .grid-layout-partite td.separatoreRecord {\r\n      background: #FFB517;\r\n      height: 1px;\r\n    }\r\n\r\n    .grid-layout-partite td.td8 {\r\n      font-size: 10pt;\r\n      border: solid 1px #000000;\r\n      padding: 5px 5px 5px 5px;\r\n      text-align: center;\r\n      vertical-align: middle;\r\n    }\r\n\r\n    .partita-select {\r\n      border-width: 1px;\r\n      border-style: solid;\r\n      border-radius: 4px;\r\n      background-color: #eae8e8;\r\n      color: #313131;\r\n      border-color: #c5c5c5;\r\n      background-image: none, linear-gradient(to bottom, rgba(255, 255, 255, .6) 0, rgba(255, 255, 255, 0) 100%);\r\n      background-position: 50% 50%;\r\n      background-repeat: repeat;\r\n      padding: 0 1.9em 0 0;\r\n      vertical-align: middle;\r\n      cursor: pointer;\r\n      height: 27px;\r\n      font-size: 13.33px;\r\n    }\r\n\r\n  `\r\n  ]\r\n})\r\nexport class WebcauPartiteComponent implements OnInit {\r\n\r\n  // Parametri comportamentali\r\n  @Input() ReadOnly: string;\r\n  @Input() debugLocal: string; // Chiamata su elba.local\r\n\r\n  // Parametri gestione allegati\r\n  @Input() Mode: string;\r\n  @Input() ID_Modello: string;\r\n  @Input() CodiceRischio: number;\r\n  @Input() SezionePartiteInput: SezionePartite[]; // Sezione Partite Valorizzate da Input\r\n  @Input() SezionePartiteDefaultInput: SezionePartite[]; // Sezione Partite Valorizzate da Input\r\n\r\n  // Parametri Dati\r\n  partiteReady = false;\r\n  sezioniPartiteConfigList: SezionePartiteConfig[];\r\n\r\n  sezioniPartiteForm: FormGroup;\r\n  sezioniPartiteFormArray: FormArray;\r\n\r\n  // Parametri Utili\r\n  sommaFocusIn = null;\r\n\r\n  constructor(@Inject(LOCALE_ID) public locale: string, private formBuilder: FormBuilder) { }\r\n\r\n  ngOnInit(): void {\r\n    // Get configurazioni partite\r\n    this.configurazioneGet();\r\n    // Setup Listeners events\r\n    this.setupListeners();\r\n  }\r\n\r\n  // ----------------------------- //\r\n  // Inizializzazione\r\n  // ----------------------------- //\r\n\r\n  setupListeners() {\r\n\r\n    // Listener SET Sezioni-Partite\r\n    window.addEventListener('SezioniPartiteSet', (e: CustomEvent) => {\r\n      const sezioniPartite = e.detail.obj.sezioniPartite as SezionePartite[];\r\n      this.setFormArrayPartite(sezioniPartite);\r\n    }, { passive: true });\r\n\r\n    // Listener ELB55 DestinazioneUsoImmobile_Change\r\n    window.addEventListener('TariffaChange', (e: CustomEvent) => {\r\n      if (this.CodiceRischio === 104 && this.partiteReady) {\r\n        this.sezioniPartiteFormArray.controls.forEach(s =>  {\r\n          (s.get('Partite') as FormArray).controls.forEach(x => {\r\n            const partita = this.getPartitaByFormGroup(x as FormGroup);\r\n            if (!partita.IsTotale && x.get('Somma').value > 0) {\r\n              this.sommaChanged(x as FormGroup, partita, true);\r\n            }\r\n          });\r\n        });\r\n      }\r\n    }, { passive: true });\r\n\r\n  }\r\n\r\n  configurazioneGet(): void {\r\n\r\n    if (!this.ID_Modello) {\r\n      return;\r\n    }\r\n    if (!this.CodiceRischio) {\r\n      return;\r\n    }\r\n\r\n    let uri = `/WebRest/app/AppModelloService.svc/modello_rischio_partite_get/${this.ID_Modello}/${this.CodiceRischio}`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      uri = `http://elba.local/WebRest/app/AppModelloService.svc/modello_rischio_partite_get/${this.ID_Modello}/${this.CodiceRischio}`;\r\n    }\r\n\r\n    fetch(uri\r\n    )\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: SezionePartiteConfig[]) => {\r\n        if (data && data.length > 0) {\r\n          // Salvo Configurazione\r\n          this.sezioniPartiteConfigList = [...data];\r\n          // Init Form Array\r\n          this.initFormArrayPartite();\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare la configurazione delle partite');\r\n        this.partiteReady = false;\r\n      });\r\n  }\r\n\r\n  initFormArrayPartite(): void {\r\n    this.sezioniPartiteFormArray = this.formBuilder.array(\r\n      this.sezioniPartiteConfigList.map(c => this.formBuilder.group(\r\n        {\r\n          SezioneID: [c.ID],\r\n          Partite: this.formBuilder.array(c.Partite?.map((p) => this.createFormPartita(c, p))) // Form Array Partite\r\n        }\r\n      )));\r\n\r\n    this.sezioniPartiteForm = this.formBuilder.group({\r\n      sezioniPartiteFormArray: this.sezioniPartiteFormArray\r\n    });\r\n\r\n    // Sezioni-Partite valorizzate da Input\r\n    if (this.SezionePartiteInput && this.SezionePartiteInput.length > 0) {\r\n      this.setFormArrayPartite(this.SezionePartiteInput);\r\n    }\r\n\r\n    // Sezioni-Partite Default valorizzati da Input\r\n    if (this.SezionePartiteDefaultInput && this.SezionePartiteDefaultInput.length > 0) {\r\n      // this.setFormArrayPartiteDefault(this.SezionePartiteDefaultInput);\r\n    }\r\n\r\n    this.partiteReady = true;\r\n  }\r\n\r\n  createFormPartita(sezione: SezionePartiteConfig, partita: PartitaConfig): FormGroup {\r\n\r\n    const partitaAbilitata = (partita.PartitaOpzionale === false ? true : (this.Mode === 'edit' ? false : partita.PartitaOpzionaleDefault));\r\n    const form = this.formBuilder.group({\r\n      ID_Partita: [partita.ID],\r\n      SezioneID: [sezione.ID],\r\n      Abilitata: [partitaAbilitata, Validators.required],\r\n      IsTotale: [partita.IsTotale],\r\n      Posizione: [partita.Posizione],\r\n\r\n      Somma: [partita?.SommaValoreDefault ?? null, this.getValidators(partitaAbilitata, partita?.SommaObbligatorio, partita?.SommaVisible, false, false)],\r\n      Scoperto: [0, this.getValidators(partitaAbilitata, partita?.ScopertoObbligatorio, partita?.ScopertoVisible, false, true)],\r\n      ScopertoMinimo: [partita?.ScopertoMinimoValoreDefault ?? null, this.getValidators(partitaAbilitata, partita?.ScopertoMinimoObbligatorio, partita?.ScopertoMinimoVisible, false, false)],\r\n      Limite: [0, this.getValidators(partitaAbilitata, partita?.LimiteObbligatorio, partita?.LimiteVisible, false, true)],\r\n      LimiteImporto: [partita?.LimiteImportoValoreDefault, this.getValidators(partitaAbilitata, partita?.LimiteImportoObbligatorio, partita?.LimiteImportoVisible, false, false)],\r\n      LimiteAltro: [partita?.LimiteAltroValoreDefault ?? null, this.getValidators(partitaAbilitata, partita?.LimiteAltroObbligatorio, partita?.LimiteAltroVisible, true, false)],\r\n\r\n      // Non gestiti internamente al componente\r\n      PremioImponibile: [null],\r\n      PremioLordo: [null]\r\n    });\r\n\r\n    setTimeout(() => {\r\n\r\n      // Evento Abilitazione Partita => Ricalcolo tutti i validatori\r\n      form.get('Abilitata').valueChanges.subscribe(val => {\r\n        form.get('Somma').setValidators(this.getValidators(val, partita?.SommaObbligatorio, partita?.SommaVisible, false, false));\r\n        form.get('Scoperto').setValidators(this.getValidators(val, partita?.ScopertoObbligatorio, partita?.ScopertoVisible, false, true));\r\n        form.get('ScopertoMinimo').setValidators(this.getValidators(val, partita?.ScopertoMinimoObbligatorio, partita?.ScopertoMinimoVisible, false, false));\r\n        form.get('Limite').setValidators(this.getValidators(val, partita?.LimiteObbligatorio, partita?.LimiteVisible, false, true));\r\n        form.get('LimiteImporto').setValidators(this.getValidators(val, partita?.LimiteImportoObbligatorio, partita?.LimiteImportoVisible, false, false));\r\n        form.get('LimiteAltro').setValidators(this.getValidators(val, partita?.LimiteAltroObbligatorio, partita?.LimiteAltroVisible, true, false));\r\n\r\n        // Trigger Update\r\n        form.updateValueAndValidity();\r\n        form.get('Somma').updateValueAndValidity();\r\n        form.get('Scoperto').updateValueAndValidity();\r\n        form.get('ScopertoMinimo').updateValueAndValidity();\r\n        form.get('Limite').updateValueAndValidity();\r\n        form.get('LimiteImporto').updateValueAndValidity();\r\n        form.get('LimiteAltro').updateValueAndValidity();\r\n      });\r\n\r\n      // Partita TOTALE => Nessuna validazione\r\n      if (partita.IsTotale) {\r\n        form.get('Somma').clearValidators();\r\n        form.get('Scoperto').clearValidators();\r\n        form.get('ScopertoMinimo').clearValidators();\r\n        form.get('Limite').clearValidators();\r\n        form.get('LimiteImporto').clearValidators();\r\n        form.get('LimiteAltro').clearValidators();\r\n      }\r\n\r\n      // Value Changes\r\n      form.get('Somma').valueChanges.subscribe(() => this.sommaChange(form, partita));\r\n      form.get('Scoperto').valueChanges.subscribe(() => this.scopertoChange(form, partita));\r\n      form.get('ScopertoMinimo').valueChanges.subscribe(() => this.scopertoMinimoChange(form, partita));\r\n      form.get('Limite').valueChanges.subscribe(() => this.limiteChange(form, partita));\r\n      form.get('LimiteImporto').valueChanges.subscribe(() => this.limiteImportoChange(form, partita));\r\n      form.get('LimiteAltro').valueChanges.subscribe(() => this.limiteAltroChange(form, partita));\r\n\r\n      // Value Changed (Init Default)\r\n      if (partita?.SommaValoreDefault > 0) {\r\n        this.sommaChanged(form, partita, true);\r\n      }\r\n      if (partita?.ScopertoValoreDefault > 0) {\r\n        this.scopertoChanged(form, partita, true);\r\n      }\r\n      if (partita?.ScopertoMinimoValoreDefault > 0) {\r\n        this.scopertoMinimoChanged(form, partita, true);\r\n      }\r\n      if (partita?.LimiteValoreDefault > 0) {\r\n        this.limiteChanged(form, partita, true);\r\n      }\r\n      if (partita?.LimiteImportoValoreDefault > 0) {\r\n        this.limiteImportoChanged(form, partita, true);\r\n      }\r\n      if (partita?.LimiteAltroValoreDefault?.length > 0) {\r\n        this.limiteAltroChanged(form, partita, true);\r\n      }\r\n\r\n      // Valori Default Percentuali => Setto in un secondo momento per sfruttare il SinPercentage\r\n      if (partita?.ScopertoValoreDefault) {\r\n        form.get('Scoperto').setValue(partita?.ScopertoValoreDefault);\r\n      }\r\n\r\n      if (partita?.LimiteValoreDefault) {\r\n        form.get('Limite').setValue(partita?.LimiteValoreDefault);\r\n      }\r\n\r\n      // Trigger Update\r\n      form.updateValueAndValidity();\r\n      form.get('Somma').updateValueAndValidity();\r\n      form.get('Scoperto').updateValueAndValidity();\r\n      form.get('ScopertoMinimo').updateValueAndValidity();\r\n      form.get('Limite').updateValueAndValidity();\r\n      form.get('LimiteImporto').updateValueAndValidity();\r\n      form.get('LimiteAltro').updateValueAndValidity();\r\n\r\n    });\r\n    return form;\r\n  }\r\n\r\n  getValidators(partitaAbilitata: boolean, obbligatorio: boolean, visibile: boolean, isString: boolean, isPertange: boolean): ValidatorFn {\r\n    if (partitaAbilitata) {\r\n      if (obbligatorio && visibile) {\r\n        return Validators.compose([Validators.required, Validators.min( isPertange ? 0.001 : 1)]);\r\n      } else if (visibile) {\r\n        return Validators.compose([Validators.required]);\r\n      }\r\n    }\r\n    return Validators.compose([]);\r\n  }\r\n\r\n  setFormArrayPartite(sezioniPartite: SezionePartite[]): void {\r\n    // Ciclo Sezioni del Form\r\n    this.sezioniPartiteFormArray.controls.forEach(s => {\r\n      // Se mi è stata passata la mia Sezione entro\r\n      if (sezioniPartite.filter(x => x.SezioneID === s.get('SezioneID').value).length > 0) {\r\n\r\n        const sezione = sezioniPartite.filter(x => x.SezioneID === s.get('SezioneID').value)[0];\r\n\r\n        // Ciclo Partite della Sezione\r\n        (s.get('Partite') as FormArray).controls.forEach(p => {\r\n          if (sezione.Partite.filter(x => x.ID_Partita === p.get('ID_Partita').value).length > 0) {\r\n            const partita = sezione.Partite.filter(x => x.ID_Partita === p.get('ID_Partita').value)[0];\r\n            if (partita && partita.Abilitata) {\r\n              p.patchValue(partita);\r\n\r\n              // Trigger Update\r\n              p.updateValueAndValidity();\r\n              p.get('Somma').updateValueAndValidity();\r\n              p.get('Scoperto').updateValueAndValidity();\r\n              p.get('ScopertoMinimo').updateValueAndValidity();\r\n              p.get('Limite').updateValueAndValidity();\r\n              p.get('LimiteImporto').updateValueAndValidity();\r\n              p.get('LimiteAltro').updateValueAndValidity();\r\n            }\r\n          }\r\n        });\r\n\r\n      }\r\n    });\r\n  }\r\n\r\n  // setFormArrayPartiteDefault(sezioniPartite: SezionePartite[]): void {\r\n  //   // Ciclo Sezioni del Form\r\n  //   this.sezioniPartiteFormArray.controls.forEach(s => {\r\n  //     // Se mi è stata passata la mia Sezione entro\r\n  //     if (sezioniPartite.filter(x => x.SezioneID === s.get('SezioneID').value).length > 0) {\r\n  //\r\n  //       const sezione = sezioniPartite.filter(x => x.SezioneID === s.get('SezioneID').value)[0];\r\n  //\r\n  //       // Ciclo Partite della Sezione\r\n  //       (s.get('Partite') as FormArray).controls.forEach(p => {\r\n  //         if (sezione.Partite.filter(x => x.ID_Partita === p.get('ID_Partita').value).length > 0) {\r\n  //           const partita = sezione.Partite.filter(x => x.ID_Partita === p.get('ID_Partita').value)[0];\r\n  //           if (partita && partita.Abilitata) {\r\n  //\r\n  //             (p.get('Somma') as FormControl)?.defaultValue = partita.Somma;\r\n  //\r\n  //             // Trigger Update\r\n  //             p.updateValueAndValidity();\r\n  //             p.get('Somma').updateValueAndValidity();\r\n  //             p.get('Scoperto').updateValueAndValidity();\r\n  //             p.get('ScopertoMinimo').updateValueAndValidity();\r\n  //             p.get('Limite').updateValueAndValidity();\r\n  //             p.get('LimiteAltro').updateValueAndValidity();\r\n  //           }\r\n  //         }\r\n  //       });\r\n  //\r\n  //     }\r\n  //   });\r\n  // }\r\n\r\n  // ----------------------------- //\r\n  // Utility Form\r\n  // ----------------------------- //\r\n\r\n  // Funzione utilizzata dalla Direttiva DifferenceFromDefault che individua il valore default da SezionePartiteDefaultInput\r\n  getDefaultValue(form: FormGroup, partita: PartitaConfig, inputNome: string) {\r\n\r\n    // Utilizzo Default Configurtazione Partite\r\n    if (this.ID_Modello === 'CR08A') {\r\n      this.addPartitaDefault(partita,\r\n        partita.SommaValoreDefault > 0 ? partita.SommaValoreDefault : null,\r\n        partita.ScopertoValoreDefault > 0 ? partita.ScopertoValoreDefault : null,\r\n        partita.ScopertoMinimoValoreDefault > 0 ? partita.ScopertoMinimoValoreDefault : null,\r\n        partita.LimiteValoreDefault > 0 ? partita.LimiteValoreDefault : null,\r\n        partita.LimiteImportoValoreDefault > 0 ? partita.LimiteImportoValoreDefault : null,\r\n        null );\r\n    }\r\n\r\n    // Se ho una configurazione defualt cerco la partita\r\n    if (this.SezionePartiteDefaultInput && this.SezionePartiteDefaultInput.length > 0) {\r\n      if (this.SezionePartiteDefaultInput.filter(s => s.SezioneID === partita.SezioneID).length > 0) {\r\n        const sezioneDefault = this.SezionePartiteDefaultInput.filter(s => s.SezioneID === partita.SezioneID)[0];\r\n        if (sezioneDefault.Partite && sezioneDefault.Partite.filter(p => p.ID_Partita === partita.ID).length > 0) {\r\n          const partitaDefault = sezioneDefault.Partite.filter(p => p.ID_Partita === partita.ID)[0];\r\n          if (partitaDefault[inputNome] !== null && partitaDefault[inputNome] !== undefined) {\r\n            return partitaDefault[inputNome];\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return null; // Nessun default trovato\r\n  }\r\n\r\n  // Funzione per aggiungere i valori default di una partita in SezionePartiteDefaultInput\r\n  addPartitaDefault(partitaConfig: PartitaConfig, somma: number, scoperto: number, scopertoMinimo: number, limite: number, limiteImporto: number, limiteAltro: string) {\r\n    if (!this.SezionePartiteDefaultInput) {\r\n      this.SezionePartiteDefaultInput = [] as SezionePartite[];\r\n    }\r\n\r\n    // Ricerco Sezione => Se non presente aggiungo\r\n    if (this.SezionePartiteDefaultInput.filter(s => s.SezioneID === partitaConfig.SezioneID).length <= 0) {\r\n      const sezioneConfig = this.sezioniPartiteConfigList.filter(x => x.ID === partitaConfig.SezioneID)[0];\r\n\r\n      const sezione = {\r\n        SezioneID: sezioneConfig.ID,\r\n        Nome: sezioneConfig.Nome,\r\n        Posizione: sezioneConfig.Posizione,\r\n        SottoSezioneID: sezioneConfig.SottoSezioneID,\r\n        SottoSezioneNome: sezioneConfig.SottoSezioneNome,\r\n        SottoSezionePosizione: sezioneConfig.SottoSezionePosizione,\r\n        Partite: []\r\n      } as SezionePartite;\r\n\r\n      this.SezionePartiteDefaultInput.push(sezione);\r\n    }\r\n\r\n    this.SezionePartiteDefaultInput.forEach(s => {\r\n      if (s.SezioneID === partitaConfig.SezioneID) {\r\n        // Cerco Partita => Se non presente aggiungo\r\n        if (s.Partite.filter(p => p.ID_Partita === partitaConfig.ID).length <= 0) {\r\n          const partitaDef = {\r\n            ID_Partita: partitaConfig.ID,\r\n            Somma: somma,\r\n            Scoperto: scoperto,\r\n            ScopertoMinimo: scopertoMinimo,\r\n            Limite: limite,\r\n            LimiteImporto: limiteImporto,\r\n            LimiteAltro: limiteAltro\r\n          } as Partita;\r\n          s.Partite.push(partitaDef);\r\n        } else { // Se partita già presente modifico\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].Somma = somma;\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].Scoperto = scoperto;\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].ScopertoMinimo = scopertoMinimo;\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].Limite = limite;\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].LimiteImporto = limiteImporto;\r\n          s.Partite.filter(p => p.ID_Partita === partitaConfig.ID)[0].LimiteAltro = limiteAltro;\r\n        }\r\n      }\r\n    });\r\n\r\n    ((this.sezioniPartiteFormArray.controls.filter(x => x.get('SezioneID').value === partitaConfig.SezioneID)[0].get('Partite') as FormArray).controls.filter(p => p.get('ID_Partita').value === partitaConfig.ID)[0] as FormGroup).updateValueAndValidity();\r\n  }\r\n\r\n  getFormArrayBySezione(sezione: SezionePartiteConfig): FormArray {\r\n    return this.sezioniPartiteFormArray.controls.filter(x => x.get('SezioneID').value === sezione.ID)[0].get('Partite').value;\r\n  }\r\n\r\n  getSezioneByFormGroup(form: FormGroup | any): SezionePartiteConfig {\r\n    const sezioneID = form.get('SezioneID')?.value;\r\n    if (sezioneID) {\r\n      return this.sezioniPartiteConfigList.filter(s => s.ID === sezioneID)[0];\r\n    } else {\r\n      return {} as SezionePartiteConfig;\r\n    }\r\n  }\r\n\r\n  getPartitaByFormGroup(form: FormGroup): PartitaConfig {\r\n    const sezioneID = form.get('SezioneID')?.value;\r\n    const partitaID = form.get('ID_Partita')?.value;\r\n    if (partitaID && sezioneID) {\r\n      return this.sezioniPartiteConfigList.filter(s => s.ID === sezioneID)[0].Partite.filter(p => p.ID === partitaID)[0];\r\n    } else {\r\n      return {} as PartitaConfig;\r\n    }\r\n  }\r\n\r\n  // ----------------------------- //\r\n  // Eventi Change\r\n  // ----------------------------- //\r\n\r\n  abilitataChanged(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n    this.resetPartitaToDefault(form, partita, true);\r\n    this.partitaModificataThrowEvent(partita, 'Abilitata');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Somma\r\n  sommaChange(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n    // Gestione Partita TOTALE (se presente)\r\n    const sezioneConfig = this.getSezioneByFormGroup(form);\r\n    const partitaTotaleID = sezioneConfig.Partite.filter(p => p.IsTotale).length > 0 ? sezioneConfig.Partite.filter(p => p.IsTotale)[0].ID : null;\r\n\r\n    if (partitaTotaleID && partitaTotaleID !== partita.ID && sezioneConfig.Partite.filter(p => p.IsTotale).length > 0) {\r\n      const sezione = this.sezioniPartiteFormArray.controls.filter(s => s.get('SezioneID').value === sezioneConfig.ID)[0];\r\n\r\n      let totale = 0;\r\n      let partitaTotaleForm = null;\r\n      (sezione.get('Partite') as FormArray)?.controls.forEach(c => {\r\n        const p = this.getPartitaByFormGroup(c as FormGroup);\r\n        if (c.get('ID_Partita').value !== partitaTotaleID) {\r\n          if (c.get('Somma').value) {\r\n            let value = c.get('Somma').value.toString();\r\n            // Formato IT\r\n            if (value.indexOf(',') > -1) {\r\n              value = value.replace('.', ''); // Rimuovo migliaia\r\n              value = value.replace(',', '.'); // Tolgo virgola a famore del punto\r\n            }\r\n\r\n            switch (this.ID_Modello) {\r\n              case 'CR08A':\r\n                // Totale Sezione A => P1+P2\r\n                if (p.Posizione <= 1) {\r\n                  totale += parseFloat(value);\r\n                }\r\n                break;\r\n              default:\r\n                totale += parseFloat(value);\r\n                break;\r\n            }\r\n\r\n          }\r\n        } else {\r\n          partitaTotaleForm = c;\r\n        }\r\n      });\r\n\r\n      // Imposto somma\r\n      if (totale && totale > 0) {\r\n        partitaTotaleForm.get('Somma').setValue(totale);\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model della Somma\r\n  sommaChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n\r\n    // Gestione valori null\r\n    if (form.get('Somma').value === null || form.get('Somma').value === undefined || form.get('Somma').value === '') {\r\n      form.get('Somma').setValue(0);\r\n      form.get('Somma').updateValueAndValidity();\r\n    }\r\n\r\n    // Gestisco valore 0 => Reset valori partita a defalt\r\n    if (parseFloat(form.get('Somma').value) === 0) {\r\n      this.resetPartitaToDefault(form, partita, false);\r\n    }\r\n\r\n    const sezioneConfig = this.getSezioneByFormGroup(form);\r\n\r\n    switch (this.ID_Modello) {\r\n      case 'CR04B':\r\n        if (this.CodiceRischio === 104) {\r\n          const sezionePartite = this.sezioniPartiteFormArray.controls.filter(s => s.get('SezioneID').value === sezioneConfig.ID)[0].get('Partite') as FormArray;\r\n          const partitaForm = sezionePartite.controls.filter(c => c.get('ID_Partita').value === partita.ID)[0];\r\n\r\n          const categoriaInput = (document.getElementById('TipoImmobileCategoria') as HTMLInputElement);\r\n          let categoria = null;\r\n          if (categoriaInput && categoriaInput.value) {\r\n            categoria = parseInt(categoriaInput.value.toString(), 10);\r\n          } else {\r\n            return; // Se non ho la categoria non faccio niente\r\n          }\r\n\r\n          if (fromEvent || confirm('Attenzione! Modificando questo elemento la tariffa verrà ricalcolata e saranno ripristinati i valori di default.\\nProseguire?')) {\r\n            const sommaPartita = parseFloat(partitaForm.get('Somma').value);\r\n            const dataEffettoInput = (document.getElementById('DataEffetto') as HTMLInputElement);\r\n\r\n            let dataEffetto = new Date();\r\n            if (dataEffettoInput && dataEffettoInput.value) {\r\n              const date1 = dataEffettoInput.value.split('/');\r\n              const newDate = date1[1] + '/' + date1[0] + '/' + date1[2];\r\n              dataEffetto = new Date(newDate);\r\n            }\r\n\r\n            if (sezioneConfig.Posizione === 0 && partita.Posizione === 0) {\r\n              this.tariffaCARScopertoSommaAssicurataGet(partitaForm as FormGroup, categoria, sommaPartita, dataEffetto);\r\n            } else if (sezioneConfig.Posizione === 0 && partita.Posizione === 1) {\r\n              this.tariffaCARScopertoDemolizioneSgomberoGet(partitaForm as FormGroup, categoria, sommaPartita, dataEffetto);\r\n            } else if (sezioneConfig.Posizione === 1 && partita.Posizione === 0) {\r\n              this.tariffaCARScopertoRctGet(partitaForm as FormGroup, categoria, sommaPartita, dataEffetto);\r\n            } else {\r\n              console.log('ERRORE! Partita con nome \"' + partita.Nome + '\" non prevista per il calcolo della Tariffa!');\r\n            }\r\n\r\n          }\r\n          else {\r\n            // Annullo modifica somma\r\n            partitaForm.get('Somma').setValue(this.sommaFocusIn);\r\n          }\r\n          break;\r\n        }\r\n        break;\r\n      case 'CR08A':\r\n        if (partita.LimiteImportoVisible && partita.LimiteImportoInputName === 'LimiteImportoCalcolato') {\r\n          const somma = parseFloat(form.get('Somma').value.toString().replace('.', '').replace(',', '.'));\r\n          const limite = parseFloat(form.get('Limite').value) > 1 ? parseInt(form.get('Limite').value, 10) / 100 : parseFloat(form.get('Limite').value);\r\n\r\n          if (somma && limite) {\r\n            form.get('LimiteImporto').setValue(somma * limite);\r\n            form.get('LimiteImporto').updateValueAndValidity();\r\n          } else {\r\n            form.get('LimiteImporto').setValue(0);\r\n            form.get('LimiteImporto').updateValueAndValidity();\r\n          }\r\n        }\r\n        break;\r\n    }\r\n\r\n    this.partitaModificataThrowEvent(partita, 'Somma');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Scoperto\r\n  scopertoChange(form: FormGroup, partita: PartitaConfig): void {\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model dello Scoperto\r\n  scopertoChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n    // Gestione valori null\r\n    if (form.get('Scoperto').value === null || form.get('Scoperto').value === undefined || form.get('Scoperto').value === '') {\r\n      form.get('Scoperto').setValue(0);\r\n      form.get('Scoperto').updateValueAndValidity();\r\n    }\r\n    // Gestione valori supra 100%\r\n    if (parseFloat(form.get('Scoperto').value) > 100) {\r\n      form.get('Scoperto').setValue(1);\r\n      form.get('Scoperto').updateValueAndValidity();\r\n    }\r\n\r\n    this.partitaModificataThrowEvent(partita, 'Scoperto');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Scoperto Minimo\r\n  scopertoMinimoChange(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model dello Scoperto Minimo\r\n  scopertoMinimoChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n    // Gestione valori null\r\n    if (form.get('ScopertoMinimo').value === null || form.get('ScopertoMinimo').value === undefined || form.get('ScopertoMinimo').value === '') {\r\n      form.get('ScopertoMinimo').setValue(0);\r\n      form.get('ScopertoMinimo').updateValueAndValidity();\r\n    }\r\n    this.partitaModificataThrowEvent(partita, 'ScopertoMinimo');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Limite\r\n  limiteChange(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model del Limite\r\n  limiteChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n    // Gestione valori null\r\n    if (form.get('Limite').value === null || form.get('Limite').value === undefined || form.get('Limite').value === '') {\r\n      form.get('Limite').setValue(0);\r\n      form.get('Limite').updateValueAndValidity();\r\n    }\r\n    // Gestione valori supra 100%\r\n    if (parseFloat(form.get('Limite').value) > 100) {\r\n      form.get('Limite').setValue(1);\r\n      form.get('Limite').updateValueAndValidity();\r\n    }\r\n\r\n    switch (this.ID_Modello) {\r\n      case 'CR08A':\r\n        if (partita.LimiteImportoVisible && partita.LimiteImportoInputName === 'LimiteImportoCalcolato') {\r\n          const somma = parseFloat(form.get('Somma').value.toString().replace('.', '').replace(',', '.'));\r\n          const limite = parseFloat(form.get('Limite').value) > 1 ? parseInt(form.get('Limite').value, 10) / 100 : parseFloat(form.get('Limite').value);\r\n\r\n          if (somma && limite) {\r\n            form.get('LimiteImporto').setValue(somma * limite);\r\n            form.get('LimiteImporto').updateValueAndValidity();\r\n          } else {\r\n            form.get('LimiteImporto').setValue(0);\r\n            form.get('LimiteImporto').updateValueAndValidity();\r\n          }\r\n        }\r\n        break;\r\n    }\r\n\r\n    this.partitaModificataThrowEvent(partita, 'Limite');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Limite\r\n  limiteImportoChange(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model del Limite\r\n  limiteImportoChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n    // Gestione valori null\r\n    if (form.get('LimiteImporto').value === null || form.get('LimiteImporto').value === undefined || form.get('LimiteImporto').value === '') {\r\n      form.get('LimiteImporto').setValue(0);\r\n      form.get('LimiteImporto').updateValueAndValidity();\r\n    }\r\n    this.partitaModificataThrowEvent(partita, 'LimiteImporto');\r\n  }\r\n\r\n  // Evento scatenato alla modifica dell'input Limite Altro\r\n  limiteAltroChange(form: FormGroup, partita: PartitaConfig): void {\r\n    if (this.ReadOnly) { return; }\r\n  }\r\n\r\n  // Evento scatenato all'avvenuta modifica del model del Limite Altro\r\n  limiteAltroChanged(form: FormGroup, partita: PartitaConfig, fromEvent: boolean = false): void {\r\n    if (this.ReadOnly) { return; }\r\n    this.partitaModificataThrowEvent(partita, 'LimiteAltro');\r\n  }\r\n\r\n  // ----------------------------- //\r\n  // Funzioni Specifiche aggiutive //\r\n  // ----------------------------- //\r\n\r\n  // Compone JSON Sezioni-Partite\r\n  sezioniPartiteJSONGet(): string {\r\n    if (!this.partiteReady) { return; }\r\n\r\n    const listSezioniPartite = [] as SezionePartite[];\r\n    if (this.partiteReady && this.sezioniPartiteFormArray) {\r\n      this.sezioniPartiteFormArray.controls.forEach(s => {\r\n        const sezioneConfig = this.sezioniPartiteConfigList.filter(x => x.ID === s.get('SezioneID').value)[0];\r\n        const sezione = {\r\n          SezioneID: s.get('SezioneID').value,\r\n          Nome: sezioneConfig.Nome,\r\n          Posizione: sezioneConfig.Posizione,\r\n          SottoSezioneID: sezioneConfig.SottoSezioneID,\r\n          SottoSezioneNome: sezioneConfig.SottoSezioneNome,\r\n          SottoSezionePosizione: sezioneConfig.SottoSezionePosizione,\r\n          Partite: (s.get('Partite') as FormArray).controls.map(x => x.value as Partita)\r\n        } as SezionePartite;\r\n        listSezioniPartite.push(sezione);\r\n      });\r\n    }\r\n\r\n    // Aggiorno sia il parametro in input che l'elenco json\r\n    this.SezionePartiteInput = listSezioniPartite;\r\n    return JSON.stringify(listSezioniPartite);\r\n  }\r\n\r\n  sezioniPartiteValidationJSONGet(): string {\r\n    if (!this.partiteReady) { return; }\r\n\r\n    const listSezioniPartiteErrors = [];\r\n\r\n    if (this.partiteReady && this.sezioniPartiteFormArray) {\r\n      this.sezioniPartiteFormArray.controls.forEach(s => {\r\n        if (!s.valid) {\r\n          (s.get('Partite') as FormArray).controls.forEach(p => {\r\n            if (!p.valid) {\r\n              const configPartita = this.getPartitaByFormGroup(p as FormGroup);\r\n              listSezioniPartiteErrors.push(configPartita.Nome);\r\n            }\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    if (listSezioniPartiteErrors.length > 0) {\r\n      return JSON.stringify(listSezioniPartiteErrors);\r\n    }\r\n    return '';\r\n  }\r\n\r\n  // Evento Partita modificata\r\n  partitaModificataThrowEvent(partita: PartitaConfig, campo: string) {\r\n    const objEvent = { partita, campo };\r\n    const event = new CustomEvent('partitaModificata', { detail: { obj: objEvent } });\r\n    window.dispatchEvent(event);\r\n  }\r\n\r\n  // GET Tariffe ScopertoSommaAssicurataGet CAR\r\n  tariffaCARScopertoSommaAssicurataGet(partitaForm: FormGroup, categoria: number, somma: number, dataEffetto: Date): any[] {\r\n    if (!this.ID_Modello) {\r\n      return;\r\n    }\r\n\r\n    const uri = `/WebRest/app/prodotto/AppProdottoCARService.svc/ScopertoSommaAssicurataGetList`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      const data = JSON.parse('[{\"ScopertoSommaAssicurataCoefficiente\":-0.050,\"ScopertoSommaAssicurataId\":17,\"ScopertoSommaAssicurataIndennizzoPercentuale\":100.00000,\"ScopertoSommaAssicurataMinimo\":10000.00,\"ScopertoSommaAssicurataPercentuale\":10.00000}]');\r\n      partitaForm.get('Scoperto').setValue(data[0].ScopertoSommaAssicurataPercentuale / 100);\r\n      partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoSommaAssicurataMinimo);\r\n      partitaForm.get('Limite').setValue(data[0].ScopertoSommaAssicurataIndennizzoPercentuale / 100);\r\n\r\n      // Inizializzo Default\r\n      const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n      this.addPartitaDefault(partitaConfig,\r\n        null,\r\n        (data[0].ScopertoSommaAssicurataPercentuale / 100),\r\n        data[0].ScopertoSommaAssicurataMinimo,\r\n        (data[0].ScopertoSommaAssicurataIndennizzoPercentuale / 100),\r\n        0,\r\n        null);\r\n      return;\r\n    }\r\n\r\n    const obj = {\r\n      Modello: this.ID_Modello,\r\n      DataEffetto: moment(dataEffetto).format('YYYY-MM-DDTHH:mm:ssZ'),\r\n      Importo: somma,\r\n      Categoria: categoria\r\n    };\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(obj)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        console.log(response);\r\n        return response.json();\r\n      })\r\n      .then((data: any) => {\r\n        if (data && data.length > 0) {\r\n          partitaForm.get('Scoperto').setValue(data[0].ScopertoSommaAssicurataPercentuale / 100);\r\n          partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoSommaAssicurataMinimo);\r\n          partitaForm.get('Limite').setValue(data[0].ScopertoSommaAssicurataIndennizzoPercentuale / 100);\r\n\r\n          // Inizializzo Default\r\n          const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n          this.addPartitaDefault(partitaConfig,\r\n            null,\r\n            (data[0].ScopertoSommaAssicurataPercentuale / 100),\r\n            data[0].ScopertoSommaAssicurataMinimo,\r\n            (data[0].ScopertoSommaAssicurataIndennizzoPercentuale / 100),\r\n            0,\r\n            null);\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n      });\r\n  }\r\n\r\n  // GET Tariffe ScopertoDemolizioneSgomberoGet CAR\r\n  tariffaCARScopertoDemolizioneSgomberoGet(partitaForm: FormGroup, categoria: number, somma: number, dataEffetto: Date): any[] {\r\n    if (!this.ID_Modello) {\r\n      return;\r\n    }\r\n\r\n    const uri = `/WebRest/app/prodotto/AppProdottoCARService.svc/ScopertoDemolizioneSgomberoGetList`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      const data = JSON.parse('[{\"ScopertoDemolizioneSgomberoCoefficiente\":0.000,\"ScopertoDemolizioneSgomberoId\":49,\"ScopertoDemolizioneSgomberoIndennizzoPercentuale\":100.00000,\"ScopertoDemolizioneSgomberoMinimo\":0.00,\"ScopertoDemolizioneSgomberoPercentuale\":0.00000}]');\r\n      partitaForm.get('Scoperto').setValue(data[0].ScopertoDemolizioneSgomberoPercentuale / 100);\r\n      partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoDemolizioneSgomberoMinimo);\r\n      partitaForm.get('Limite').setValue(data[0].ScopertoDemolizioneSgomberoIndennizzoPercentuale / 100);\r\n\r\n      // Inizializzo Default\r\n      const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n      this.addPartitaDefault(partitaConfig,\r\n        null,\r\n        (data[0].ScopertoDemolizioneSgomberoPercentuale / 100),\r\n        data[0].ScopertoDemolizioneSgomberoMinimo,\r\n        (data[0].ScopertoDemolizioneSgomberoIndennizzoPercentuale / 100),\r\n        0,\r\n        null);\r\n      return;\r\n    }\r\n\r\n    const obj = {\r\n      Modello: this.ID_Modello,\r\n      DataEffetto: moment(dataEffetto).format('YYYY-MM-DDTHH:mm:ssZ'),\r\n      Importo: somma,\r\n      Categoria: categoria\r\n    };\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(obj)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: any) => {\r\n        if (data && data.length > 0) {\r\n          partitaForm.get('Scoperto').setValue(data[0].ScopertoDemolizioneSgomberoPercentuale / 100);\r\n          partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoDemolizioneSgomberoMinimo);\r\n          partitaForm.get('Limite').setValue(data[0].ScopertoDemolizioneSgomberoIndennizzoPercentuale / 100);\r\n\r\n          // Inizializzo Default\r\n          const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n          this.addPartitaDefault(partitaConfig,\r\n            null,\r\n            (data[0].ScopertoDemolizioneSgomberoPercentuale / 100),\r\n            data[0].ScopertoDemolizioneSgomberoMinimo,\r\n            (data[0].ScopertoDemolizioneSgomberoIndennizzoPercentuale / 100),\r\n            0,\r\n            null);\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n      });\r\n  }\r\n\r\n  // GET Tariffe ScopertoRctGet CAR\r\n  tariffaCARScopertoRctGet(partitaForm: FormGroup, categoria: number, somma: number, dataEffetto: Date): void {\r\n    if (!this.ID_Modello) {\r\n      return;\r\n    }\r\n\r\n    const uri = `/WebRest/app/prodotto/AppProdottoCARService.svc/ScopertoRctGetList`;\r\n\r\n    // Utilizzare 'Moesif Origin & CORS Changer' per testare facendo la chiamata vera e propria\r\n    if (this.debugLocal && this.debugLocal !== '') {\r\n      const data = JSON.parse('[{\"ScoperoRctCoefficiente\":0.050,\"ScopertoRctId\":53,\"ScopertoRctIndennizzoPercentuale\":100.00000,\"ScopertoRctMinimo\":10000.00,\"ScopertoRctPercentuale\":10.00000}]');\r\n\r\n      partitaForm.get('Scoperto').setValue(data[0].ScopertoRctPercentuale / 100);\r\n      partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoRctMinimo);\r\n      partitaForm.get('Limite').setValue(data[0].ScopertoRctIndennizzoPercentuale / 100);\r\n\r\n      // Inizializzo Default\r\n      const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n      this.addPartitaDefault(partitaConfig,\r\n        null,\r\n        (data[0].ScopertoRctPercentuale / 100),\r\n        data[0].ScopertoRctMinimo,\r\n        (data[0].ScopertoRctIndennizzoPercentuale / 100),\r\n        0,\r\n        null);\r\n\r\n      return;\r\n    }\r\n\r\n    const obj = {\r\n      Modello: this.ID_Modello,\r\n      DataEffetto: moment(dataEffetto).format('YYYY-MM-DDTHH:mm:ssZ'),\r\n      Importo: somma,\r\n      Categoria: categoria\r\n    };\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(obj)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: any) => {\r\n        if (data && data.length > 0) {\r\n          partitaForm.get('Scoperto').setValue(data[0].ScopertoRctPercentuale / 100);\r\n          partitaForm.get('ScopertoMinimo').setValue(data[0].ScopertoRctMinimo);\r\n          partitaForm.get('Limite').setValue(data[0].ScopertoRctIndennizzoPercentuale / 100);\r\n\r\n          // Inizializzo Default\r\n          const partitaConfig = this.getPartitaByFormGroup(partitaForm);\r\n          this.addPartitaDefault(partitaConfig,\r\n            null,\r\n            (data[0].ScopertoRctPercentuale / 100),\r\n            data[0].ScopertoRctMinimo,\r\n            (data[0].ScopertoRctIndennizzoPercentuale / 100),\r\n            0,\r\n            null);\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.log(error);\r\n        console.log('ERRORE - Non è stato possibile recuperare i Coobbligati collegati.');\r\n      });\r\n  }\r\n\r\n  // Reset valori partita a default\r\n  resetPartitaToDefault(form: FormGroup, partita: PartitaConfig, resetSomma: boolean) {\r\n    if (partita.SommaDisabled) {\r\n      return;\r\n    }\r\n\r\n    if (partita.SommaVisible && resetSomma) {\r\n      form.get('Somma').setValue(partita.SommaValoreDefault ? partita.SommaValoreDefault : 0);\r\n      form.get('Somma').updateValueAndValidity();\r\n    }\r\n\r\n    if (partita.ScopertoVisible) {\r\n      form.get('Scoperto').setValue(partita.ScopertoValoreDefault ? partita.ScopertoValoreDefault : 0);\r\n      form.get('Scoperto').updateValueAndValidity();\r\n    }\r\n\r\n    if (partita.ScopertoMinimoVisible) {\r\n      form.get('ScopertoMinimo').setValue(partita.ScopertoMinimoValoreDefault ? partita.ScopertoMinimoValoreDefault : 0);\r\n      form.get('ScopertoMinimo').updateValueAndValidity();\r\n    }\r\n\r\n    if (partita.LimiteVisible) {\r\n      form.get('Limite').setValue(partita.LimiteValoreDefault ? partita.LimiteValoreDefault : 0);\r\n      form.get('Limite').updateValueAndValidity();\r\n    }\r\n\r\n    if (partita.LimiteAltroVisible) {\r\n      form.get('LimiteAltro').setValue(partita.LimiteValoreDefault ? partita.LimiteValoreDefault : '');\r\n      form.get('LimiteAltro').updateValueAndValidity();\r\n    }\r\n\r\n    if (partita.LimiteImportoVisible) {\r\n      form.get('LimiteImporto').setValue(partita.LimiteImportoValoreDefault ? partita.LimiteImportoValoreDefault : 0);\r\n      form.get('LimiteImporto').updateValueAndValidity();\r\n    }\r\n\r\n  }\r\n\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {AbstractControl, FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {Mandante} from './interfaces/mandante';\r\nimport {UtilityService} from 'sin-ui';\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'webcau-ati-mandanti',\r\n  template: `\r\n    <div class=\"mandantiMainDiv\" *ngIf=\"ready\">\r\n\r\n      <form [formGroup]=\"ricercaForm\" novalidate class=\"mandantiRicercaForm\">\r\n\r\n        <!-- Ricerca per Ragione Sociale (SOLO WEBCAU) -->\r\n        <br/>\r\n        <b class=\"bTitolo\">Ricerca Mandanti:</b>\r\n\r\n        <div class=\"mandantiRicercaDiv\" style=\"display: block;\">\r\n          <label style=\"margin-top: inherit;\">Ragione Sociale:</label>\r\n          <div class=\"webcau-autocomplete\">\r\n            <ng-container class=\"webcau-autocomplete-container\">\r\n              <div class=\"mandantiRicarcaAutocomplete\">\r\n                <ng-autocomplete\r\n                  #aziendaAutocomplete\r\n                  [data]=\"ragioneSocialeList\"\r\n                  [initialValue]=\"''\"\r\n                  [minQueryLength]=\"3\"\r\n                  [placeholder]=\"'Cerca una azienda...'\"\r\n                  [searchKeyword]=\"'Value'\"\r\n                  (selected)='selectRagioneSociale($event)'\r\n                  (keydown.enter)=\"$event.preventDefault()\"\r\n                  (inputCleared)=\"onRagioneSocialeClearSearch()\"\r\n                  formControlName=\"RicercaPerRagioneSociale\"\r\n                  SinDebounceChange\r\n                  (debounceChange)=\"onRagioneSocialeSearch()\"\r\n                  [itemTemplate]=\"itemTemplate\"\r\n                  [notFoundTemplate]=\"notFoundTemplate\">\r\n                </ng-autocomplete>\r\n\r\n                <ng-container class=\"suggestions-container\">\r\n                  <ng-template #itemTemplate let-item>\r\n                    <a innerHTML=\"{{item.Value}}\"></a>\r\n                  </ng-template>\r\n                  <ng-template #notFoundTemplate>\r\n                    <div [innerHTML]=\"'Azienda non trovata'\"></div>\r\n                  </ng-template>\r\n                </ng-container>\r\n\r\n              </div>\r\n            </ng-container>\r\n            <i style=\"margin-top: auto; margin-bottom: 6px;\">* Solo Anagrafiche WebCau</i>\r\n          </div>\r\n\r\n        </div>\r\n\r\n        <div class=\"mandantiRicercaDiv\">\r\n\r\n          <!--Codice Fiscale-->\r\n          <div class=\"col-form-label\">\r\n            <label>Codice Fiscale:</label>\r\n            <input type=\"text\" formControlName=\"CodiceFiscale\" placeholder=\"Codice Fiscale...\"/>\r\n\r\n            <div *ngIf=\"ricercaForm.controls['CodiceFiscale'].invalid && ricercaForm.controls['CodiceFiscale'].touched\"\r\n                 class=\"alert alert-danger\">\r\n              <div *ngIf=\"ricercaForm.controls['CodiceFiscale'].errors.required\">\r\n                * Codice Fiscale obbligatorio\r\n              </div>\r\n              <div *ngIf=\"ricercaForm.controls['CodiceFiscale'].errors.minlength\">\r\n                * Codice Fiscale minimo 11 caratteri\r\n              </div>\r\n            </div>\r\n\r\n          </div>\r\n\r\n          <!--Tipo Azienda-->\r\n          <div class=\"col-form-label\">\r\n            <label>Tipo Azienda:</label>\r\n            <select formControlName=\"TipoAzienda\" style=\"min-height: 24px;\">\r\n              <option *ngFor=\"let t of tipoAziendaList\" [value]=\"t.Value\">{{ t.Text }}</option>\r\n            </select>\r\n\r\n            <div *ngIf=\"ricercaForm.controls['TipoAzienda'].invalid && ricercaForm.controls['TipoAzienda'].touched\"\r\n                 class=\"alert alert-danger\">\r\n              <div *ngIf=\"ricercaForm.controls['TipoAzienda'].errors.required\">\r\n                * Tipo Azienda obbligatorio\r\n              </div>\r\n            </div>\r\n\r\n          </div>\r\n\r\n          <!--Pulsanti-->\r\n          <div class=\"col-form-label\">\r\n            <button type=\"submit\" class=\"button btn-sm btn-primary button-corner-all\" (click)=\"cercaAzienda()\"\r\n                    *ngIf=\"ricercaForm.controls['CodiceFiscale'].value !== this.CFNotFind\">\r\n              Cerca\r\n            </button>\r\n            <button type=\"submit\" class=\"button btn-sm btn-warning button-corner-all\" (click)=\"cercaAzienda()\"\r\n                    *ngIf=\"ricercaForm.controls['CodiceFiscale'].value === this.CFNotFind\"\r\n                    [disabled]=\"true\">\r\n              Cerca\r\n            </button>\r\n          </div>\r\n\r\n        </div>\r\n\r\n        <!--Campi censimento Azienda-->\r\n        <div class=\"mandantiRicercaDiv\"\r\n             *ngIf=\"campiCensimentoAziendaVisible()\"\r\n        >\r\n\r\n          <div class=\"col-form-label\">\r\n            <label>Telefono:</label>\r\n            <input type=\"text\" formControlName=\"Telefono\" placeholder=\"Telefono...\"/>\r\n          </div>\r\n\r\n          <div class=\"col-form-label\">\r\n            <label>Mail:</label>\r\n            <input type=\"text\" formControlName=\"Mail\" placeholder=\"Mail...\"/>\r\n          </div>\r\n\r\n          <div class=\"col-form-label\">\r\n            <label>PEC:</label>\r\n            <input type=\"text\" formControlName=\"PEC\" placeholder=\"PEC...\"/>\r\n          </div>\r\n\r\n          <div class=\"col-form-label\">\r\n            <button type=\"submit\" class=\"button btn-sm btn-primary button-corner-all\" (click)=\"censimentoAzienda()\">\r\n              Censisci Azienda\r\n            </button>\r\n            <button type=\"submit\" class=\"button btn-sm btn-primary button-corner-all\"\r\n                    *ngIf=\"aperturaInserimentoAziendaVisible()\"\r\n                    (click)=\"finestraNuovaAzienda()\">Apri Inserimento Azienda\r\n            </button>\r\n          </div>\r\n\r\n        </div>\r\n\r\n      </form>\r\n\r\n      <!--Quota Capogruppo-->\r\n      <form [formGroup]=\"mandantiForm\" novalidate>\r\n\r\n        <b class=\"bTitolo\">Capogruppo:</b>\r\n        <div class=\"mandantiRicercaForm mandantiRicercaDiv\" style=\"padding: 5px;\">\r\n          <label style=\"margin-top: inherit;\">Quota della Capogruppo:</label>\r\n          <input\r\n            formControlName=\"QuotaCapogruppo\"\r\n            SinPercentage\r\n            [noDecimals]=\"false\"\r\n            [hidePercentage]=\"false\"\r\n            SinAllowInput\r\n            [allowNumber]=\"true\"\r\n            [allowSpecialCharacter]=\"','\"\r\n            (focusout)=\"quotaCapogruppoModificata()\"\r\n            class=\"input-filter form-control mr-0 pr-0 webcau-yellow-border-1\"\r\n            style=\"width: 100px; text-align:center;\"\r\n            [tabindex]=\"0\"\r\n            required\r\n          />\r\n        </div>\r\n        <div>\r\n          <b class=\"bTitolo\" style=\"color: red;\" *ngIf=\"mandantiForm.controls.QuotaCapogruppo.valid === false\">* Quota\r\n            capogruppo non valida</b>\r\n        </div>\r\n\r\n        <br/>\r\n        <b class=\"bTitolo\">Elenco Mandanti:</b>\r\n\r\n        <div class=\"table-responsive mandantiForm mandantiRicercaDiv\">\r\n          <table class=\"table webcau-table-striped\" style=\"margin-bottom: 0px;\">\r\n            <thead>\r\n            <tr>\r\n              <th scope=\"col\" class=\"text-center\">Codice Azienda</th>\r\n              <th scope=\"col\" class=\"text-center\">Ragione Sociale</th>\r\n              <th scope=\"col\" class=\"text-center\">Codice Fiscale</th>\r\n              <th scope=\"col\" class=\"text-right\">Tipo Azienda</th>\r\n              <th scope=\"col\" class=\"text-right\">Stato</th>\r\n              <th scope=\"col\" class=\"text-right\">Quota</th>\r\n              <th scope=\"col\" class=\"text-left\"></th>\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n            <tr *ngFor=\"let m of mandantiFormArray.controls; let i = index;\" formGroupName=\"mandantiList\">\r\n              <td class=\"text-center\">{{ m.get('ID_Azienda')?.value }}</td>\r\n              <td class=\"text-center\">{{ m.get('AZ_RagSoc')?.value }}</td>\r\n              <td class=\"text-center\">{{ m.get('AZ_CodFisc')?.value }}</td>\r\n              <td class=\"text-center\">{{ getTipoDittaString(m.get('AZ_DittaInd')?.value) }}</td>\r\n              <td class=\"text-center\">{{ m.get('Attivo')?.value === false ? 'Non Attivo' : 'Attivo' }}</td>\r\n              <td class=\"text-center\">\r\n                <input\r\n                  [formControl]=\"m.controls.Quota\"\r\n                  SinPercentage\r\n                  [noDecimals]=\"false\"\r\n                  [hidePercentage]=\"false\"\r\n                  SinAllowInput\r\n                  [allowNumber]=\"true\"\r\n                  [allowSpecialCharacter]=\"','\"\r\n                  (focusout)=\"modificaEffettuata()\"\r\n                  class=\"input-filter form-control mr-0 pr-0 webcau-yellow-border-1\"\r\n                  style=\"width: 100px; text-align:center;\"\r\n                  [tabindex]=\"0\"\r\n                  required\r\n                />\r\n              </td>\r\n              <td class=\"text-right\">\r\n                <button type=\"button\" class=\"button btn-sm btn-danger button-corner-all\"\r\n                        *ngIf=\"m.get('Attivo')?.value === true\" (click)=\"deleteMandante(m)\">Rimuovi\r\n                </button>\r\n              </td>\r\n            </tr>\r\n            </tbody>\r\n          </table>\r\n        </div>\r\n      </form>\r\n\r\n      <div>\r\n        <b class=\"bTitolo\" style=\"color: red;\" *ngIf=\"mandantiFormArray.valid === false\">* La Somma delle Quote compresa\r\n          la Capogruppo deve essere 100%</b>\r\n      </div>\r\n\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .mandantiRicercaForm {\r\n      max-width: 1200px;\r\n    }\r\n\r\n    .mandantiRicarcaAutocomplete {\r\n      min-width: 520px;\r\n      margin: 5px;\r\n    }\r\n\r\n    .webcau-autocomplete-container {\r\n      margin-top: 5px;\r\n      margin-bottom: 5px;\r\n    }\r\n\r\n    .webcau-autocomplete {\r\n      display: flex;\r\n    }\r\n\r\n    .mandantiRicercaDiv {\r\n      display: flex;\r\n      margin: 10px 0px;\r\n      border: 1px solid #FFB517 !important;\r\n      border-radius: 2px;\r\n      background-color: #F2F2F2;\r\n    }\r\n\r\n    .mandantiRicercaDiv label {\r\n      margin-left: 10px;\r\n      margin-right: 10px;\r\n    }\r\n\r\n    .mandantiRicercaDiv button {\r\n      margin-left: 20px;\r\n    }\r\n\r\n    .mandantiForm {\r\n      max-width: 1200px;\r\n    }\r\n\r\n    .alert-danger {\r\n      margin: 2px;\r\n      padding: 5px;\r\n    }\r\n\r\n  `]\r\n})\r\nexport class WebcauAtiMandantiComponent implements AfterViewInit {\r\n\r\n  ready = false;\r\n  CFNotFind = '';\r\n  cercaAzienda_InCorso = false;\r\n  aziendaNonCensita: boolean = false;\r\n\r\n  // Input\r\n  @Input() debugLocal = false;\r\n  @Input() tipoUtente = 1; // Default Agenzia\r\n  @Input() eventMode = false;\r\n\r\n  @Input() set quotaCapogruppo(value: number) {\r\n    if (value !== undefined && value !== null) {\r\n      setTimeout(() => {\r\n        this._quotaCapogruppo = value;\r\n        this.resetMandantiArrayValidators();\r\n      });\r\n    }\r\n  }\r\n\r\n  @Input() set mandantiList(value: Mandante[]) {\r\n    if (value !== undefined && value !== null) {\r\n      setTimeout(() => {\r\n        this._mandantiDefList = [...value];\r\n        this._mandantiList = [...value];\r\n        this.initForms();\r\n        this.ricercaForm.reset();\r\n      });\r\n    }\r\n  }\r\n\r\n  // Output\r\n  @Output() quotaCapogruppoEdited: EventEmitter<number> = new EventEmitter<number>();\r\n  @Output() mandantiListEdited: EventEmitter<Mandante[]> = new EventEmitter<Mandante[]>();\r\n\r\n  // Private\r\n  private _mandantiDefList: Mandante[] = [] as Mandante[];\r\n  private _mandantiList: Mandante[] = [] as Mandante[];\r\n  private _quotaCapogruppo = 0;\r\n\r\n  // Forms\r\n  ricercaForm: FormGroup;\r\n  mandantiForm: FormGroup;\r\n  mandantiFormArray: FormArray;\r\n\r\n  // Ricerca\r\n  @ViewChild('aziendaAutocomplete') aziendaAutocomplete;\r\n  ragioneSocialeList: { Value: string }[] = [];\r\n  ragioneSocialeCompleteList = [];\r\n  tipoAziendaList = [\r\n    {Value: null, Text: 'Seleziona...'},\r\n    {Value: 'F', Text: 'Persona Fisica'},\r\n    {Value: 'S', Text: 'Ditta Individuale'},\r\n    {Value: 'N', Text: 'Persona Giuridica'},\r\n  ];\r\n\r\n  constructor(private formBuilder: FormBuilder,\r\n              public us: UtilityService,\r\n              private http: HttpClient) {\r\n    // Inizializzo Form di Ricerca\r\n    this.ricercaForm = this.formBuilder.group({\r\n      RagioneSociale: [''],\r\n      RicercaPerRagioneSociale: [''],\r\n      CodiceFiscale: ['', Validators.compose([Validators.required, Validators.minLength(11)])],\r\n      TipoAzienda: [null, Validators.required],\r\n      Telefono: [null],\r\n      Mail: [null],\r\n      PEC: [null],\r\n    });\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      if (!this.ready) {\r\n        //console.log('WebcauAtiMandantiComponent: Nessuna lista di Mandanti passata');\r\n        this.initForms();\r\n      }\r\n    }, 500);\r\n  }\r\n\r\n  initForms() {\r\n    // Reset form principale\r\n    this.ready = false;\r\n\r\n    // Valori Percentuali => Setto in un secondo momento per sfruttare il SinPercentage\r\n    setTimeout(() => {\r\n\r\n      // Setup Form Array mandanti\r\n      this.mandantiFormArray = this.formBuilder.array(\r\n        this._mandantiList.map(m => this.formBuilder.group(\r\n          {\r\n            ID: [m.ID],\r\n            ID_AziendaATI: [m.ID_AziendaATI],\r\n            ID_Azienda: [m.ID_Azienda],\r\n            Attivo: [m.Attivo],\r\n            Quota: [m.Quota, Validators.compose([Validators.required, Validators.min(0.001), Validators.max(1)])],\r\n            DataInserimento: [m.DataInserimento],\r\n            UtenteInserimento: [m.UtenteInserimento],\r\n            DataModifica: [m.DataModifica],\r\n            UtenteModifica: [m.UtenteModifica],\r\n\r\n            AZ_RagSoc: [m.AZ_RagSoc],\r\n            AZ_CodFisc: [m.AZ_CodFisc],\r\n            AZ_DittaInd: [m.AZ_DittaInd]\r\n          }\r\n        )));\r\n\r\n      // Setup Form\r\n      this.mandantiForm = this.formBuilder.group({\r\n        QuotaCapogruppo: [this._quotaCapogruppo, Validators.compose([Validators.required, Validators.min(0.001), Validators.max(1)])],\r\n        mandantiList: this.mandantiFormArray\r\n      });\r\n\r\n      // Componente pronto\r\n      this.ready = true;\r\n\r\n      setTimeout(() => {\r\n        this.mandantiFormArray.controls.forEach(x => {\r\n          x.get('Quota').setValue(x.get('Quota').value);\r\n          x.get('Quota').updateValueAndValidity();\r\n        });\r\n\r\n        this.mandantiForm.get('QuotaCapogruppo').setValue(this._quotaCapogruppo);\r\n        this.mandantiForm.get('QuotaCapogruppo').updateValueAndValidity();\r\n\r\n        // Set Validatori Array Mandanti\r\n        this.resetMandantiArrayValidators();\r\n\r\n      }, 100);\r\n\r\n    });\r\n\r\n  }\r\n\r\n  resetMandantiArrayValidators(): void {\r\n    if (this.mandantiFormArray) {\r\n      this.mandantiFormArray.clearValidators();\r\n      // Validazione 100%\r\n      const comparisonValue = Number(((1 - this._quotaCapogruppo)).toFixed(3));\r\n      this.mandantiFormArray.addValidators([\r\n        this.us.formArraySommaConfrontaNumero('Quota', comparisonValue, '!==', 3)\r\n      ]);\r\n      this.mandantiForm.updateValueAndValidity();\r\n      this.mandantiFormArray.updateValueAndValidity();\r\n    }\r\n  }\r\n\r\n  // Funzionalità\r\n  cercaAzienda(): void {\r\n    if (this.cercaAzienda_InCorso) {\r\n      return;\r\n    }\r\n\r\n    if (this.ricercaForm.invalid) {\r\n      this.ricercaForm.markAllAsTouched();\r\n      return;\r\n    }\r\n\r\n    this.aziendaNonCensita = false;\r\n\r\n    // Ricerca\r\n    const cf = this.ricercaForm.get('CodiceFiscale')?.value;\r\n    const ta = this.ricercaForm.get('TipoAzienda')?.value;\r\n\r\n    const params = {\r\n      CodiceFiscale: cf,\r\n      TipoAzienda: ta,\r\n      CensisciAzienda: false,\r\n    };\r\n\r\n    this.cercaAzienda_InCorso = true;\r\n    const uri = '/WebRest/app/AppAziendaService.svc/azienda_search_insert';\r\n\r\n    this.http.post<any>(uri, params).subscribe({\r\n      next: (data) => {\r\n        this.cercaAzienda_InCorso = false;\r\n\r\n        this.ricercaForm.get('Telefono')?.setValue('');\r\n        this.ricercaForm.get('Mail')?.setValue('');\r\n        this.ricercaForm.get('PEC')?.setValue('');\r\n\r\n        if (data && data.AziendaId && data.AziendaId > 0) {\r\n          const newMandante = {\r\n            ID: null,\r\n            ID_Azienda: data.AziendaId,\r\n            AZ_RagSoc: data.RagioneSociale,\r\n            AZ_CodFisc: data.CodiceFiscale,\r\n            AZ_DittaInd: data.TipoAzienda,\r\n            Attivo: true,\r\n            Quota: 0,\r\n          } as Mandante;\r\n\r\n          this.insertMandante(newMandante);\r\n          this.ricercaForm.reset();\r\n          this.CFNotFind = '';\r\n        } else {\r\n          this.CFNotFind = cf;\r\n          alert('Azienda non trovata! E\\' possibile censire la nuova anagrafica popolando i dati obbligatori e premendo il pulsante \"Censisci Azienda\".');\r\n        }\r\n      }, error: (error) => {\r\n        this.cercaAzienda_InCorso = false;\r\n        this.CFNotFind = cf;\r\n        if (!!(error?.error?.error_msg)) {\r\n          alert(error.error.error_msg);\r\n        } else {\r\n          alert('Ricerca fallita!');\r\n        }\r\n\r\n      }\r\n    })\r\n  }\r\n\r\n  censimentoAzienda(): void {\r\n    if (this.cercaAzienda_InCorso) {\r\n      return;\r\n    }\r\n\r\n    if (this.ricercaForm.invalid) {\r\n      this.ricercaForm.markAllAsTouched();\r\n      return;\r\n    }\r\n\r\n    this.aziendaNonCensita = false;\r\n\r\n    // Ricerca\r\n    const cf = this.ricercaForm.get('CodiceFiscale')?.value;\r\n    const ta = this.ricercaForm.get('TipoAzienda')?.value;\r\n    // console.log('Ricerca Azienda \"' + cf + '\" (' + ta + ')');\r\n    const telefono = this.ricercaForm.get('Telefono')?.value;\r\n    const mail = this.ricercaForm.get('Mail')?.value;\r\n    const pec = this.ricercaForm.get('PEC')?.value;\r\n\r\n    const params = {\r\n      CodiceFiscale: cf,\r\n      TipoAzienda: ta,\r\n      CensisciAzienda: true,\r\n      Telefono: telefono,\r\n      Mail: mail,\r\n      PEC: pec,\r\n    };\r\n\r\n    this.cercaAzienda_InCorso = true;\r\n    const uri = '/WebRest/app/AppAziendaService.svc/azienda_search_insert';\r\n\r\n    this.http.post<any>(uri, params).subscribe({\r\n      next: (data) => {\r\n        this.cercaAzienda_InCorso = false;\r\n\r\n        this.ricercaForm.get('Telefono')?.setValue('');\r\n        this.ricercaForm.get('Mail')?.setValue('');\r\n        this.ricercaForm.get('PEC')?.setValue('');\r\n\r\n        if (data && data.AziendaId && data.AziendaId > 0) {\r\n          const newMandante = {\r\n            ID: null,\r\n            ID_Azienda: data.AziendaId,\r\n            AZ_RagSoc: data.RagioneSociale,\r\n            AZ_CodFisc: data.CodiceFiscale,\r\n            AZ_DittaInd: data.TipoAzienda,\r\n            Attivo: true,\r\n            Quota: 0,\r\n          } as Mandante;\r\n\r\n          this.insertMandante(newMandante);\r\n          this.ricercaForm.reset();\r\n          this.CFNotFind = '';\r\n        } else {\r\n          this.CFNotFind = cf;\r\n          this.aziendaNonCensita = true;\r\n\r\n          if (this.tipoUtente < 2) {\r\n            alert('Azienda non trovata! E\\' possibile censire la nuova anagrafica tramite il pulsante \"Apri Inserimento Azienda\".');\r\n          } else {\r\n            alert('Azienda non trovata! Sarà necessario censire la nuova anagrafica manualmente.');\r\n          }\r\n        }\r\n      }, error: (error) => {\r\n        this.cercaAzienda_InCorso = false;\r\n        this.CFNotFind = cf;\r\n\r\n        if (this.tipoUtente >= 2) {\r\n\r\n          if (!!(error?.error?.error_msg)) {\r\n            alert(error.error.error_msg + ' Altrimenti e\\' possibile censire la nuova anagrafica tramite il pulsante \"Apri Inserimento Azienda\".');\r\n          } else {\r\n            alert('Ricerca fallita! Altrimenti e\\' possibile censire la nuova anagrafica tramite il pulsante \"Apri Inserimento Azienda\".');\r\n          }\r\n        } else {\r\n          if (!!(error?.error?.error_msg)) {\r\n            alert(error.error.error_msg + ' Potrebbe essere necessario censire la nuova anagrafica da \"Inserimento Azienda\"');\r\n          } else {\r\n            alert('Censimento fallito! Potrebbe essere necessario censire la nuova anagrafica da \"Inserimento Azienda\"');\r\n          }\r\n        }\r\n\r\n        this.aziendaNonCensita = true;\r\n\r\n      }\r\n    })\r\n  }\r\n\r\n\r\n  quotaCapogruppoModificata(): void {\r\n    if (this.mandantiForm.get('QuotaCapogruppo').valid) {\r\n      this._quotaCapogruppo = this.mandantiForm.get('QuotaCapogruppo').value;\r\n      this.resetMandantiArrayValidators();\r\n      this.quotaCapogruppoEdited.emit(this._quotaCapogruppo);\r\n      this.modificaEffettuata();\r\n    }\r\n  }\r\n\r\n  insertMandante(m: Mandante): void {\r\n    // Aggiunta logica nel componente\r\n    this._mandantiList.push(m);\r\n    this.initForms();\r\n\r\n    this.modificaEffettuata();\r\n  }\r\n\r\n  deleteMandante(control: AbstractControl): void {\r\n    const delMandante = this.controlToMandante(control);\r\n\r\n    // Rimozione logica nel componente\r\n    this._mandantiList = [...this._mandantiList.filter(m => m.ID_Azienda !== delMandante.ID_Azienda)];\r\n    this.initForms();\r\n\r\n    this.modificaEffettuata();\r\n  }\r\n\r\n  modificaEffettuata(): void {\r\n    setTimeout(() => {\r\n      if (this.mandantiForm.valid) {\r\n        //console.log('Modifica Effettuata! ' + JSON.stringify(this.mandantiFormArray.value));\r\n        this.mandantiListEdited.emit(this.mandantiFormArray.value); // Emetto evento list\r\n        if (!this.eventMode) {\r\n          this._mandantiList = this.mandantiFormArray.value;\r\n          this._mandantiDefList = this.mandantiFormArray.value;\r\n        }\r\n      } else {\r\n        //console.log('Mandanti non valide => RESET!');\r\n        this.mandantiListEdited.emit(null); // Reset lista esterna\r\n      }\r\n    }, 200);\r\n  }\r\n\r\n  public finestraNuovaAzienda(): void {\r\n    this.CFNotFind = ''; // Resetto\r\n    this.aziendaNonCensita = false;\r\n\r\n    let url = '/Cauzioni/Agente/Azienda/AgeAziendaInserimento.asp';\r\n    if (this.tipoUtente === 0) {\r\n      url = '/Cauzioni/Cliente/Azienda/CliAziendaInserimento.asp';\r\n    } else if (this.tipoUtente === 2) {\r\n      return;\r\n    }\r\n\r\n    const finestra = window.open((this.debugLocal ? 'http://elba.local/' : '') + url + `?show_menu=false&modal=y`,\r\n      'Inserisci Nuova Azienda',\r\n      'toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=1200,height=600');\r\n\r\n    finestra.focus();\r\n\r\n    finestra.onbeforeunload = () => {\r\n      setTimeout(() => {\r\n        this.cercaAzienda(); // Ritento ricerca\r\n        return;\r\n      }, 500);\r\n    }\r\n  }\r\n\r\n  // Utility\r\n  controlToMandante(control: AbstractControl): Mandante {\r\n    return {\r\n      ID: control.get('ID')?.value,\r\n      ID_AziendaATI: control.get('ID_AziendaATI')?.value,\r\n      ID_Azienda: control.get('ID_Azienda')?.value,\r\n      Attivo: control.get('Attivo')?.value,\r\n      Quota: control.get('Quota')?.value,\r\n      UtenteInserimento: control.get('UtenteInserimento')?.value,\r\n      DataInserimento: control.get('DataInserimento')?.value,\r\n      UtenteModifica: control.get('UtenteModifica')?.value\r\n    } as Mandante;\r\n  }\r\n\r\n  getTipoDittaString(dittaInd: string): string {\r\n    const res = this.tipoAziendaList.find(t => t.Value === dittaInd);\r\n    if (!res) {\r\n      return 'N.D.';\r\n    }\r\n    return res.Text;\r\n  }\r\n\r\n  // Ricerca Autocomplete\r\n\r\n  selectRagioneSociale(item: { Value: string }) {\r\n    //console.log(this.ragioneSocialeCompleteList);\r\n    const aziendaId = this.ragioneSocialeCompleteList.find((x) => x.valuestr === item.Value)?.code;\r\n    if (aziendaId) {\r\n      const uri = `/WebRest/app/AppAziendaService.svc/azienda_complete_get/${aziendaId}`;\r\n\r\n      fetch(uri, {\r\n        method: 'GET',\r\n        headers: {\r\n          'Content-Type': 'application/json',\r\n        }\r\n      })\r\n        .then(response => {\r\n          if (!response.ok) {\r\n            console.error(response);\r\n          }\r\n          return response.json();\r\n        })\r\n        .then((data: any) => {\r\n          if (data) {\r\n\r\n            const newMandante = {\r\n              ID: null,\r\n              ID_Azienda: data.AziendaId,\r\n              AZ_RagSoc: data.RagioneSociale,\r\n              AZ_CodFisc: data.CodiceFiscale,\r\n              AZ_DittaInd: data.TipoAzienda,\r\n              Attivo: true,\r\n              Quota: 0\r\n            } as Mandante;\r\n\r\n            this.insertMandante(newMandante);\r\n            this.onRagioneSocialeClearSearch();\r\n            // this.aziendaList.push(data);\r\n            // this.aziendaSearchForm.controls.TipoAzienda.patchValue(data.TipoAzienda);\r\n            // this.selectAziendaCommon(data);\r\n          }\r\n        })\r\n        .catch(error => {\r\n\r\n          // Test Sinnova\r\n          if (this.debugLocal) {\r\n            const data = JSON.parse('{\"AgenzieCollegamentiList\":[{\"AgenziaId\":\"999\",\"AziendaId\":11325,\"CodiceCliente\":null,\"InserimentoData\":\"2022-01-01T00:00:00+01:00\",\"InserimentoUtenteId\":22,\"ModificaData\":\"2022-01-01T00:00:00+01:00\",\"ModificaUtenteId\":22}],\"AltriSistemi\":\"N\",\"AziendaFidoStatoDescrizioneCalcolato\":null,\"AziendaId\":11325,\"CAP\":\"50019\",\"CittaEstera\":\"SESTO FIORENTINO\",\"CodiceATI\":0,\"CodiceFiscale\":\"06405180487\",\"Comune\":\"SESTO FIORENTINO\",\"ComuneId\":6871,\"ConsensoTrattamentoDatiPersonali\":true,\"ContattoTipo\":0,\"CribisAttivitaStato\":null,\"CribisAttivitaStatoData\":null,\"DocumentoRiconoscimento\":{\"DataProcura\":null,\"DataRilascio\":\"2022-07-12T00:00:00+02:00\",\"EnteRilascio\":\"Comune di Milano\",\"EstremiProcura\":null,\"NumeroDocumento\":\"AGhjEHGfh\",\"TipoDocumento\":null,\"TipoDocumentoID\":1},\"EsitoCribis\":\"S\",\"FidoDataFine\":null,\"FidoDataInizio\":null,\"FidoStatoDescrizione\":\"Attivo\",\"FidoStatoId\":1,\"FirmaDigitalePresente\":true,\"FormaGiuridicaSottoTipo\":null,\"ForzaturaData\":null,\"ForzaturaUtenteId\":null,\"Indirizzo\":\"VIA LUCCHESE 84\\\\/B terzo piano\",\"IndirizzoEmail\":\"webcau@sinnovasistemi.it\",\"IndirizzoEmailPEC\":\"pec1234@sinnovasistemi.it\",\"IntestatarioCognome\":null,\"IntestatarioNome\":null,\"IsEstera\":false,\"IsUtilizzataComeCoobbligato\":true,\"ModalitaComunicazione\":2,\"ModificaData\":\"2022-09-06T16:12:45+02:00\",\"ModificaUtenteId\":22,\"MonitoraggioPrevisto\":false,\"MonitoraggioStato\":null,\"MonitoraggioStatoData\":null,\"MotivazioneInterruzione\":null,\"NazioneId\":201,\"NumeroTelefonico\":\"05553246001\",\"NumeroTelefonicoSecondario\":\"\",\"ParentId\":11325,\"PartitaIVA\":\"06405180487\",\"Provincia\":\"FI\",\"RagioneSociale\":\"SINNOVA SRL\",\"StatoAttivita\":\"S\",\"Status\":\"A\",\"TipoAzienda\":\"N\",\"TipoAziendaDescr\":null,\"UtenteInterruzione\":null,\"Visto\":\"S\"}');\r\n            const newMandante = {\r\n              ID: null,\r\n              ID_Azienda: data.AziendaId,\r\n              AZ_RagSoc: data.RagioneSociale,\r\n              AZ_CodFisc: data.CodiceFiscale,\r\n              AZ_DittaInd: data.TipoAzienda,\r\n              Attivo: true,\r\n              Quota: 0\r\n            } as Mandante;\r\n\r\n            this.insertMandante(newMandante);\r\n            this.onRagioneSocialeClearSearch();\r\n          }\r\n\r\n          console.log('Errore chiamata \"azienda_complete_get\" = ' + error.toString());\r\n        });\r\n    }\r\n  }\r\n\r\n  onRagioneSocialeSearch() {\r\n    const search = this.ricercaForm.get(\"RicercaPerRagioneSociale\")?.value;\r\n    if (!search) return;\r\n\r\n    const params = {\r\n      AgenziaID: '',\r\n      RagioneSociale: search ?? '',\r\n      NumeroMassimoRisultati: 10,\r\n      VersioneUI: 2,\r\n      EscludiAlContenzioso: true\r\n    };\r\n\r\n\r\n    const uri = `/WebRest/app/AppAziendaService.svc/azienda_ragione_sociale_search_by_substring`;\r\n\r\n    fetch(uri, {\r\n      method: 'POST',\r\n      headers: {\r\n        'Content-Type': 'application/json',\r\n      },\r\n      body: JSON.stringify(params)\r\n    })\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          console.error(response);\r\n        }\r\n        return response.json();\r\n      })\r\n      .then((data: any[]) => {\r\n        if (data) {\r\n          this.ragioneSocialeCompleteList = [...data];\r\n          this.ragioneSocialeList = data.map((a) => {\r\n            {\r\n              return {Value: a.valuestr};\r\n            }\r\n          });\r\n        }\r\n      })\r\n      .catch(error => {\r\n        this.ragioneSocialeCompleteList = [];\r\n        this.ragioneSocialeList = [];\r\n        console.log(error);\r\n\r\n        // Test Sinnova\r\n        if (this.debugLocal) {\r\n          this.ragioneSocialeCompleteList = JSON.parse('[{\"code\":11717,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"FARMACIA PERTUSINI SNC DI PERTUSINI FEDERICO & C. - (Persona Giuridica)\"},{\"code\":11916,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"FASSINA SPA - (Persona Giuridica)\"},{\"code\":11542,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"IMPRESA MASINI SRL - (Persona Giuridica)\"},{\"code\":11596,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"MARCHESINA SRL - (Persona Giuridica)\"},{\"code\":11671,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"SINGH PARWINDER - (Persona Fisica)\"},{\"code\":11325,\"msg\":null,\"value\":null,\"valuedec\":null,\"valuestr\":\"SINNOVA SRL - (Persona Giuridica)\"}]');\r\n          this.ragioneSocialeList = this.ragioneSocialeCompleteList.map((a) => {\r\n            {\r\n              return {Value: a.valuestr};\r\n            }\r\n          });\r\n        }\r\n      });\r\n\r\n  }\r\n\r\n  onRagioneSocialeClearSearch() {\r\n    this.aziendaAutocomplete.query = '';\r\n    this.aziendaAutocomplete.close();\r\n    this.ragioneSocialeList = [];\r\n    // this.aziendaList = [];\r\n    // this.aziendaSearchForm.controls.AziendaID.patchValue(null);\r\n    // this.aziendaSearchForm.controls.CodiceFiscale.patchValue(null);\r\n    // this.aziendaSearchForm.controls.PartitaIVA.patchValue(null);\r\n    // this.aziendaSearchForm.controls.RagioneSociale.patchValue(null);\r\n    // this.aziendaSearchForm.controls.TipoAzienda.patchValue(null);\r\n  }\r\n\r\n  public aperturaInserimentoAziendaVisible(): boolean {\r\n    return this.tipoUtente !== 2 && this.aziendaNonCensita && this.isCodiceFiscaleNonTrovato();\r\n  }\r\n\r\n  public campiCensimentoAziendaVisible(): boolean {\r\n    return this.isCodiceFiscaleNonTrovato();\r\n  }\r\n\r\n  public isCodiceFiscaleNonTrovato(): boolean {\r\n    return this.CFNotFind.length > 0 && this.ricercaForm.controls['CodiceFiscale'].value === this.CFNotFind;\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {WebcauFileListComponent} from './components/webcau-file-list.component';\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\r\nimport {CommonModule, DecimalPipe, PercentPipe} from '@angular/common';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {WebcauSelectComponent} from './components/webcau-select.component';\r\nimport {SinPipesModule} from 'sin-pipes';\r\nimport {SinDirectivesModule} from 'sin-directives';\r\nimport {SinUiModule} from 'sin-ui';\r\nimport { WebcauProvvigioniForzateComponent } from './components/webcau-provvigioni-forzate.component';\r\nimport {WebcauAllegatiComponent} from './components/webcau-allegati/webcau-allegati.component';\r\nimport { WebcauAllegatiModalTestoComponent } from './components/webcau-allegati/webcau-allegati-modal-testo/webcau-allegati-modal-testo.component';\r\nimport {WebcauAllegatiModalCoobbligatiComponent} from './components/webcau-allegati/webcau-allegati-modal-coobbligati/webcau-allegati-modal-coobbligati.component';\r\nimport { WebcauCoobbligatiComponent } from './components/webcau-coobbligati.component';\r\nimport { WebcauPartiteComponent } from './components/webcau-partite/webcau-partite.component';\r\nimport { WebcauAtiMandantiComponent } from './components/webcau-ati-mandanti/webcau-ati-mandanti.component';\r\nimport {AutocompleteLibModule} from 'angular-ng-autocomplete';\r\nimport { WebcauAllegatiModalAllegatoCComponent } from './components/webcau-allegati/webcau-allegati-modal-allegato-c/webcau-allegati-modal-allegato-c.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    WebcauFileListComponent,\r\n    WebcauSelectComponent,\r\n    WebcauProvvigioniForzateComponent,\r\n    WebcauAllegatiComponent,\r\n    WebcauAllegatiModalTestoComponent,\r\n    WebcauAllegatiModalCoobbligatiComponent,\r\n    WebcauCoobbligatiComponent,\r\n    WebcauPartiteComponent,\r\n    WebcauAtiMandantiComponent,\r\n    WebcauAllegatiModalAllegatoCComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FontAwesomeModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    SinPipesModule,\r\n    SinDirectivesModule,\r\n    SinUiModule,\r\n    AutocompleteLibModule\r\n  ],\r\n  exports: [\r\n    WebcauFileListComponent,\r\n    WebcauSelectComponent,\r\n    WebcauProvvigioniForzateComponent,\r\n    WebcauAllegatiComponent,\r\n    WebcauCoobbligatiComponent,\r\n    WebcauPartiteComponent,\r\n    WebcauAtiMandantiComponent\r\n  ],\r\n  providers: [\r\n    DecimalPipe,\r\n    PercentPipe,\r\n    SinPipesModule\r\n  ]\r\n})\r\nexport class SinWcModule {\r\n}\r\n","/*\r\n * Public API Surface of sin-wc\r\n */\r\n\r\nexport * from './lib/sin-wc.module';\r\n\r\n\r\nexport {WebcauFileListComponent} from './lib/components/webcau-file-list.component';\r\nexport {WebcauAllegatiComponent} from './lib/components/webcau-allegati/webcau-allegati.component';\r\nexport {WebcauSelectComponent} from './lib/components/webcau-select.component';\r\nexport {WebcauProvvigioniForzateComponent} from './lib/components/webcau-provvigioni-forzate.component';\r\nexport {WebcauCoobbligatiComponent} from './lib/components/webcau-coobbligati.component';\r\nexport {WebcauPartiteComponent} from './lib/components/webcau-partite/webcau-partite.component';\r\nexport {WebcauAtiMandantiComponent} from './lib/components/webcau-ati-mandanti/webcau-ati-mandanti.component';\r\n\r\nexport * from './lib/components/webcau-file-list.component';\r\nexport * from './lib/components/webcau-allegati/webcau-allegati.component';\r\nexport * from './lib/components/webcau-select.component';\r\nexport * from './lib/components/webcau-provvigioni-forzate.component';\r\nexport * from './lib/components/webcau-coobbligati.component';\r\nexport * from './lib/components/webcau-partite/webcau-partite.component';\r\nexport * from './lib/components/webcau-ati-mandanti/webcau-ati-mandanti.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}