@hitsoft/fbdocumentflow 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/config/enums/index.d.ts +1 -0
- package/config/enums/route-names.d.ts +3 -0
- package/config/fbdocumentflow-config.module.d.ts +8 -0
- package/config/index.d.ts +5 -0
- package/config/providers/document-scenario-route.provider.d.ts +9 -0
- package/config/providers/document-transfer-route.provider.d.ts +9 -0
- package/config/providers/index.d.ts +6 -0
- package/config/providers/partner-mapping-route.provider.d.ts +9 -0
- package/config/providers/project-parameter-route.provider.d.ts +9 -0
- package/config/providers/route.provider.d.ts +8 -0
- package/config/providers/sap-company-profile-route.provider.d.ts +9 -0
- package/config/public-api.d.ts +3 -0
- package/esm2020/config/enums/index.mjs +2 -0
- package/esm2020/config/enums/route-names.mjs +2 -0
- package/esm2020/config/fbdocumentflow-config.module.mjs +30 -0
- package/esm2020/config/hitsoft-fbdocumentflow-config.mjs +5 -0
- package/esm2020/config/providers/document-scenario-route.provider.mjs +20 -0
- package/esm2020/config/providers/document-transfer-route.provider.mjs +20 -0
- package/esm2020/config/providers/index.mjs +7 -0
- package/esm2020/config/providers/partner-mapping-route.provider.mjs +20 -0
- package/esm2020/config/providers/project-parameter-route.provider.mjs +20 -0
- package/esm2020/config/providers/route.provider.mjs +24 -0
- package/esm2020/config/providers/sap-company-profile-route.provider.mjs +20 -0
- package/esm2020/config/public-api.mjs +4 -0
- package/esm2020/hitsoft-fbdocumentflow.mjs +5 -0
- package/esm2020/lib/components/fbdocumentflow.component.mjs +42 -0
- package/esm2020/lib/components/hit-document-scenarios/components/hit-document-scenario.component.mjs +151 -0
- package/esm2020/lib/components/hit-document-scenarios/hit-document-scenario-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-document-scenarios/hit-document-scenario.module.mjs +24 -0
- package/esm2020/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.mjs +474 -0
- package/esm2020/lib/components/hit-document-transfers/components/hit-document-transfer.component.mjs +241 -0
- package/esm2020/lib/components/hit-document-transfers/hit-document-transfer-routing.module.mjs +33 -0
- package/esm2020/lib/components/hit-document-transfers/hit-document-transfer.module.mjs +25 -0
- package/esm2020/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.mjs +115 -0
- package/esm2020/lib/components/hit-partner-mappings/hit-partner-mapping-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-partner-mappings/hit-partner-mapping.module.mjs +24 -0
- package/esm2020/lib/components/hit-project-parameters/components/hit-project-parameter.component.mjs +125 -0
- package/esm2020/lib/components/hit-project-parameters/hit-project-parameter-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-project-parameters/hit-project-parameter.module.mjs +24 -0
- package/esm2020/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.mjs +88 -0
- package/esm2020/lib/components/hit-sap-company-profiles/hit-sap-company-profile-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-sap-company-profiles/hit-sap-company-profile.module.mjs +24 -0
- package/esm2020/lib/fbdocumentflow-routing.module.mjs +35 -0
- package/esm2020/lib/fbdocumentflow.module.mjs +29 -0
- package/esm2020/lib/proxy/document-scenarios/document-scenario.service.mjs +27 -0
- package/esm2020/lib/proxy/document-scenarios/index.mjs +3 -0
- package/esm2020/lib/proxy/document-scenarios/models.mjs +6 -0
- package/esm2020/lib/proxy/document-transfers/document-transfer.service.mjs +54 -0
- package/esm2020/lib/proxy/document-transfers/index.mjs +3 -0
- package/esm2020/lib/proxy/document-transfers/models.mjs +32 -0
- package/esm2020/lib/proxy/partner-mappings/index.mjs +3 -0
- package/esm2020/lib/proxy/partner-mappings/models.mjs +2 -0
- package/esm2020/lib/proxy/partner-mappings/partner-mapping.service.mjs +27 -0
- package/esm2020/lib/proxy/project-parameters/index.mjs +3 -0
- package/esm2020/lib/proxy/project-parameters/models.mjs +2 -0
- package/esm2020/lib/proxy/project-parameters/sap-project-parameter.service.mjs +25 -0
- package/esm2020/lib/proxy/sap-company-profiles/index.mjs +3 -0
- package/esm2020/lib/proxy/sap-company-profiles/models.mjs +7 -0
- package/esm2020/lib/proxy/sap-company-profiles/sap-company-profile.service.mjs +27 -0
- package/esm2020/lib/services/fbdocumentflow.service.mjs +21 -0
- package/esm2020/public-api.mjs +7 -0
- package/fesm2015/hitsoft-fbdocumentflow-config.mjs +144 -0
- package/fesm2015/hitsoft-fbdocumentflow-config.mjs.map +1 -0
- package/fesm2015/hitsoft-fbdocumentflow.mjs +1647 -0
- package/fesm2015/hitsoft-fbdocumentflow.mjs.map +1 -0
- package/fesm2020/hitsoft-fbdocumentflow-config.mjs +144 -0
- package/fesm2020/hitsoft-fbdocumentflow-config.mjs.map +1 -0
- package/fesm2020/hitsoft-fbdocumentflow.mjs +1621 -0
- package/fesm2020/hitsoft-fbdocumentflow.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/fbdocumentflow.component.d.ts +13 -0
- package/lib/components/hit-document-scenarios/components/hit-document-scenario.component.d.ts +41 -0
- package/lib/components/hit-document-scenarios/hit-document-scenario-routing.module.d.ts +7 -0
- package/lib/components/hit-document-scenarios/hit-document-scenario.module.d.ts +13 -0
- package/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.d.ts +88 -0
- package/lib/components/hit-document-transfers/components/hit-document-transfer.component.d.ts +61 -0
- package/lib/components/hit-document-transfers/hit-document-transfer-routing.module.d.ts +7 -0
- package/lib/components/hit-document-transfers/hit-document-transfer.module.d.ts +14 -0
- package/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.d.ts +29 -0
- package/lib/components/hit-partner-mappings/hit-partner-mapping-routing.module.d.ts +7 -0
- package/lib/components/hit-partner-mappings/hit-partner-mapping.module.d.ts +13 -0
- package/lib/components/hit-project-parameters/components/hit-project-parameter.component.d.ts +36 -0
- package/lib/components/hit-project-parameters/hit-project-parameter-routing.module.d.ts +7 -0
- package/lib/components/hit-project-parameters/hit-project-parameter.module.d.ts +13 -0
- package/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.d.ts +28 -0
- package/lib/components/hit-sap-company-profiles/hit-sap-company-profile-routing.module.d.ts +7 -0
- package/lib/components/hit-sap-company-profiles/hit-sap-company-profile.module.d.ts +13 -0
- package/lib/fbdocumentflow-routing.module.d.ts +7 -0
- package/lib/fbdocumentflow.module.d.ts +13 -0
- package/lib/proxy/document-scenarios/document-scenario.service.d.ts +16 -0
- package/lib/proxy/document-scenarios/index.d.ts +2 -0
- package/lib/proxy/document-scenarios/models.d.ts +38 -0
- package/lib/proxy/document-transfers/document-transfer.service.d.ts +26 -0
- package/lib/proxy/document-transfers/index.d.ts +2 -0
- package/lib/proxy/document-transfers/models.d.ts +119 -0
- package/lib/proxy/partner-mappings/index.d.ts +2 -0
- package/lib/proxy/partner-mappings/models.d.ts +23 -0
- package/lib/proxy/partner-mappings/partner-mapping.service.d.ts +16 -0
- package/lib/proxy/project-parameters/index.d.ts +2 -0
- package/lib/proxy/project-parameters/models.d.ts +25 -0
- package/lib/proxy/project-parameters/sap-project-parameter.service.d.ts +14 -0
- package/lib/proxy/sap-company-profiles/index.d.ts +2 -0
- package/lib/proxy/sap-company-profiles/models.d.ts +26 -0
- package/lib/proxy/sap-company-profiles/sap-company-profile.service.d.ts +16 -0
- package/lib/services/fbdocumentflow.service.d.ts +10 -0
- package/package.json +41 -0
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitsoft-fbdocumentflow.mjs","sources":["../../../projects/fbdocumentflow/src/lib/components/fbdocumentflow.component.ts","../../../projects/fbdocumentflow/src/lib/components/fbdocumentflow.component.html","../../../projects/fbdocumentflow/src/lib/services/fbdocumentflow.service.ts","../../../projects/fbdocumentflow/src/lib/proxy/sap-company-profiles/models.ts","../../../projects/fbdocumentflow/src/lib/proxy/sap-company-profiles/sap-company-profile.service.ts","../../../projects/fbdocumentflow/src/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-sap-company-profiles/hit-sap-company-profile-routing.module.ts","../../../projects/fbdocumentflow/src/lib/components/hit-sap-company-profiles/hit-sap-company-profile.module.ts","../../../projects/fbdocumentflow/src/lib/proxy/partner-mappings/partner-mapping.service.ts","../../../projects/fbdocumentflow/src/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-partner-mappings/hit-partner-mapping-routing.module.ts","../../../projects/fbdocumentflow/src/lib/components/hit-partner-mappings/hit-partner-mapping.module.ts","../../../projects/fbdocumentflow/src/lib/proxy/document-scenarios/models.ts","../../../projects/fbdocumentflow/src/lib/proxy/document-scenarios/document-scenario.service.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-scenarios/components/hit-document-scenario.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-scenarios/components/hit-document-scenario.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-document-scenarios/hit-document-scenario-routing.module.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-scenarios/hit-document-scenario.module.ts","../../../projects/fbdocumentflow/src/lib/proxy/project-parameters/sap-project-parameter.service.ts","../../../projects/fbdocumentflow/src/lib/components/hit-project-parameters/components/hit-project-parameter.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-project-parameters/components/hit-project-parameter.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-project-parameters/hit-project-parameter-routing.module.ts","../../../projects/fbdocumentflow/src/lib/components/hit-project-parameters/hit-project-parameter.module.ts","../../../projects/fbdocumentflow/src/lib/proxy/document-transfers/models.ts","../../../projects/fbdocumentflow/src/lib/proxy/document-transfers/document-transfer.service.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/components/hit-document-transfer.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/components/hit-document-transfer.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.html","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/hit-document-transfer-routing.module.ts","../../../projects/fbdocumentflow/src/lib/components/hit-document-transfers/hit-document-transfer.module.ts","../../../projects/fbdocumentflow/src/lib/fbdocumentflow-routing.module.ts","../../../projects/fbdocumentflow/src/lib/fbdocumentflow.module.ts","../../../projects/fbdocumentflow/src/public-api.ts","../../../projects/fbdocumentflow/src/hitsoft-fbdocumentflow.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\ninterface DashboardCard {\n titleKey: string;\n descriptionKey: string;\n routerLink: string;\n permission: string;\n}\n\n@Component({\n selector: 'lib-fbdocumentflow',\n templateUrl: './fbdocumentflow.component.html',\n})\nexport class FBDocumentFlowComponent {\n cards: DashboardCard[] = [\n {\n titleKey: 'FBDocumentFlow::Menu:DocumentTransfers',\n descriptionKey: 'FBDocumentFlow::DocumentTransfersCardDescription',\n routerLink: '/fbdocumentflow/document-transfers',\n permission: 'FBDocumentFlow.DocumentTransfers',\n },\n {\n titleKey: 'FBDocumentFlow::Menu:DocumentScenarios',\n descriptionKey: 'FBDocumentFlow::DocumentScenariosCardDescription',\n routerLink: '/fbdocumentflow/document-scenarios',\n permission: 'FBDocumentFlow.DocumentScenarios',\n },\n {\n titleKey: 'FBDocumentFlow::Menu:ProjectParameters',\n descriptionKey: 'FBDocumentFlow::ProjectParametersCardDescription',\n routerLink: '/fbdocumentflow/project-parameters',\n permission: 'FBDocumentFlow.ProjectParameters',\n },\n {\n titleKey: 'FBDocumentFlow::Menu:PartnerMappings',\n descriptionKey: 'FBDocumentFlow::PartnerMappingsCardDescription',\n routerLink: '/fbdocumentflow/partner-mappings',\n permission: 'FBDocumentFlow.PartnerMappings',\n },\n ];\n}\n","<div class=\"card mb-4\">\n <div class=\"card-body\">\n <h4 class=\"card-title mb-2\">{{ 'FBDocumentFlow::Menu:FBDocumentFlow' | abpLocalization }}</h4>\n <p class=\"text-muted mb-0\">{{ 'FBDocumentFlow::PortalDescription' | abpLocalization }}</p>\n <p class=\"text-muted mb-0\">{{ 'FBDocumentFlow::PortalSubDescription' | abpLocalization }}</p>\n </div>\n</div>\n\n<div class=\"row g-3\">\n <div class=\"col-md-6\" *ngFor=\"let card of cards\">\n <div class=\"card h-100\" *abpPermission=\"card.permission\" [routerLink]=\"card.routerLink\" style=\"cursor: pointer\">\n <div class=\"card-body\">\n <h5 class=\"card-title\">{{ card.titleKey | abpLocalization }}</h5>\n <p class=\"card-text text-muted mb-0\">{{ card.descriptionKey | abpLocalization }}</p>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FBDocumentFlowService {\r\n apiName = 'FBDocumentFlow';\r\n\r\n constructor(private restService: RestService) {}\r\n\r\n sample() {\r\n return this.restService.request<void, any>(\r\n { method: 'GET', url: '/api/FBDocumentFlow/sample' },\r\n { apiName: this.apiName }\r\n );\r\n }\r\n}\r\n","import type { FullAuditedEntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';\n\nexport enum CompanyType {\n Source = 0,\n Intermediate = 1,\n Construction = 2,\n}\n\nexport interface GetSapCompanyProfileListInputDto extends PagedAndSortedResultRequestDto {\n filter?: string;\n isActive?: boolean;\n}\n\nexport interface SapCompanyProfileDto extends FullAuditedEntityDto<string> {\n companyCode?: string;\n companyName?: string;\n sapCompanyDb?: string;\n serviceLayerUrl?: string;\n companyType: CompanyType;\n isActive: boolean;\n}\n\nexport interface CreateUpdateSapCompanyProfileDto {\n companyCode: string;\n companyName: string;\n sapCompanyDb: string;\n serviceLayerUrl?: string;\n companyType: CompanyType;\n isActive: boolean;\n}\n","import type { CreateUpdateSapCompanyProfileDto, GetSapCompanyProfileListInputDto, SapCompanyProfileDto } from './models';\nimport { RestService } from '@abp/ng.core';\nimport type { PagedResultDto } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SapCompanyProfileService {\n apiName = 'FBDocumentFlow';\n\n create = (input: CreateUpdateSapCompanyProfileDto) =>\n this.restService.request<any, SapCompanyProfileDto>(\n { method: 'POST', url: '/api/fbdocumentflow/sap-company-profiles', body: input },\n { apiName: this.apiName }\n );\n\n update = (id: string, input: CreateUpdateSapCompanyProfileDto) =>\n this.restService.request<any, SapCompanyProfileDto>(\n { method: 'PUT', url: `/api/fbdocumentflow/sap-company-profiles/${id}`, body: input },\n { apiName: this.apiName }\n );\n\n delete = (id: string) =>\n this.restService.request<any, void>(\n { method: 'DELETE', url: `/api/fbdocumentflow/sap-company-profiles/${id}` },\n { apiName: this.apiName }\n );\n\n get = (id: string) =>\n this.restService.request<any, SapCompanyProfileDto>(\n { method: 'GET', url: `/api/fbdocumentflow/sap-company-profiles/${id}` },\n { apiName: this.apiName }\n );\n\n getList = (input: GetSapCompanyProfileListInputDto) =>\n this.restService.request<any, PagedResultDto<SapCompanyProfileDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/sap-company-profiles',\n params: { filter: input.filter, isActive: input.isActive, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\n },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport { finalize, filter, switchMap } from 'rxjs/operators';\nimport { CompanyType, CreateUpdateSapCompanyProfileDto, SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\n@Component({\n selector: 'hit-sap-company-profile',\n templateUrl: './hit-sap-company-profile.component.html',\n})\nexport class HitSapCompanyProfileComponent implements OnInit {\n data: SapCompanyProfileDto[] = [];\n isLoading = false;\n isModalOpen = false;\n isSaving = false;\n editingId: string | null = null;\n companyTypes = [\n { value: CompanyType.Source, label: 'Kaynak' },\n { value: CompanyType.Intermediate, label: 'Ara Şirket' },\n { value: CompanyType.Construction, label: 'Construction' },\n ];\n\n form: CreateUpdateSapCompanyProfileDto = this.buildEmptyForm();\n\n constructor(private service: SapCompanyProfileService, private confirmation: ConfirmationService) {}\n\n ngOnInit() {\n this.loadData();\n }\n\n loadData() {\n this.isLoading = true;\n this.service\n .getList({ maxResultCount: 1000, skipCount: 0, sorting: 'companyName asc' })\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(result => (this.data = result.items));\n }\n\n openCreate() {\n this.editingId = null;\n this.form = this.buildEmptyForm();\n this.isModalOpen = true;\n }\n\n openEdit(row: SapCompanyProfileDto) {\n this.editingId = row.id;\n this.form = {\n companyCode: row.companyCode ?? '',\n companyName: row.companyName ?? '',\n sapCompanyDb: row.sapCompanyDb ?? '',\n serviceLayerUrl: row.serviceLayerUrl ?? '',\n companyType: row.companyType,\n isActive: row.isActive,\n };\n this.isModalOpen = true;\n }\n\n save() {\n this.isSaving = true;\n const request$ = this.editingId ? this.service.update(this.editingId, this.form) : this.service.create(this.form);\n request$.pipe(finalize(() => (this.isSaving = false))).subscribe(() => {\n this.isModalOpen = false;\n this.loadData();\n });\n }\n\n delete(row: SapCompanyProfileDto) {\n this.confirmation\n .warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure')\n .pipe(\n filter(status => status === Confirmation.Status.confirm),\n switchMap(() => this.service.delete(row.id))\n )\n .subscribe(() => this.loadData());\n }\n\n private buildEmptyForm(): CreateUpdateSapCompanyProfileDto {\n return {\n companyCode: '',\n companyName: '',\n sapCompanyDb: '',\n serviceLayerUrl: '',\n companyType: CompanyType.Intermediate,\n isActive: true,\n };\n }\n}\n","<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">SAP Şirket Profilleri</h5>\n </div>\n <div class=\"col-auto d-flex align-items-center gap-2\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"openCreate()\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Şirket\n </button>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-refresh me-1\"></i>{{ 'AbpUi::Refresh' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Yükleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n\n <dxi-column dataField=\"companyCode\" caption=\"Şirket Kodu\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"companyName\" caption=\"Şirket Adı\"></dxi-column>\n <dxi-column dataField=\"sapCompanyDb\" caption=\"SAP CompanyDB\"></dxi-column>\n <dxi-column dataField=\"companyType\" caption=\"Tip\" cellTemplate=\"typeTemplate\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"isActive\" caption=\"Aktif\" dataType=\"boolean\" [width]=\"80\"></dxi-column>\n <dxi-column caption=\"İşlemler\" cellTemplate=\"actionsTemplate\" [width]=\"140\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'typeTemplate'\">\n <span *ngIf=\"cell.value === 0\">Kaynak</span>\n <span *ngIf=\"cell.value === 1\">Ara Şirket</span>\n <span *ngIf=\"cell.value === 2\">Construction</span>\n </div>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary me-1\" (click)=\"openEdit(cell.data)\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"delete(cell.data)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </dx-data-grid>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ editingId ? 'Şirket Düzenle' : 'Yeni Şirket' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form>\n <div class=\"mb-3\">\n <label class=\"form-label\">Şirket Kodu</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.companyCode\" name=\"companyCode\" required />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Şirket Adı</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.companyName\" name=\"companyName\" required />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">SAP CompanyDB</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.sapCompanyDb\" name=\"sapCompanyDb\" required />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Service Layer URL</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.serviceLayerUrl\" name=\"serviceLayerUrl\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Şirket Tipi</label>\n <select class=\"form-select\" [(ngModel)]=\"form.companyType\" name=\"companyType\">\n <option *ngFor=\"let t of companyTypes\" [ngValue]=\"t.value\">{{ t.label }}</option>\n </select>\n </div>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"form.isActive\" name=\"isActive\" id=\"isActive\" />\n <label class=\"form-check-label\" for=\"isActive\">Aktif</label>\n </div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{ 'AbpUi::Cancel' | abpLocalization }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ 'AbpUi::Save' | abpLocalization }}\n </button>\n </ng-template>\n</abp-modal>\n","import { AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HitSapCompanyProfileComponent } from './components/hit-sap-company-profile.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HitSapCompanyProfileComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HitSapCompanyProfileRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { HitSapCompanyProfileComponent } from './components/hit-sap-company-profile.component';\nimport { HitSapCompanyProfileRoutingModule } from './hit-sap-company-profile-routing.module';\n\n@NgModule({\n declarations: [HitSapCompanyProfileComponent],\n imports: [HitSapCompanyProfileRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],\n})\nexport class HitSapCompanyProfileModule {}\n\nexport function loadHitSapCompanyProfileModuleAsChild() {\n return Promise.resolve(HitSapCompanyProfileModule);\n}\n","import type { CreateUpdatePartnerMappingDto, GetPartnerMappingListInputDto, PartnerMappingDto } from './models';\nimport { RestService } from '@abp/ng.core';\nimport type { PagedResultDto } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PartnerMappingService {\n apiName = 'FBDocumentFlow';\n\n create = (input: CreateUpdatePartnerMappingDto) =>\n this.restService.request<any, PartnerMappingDto>(\n { method: 'POST', url: '/api/fbdocumentflow/partner-mappings', body: input },\n { apiName: this.apiName }\n );\n\n update = (id: string, input: CreateUpdatePartnerMappingDto) =>\n this.restService.request<any, PartnerMappingDto>(\n { method: 'PUT', url: `/api/fbdocumentflow/partner-mappings/${id}`, body: input },\n { apiName: this.apiName }\n );\n\n delete = (id: string) =>\n this.restService.request<any, void>(\n { method: 'DELETE', url: `/api/fbdocumentflow/partner-mappings/${id}` },\n { apiName: this.apiName }\n );\n\n get = (id: string) =>\n this.restService.request<any, PartnerMappingDto>(\n { method: 'GET', url: `/api/fbdocumentflow/partner-mappings/${id}` },\n { apiName: this.apiName }\n );\n\n getList = (input: GetPartnerMappingListInputDto) =>\n this.restService.request<any, PagedResultDto<PartnerMappingDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/partner-mappings',\n params: { sourceCompanyId: input.sourceCompanyId, relatedCompanyId: input.relatedCompanyId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\n },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport { finalize, filter, switchMap } from 'rxjs/operators';\nimport { CreateUpdatePartnerMappingDto, PartnerMappingDto, PartnerMappingService } from '../../../proxy/partner-mappings';\nimport { SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\n@Component({\n selector: 'hit-partner-mapping',\n templateUrl: './hit-partner-mapping.component.html',\n})\nexport class HitPartnerMappingComponent implements OnInit {\n data: PartnerMappingDto[] = [];\n companies: SapCompanyProfileDto[] = [];\n isLoading = false;\n isModalOpen = false;\n isSaving = false;\n editingId: string | null = null;\n\n form: CreateUpdatePartnerMappingDto = this.buildEmptyForm();\n\n constructor(\n private service: PartnerMappingService,\n private companyService: SapCompanyProfileService,\n private confirmation: ConfirmationService\n ) {}\n\n ngOnInit() {\n this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => {\n this.companies = result.items;\n // Belge Aktarımı ekranından \"muhatap eşleştirmesi bulunamadı\" durumunda buraya yönlendirilmiş\n // olabilir (spec §5) - şirket seçimini tekrar yaptırmadan doğrudan yeni kayıt formunu açar.\n this.applyRedirectState();\n });\n this.loadData();\n }\n\n private applyRedirectState() {\n const state = history.state as\n | { sourceCompanyId?: string; relatedCompanyId?: string; customerCardCode?: string; customerCardName?: string }\n | undefined;\n if (!state?.sourceCompanyId) {\n return;\n }\n\n this.openCreate();\n this.form.sourceCompanyId = state.sourceCompanyId;\n if (state.relatedCompanyId) {\n this.form.relatedCompanyId = state.relatedCompanyId;\n }\n // customerCardCode/customerCardName yalnızca ilk hedef çözümlemesi (kaynak OINV.CardCode) eksik\n // olduğunda gelir - bu değerler tahmin değildir, doğrudan kaynak faturanın kendi CardCode/CardName\n // bilgisidir (spec §3/§5). Satıcı CardCode için böyle bir varsayım yapılmaz; hedef şirketin SAP'ında\n // kullanıcı tarafından aranmalıdır.\n if (state.customerCardCode) {\n this.form.customerCardCode = state.customerCardCode;\n }\n if (state.customerCardName) {\n this.form.customerCardName = state.customerCardName;\n }\n }\n\n loadData() {\n this.isLoading = true;\n this.service\n .getList({ maxResultCount: 1000, skipCount: 0, sorting: 'creationTime desc' })\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(result => (this.data = result.items));\n }\n\n companyName(id: string): string {\n return this.companies.find(c => c.id === id)?.companyName ?? id;\n }\n\n openCreate() {\n this.editingId = null;\n this.form = this.buildEmptyForm();\n this.isModalOpen = true;\n }\n\n openEdit(row: PartnerMappingDto) {\n this.editingId = row.id;\n this.form = {\n sourceCompanyId: row.sourceCompanyId,\n relatedCompanyId: row.relatedCompanyId,\n customerCardCode: row.customerCardCode,\n customerCardName: row.customerCardName,\n vendorCardCode: row.vendorCardCode,\n vendorCardName: row.vendorCardName,\n };\n this.isModalOpen = true;\n }\n\n save() {\n this.isSaving = true;\n const request$ = this.editingId ? this.service.update(this.editingId, this.form) : this.service.create(this.form);\n request$.pipe(finalize(() => (this.isSaving = false))).subscribe(() => {\n this.isModalOpen = false;\n this.loadData();\n });\n }\n\n delete(row: PartnerMappingDto) {\n this.confirmation\n .warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure')\n .pipe(\n filter(status => status === Confirmation.Status.confirm),\n switchMap(() => this.service.delete(row.id))\n )\n .subscribe(() => this.loadData());\n }\n\n private buildEmptyForm(): CreateUpdatePartnerMappingDto {\n return {\n sourceCompanyId: '',\n relatedCompanyId: '',\n customerCardCode: '',\n customerCardName: '',\n vendorCardCode: '',\n vendorCardName: '',\n };\n }\n}\n","<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:PartnerMappings' | abpLocalization }}</h5>\n </div>\n <div class=\"col-auto d-flex align-items-center gap-2\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"openCreate()\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Eşleştirme\n </button>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-refresh me-1\"></i>{{ 'AbpUi::Refresh' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Yükleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n\n <dxi-column dataField=\"sourceCompanyName\" caption=\"Bulunulan Şirket\"></dxi-column>\n <dxi-column dataField=\"relatedCompanyName\" caption=\"İlişkili Şirket\"></dxi-column>\n <dxi-column dataField=\"customerCardCode\" caption=\"Müşteri CardCode\"></dxi-column>\n <dxi-column dataField=\"customerCardName\" caption=\"Müşteri Adı\"></dxi-column>\n <dxi-column dataField=\"vendorCardCode\" caption=\"Satıcı CardCode\"></dxi-column>\n <dxi-column dataField=\"vendorCardName\" caption=\"Satıcı Adı\"></dxi-column>\n <dxi-column caption=\"İşlemler\" cellTemplate=\"actionsTemplate\" [width]=\"140\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary me-1\" (click)=\"openEdit(cell.data)\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"delete(cell.data)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </dx-data-grid>\n\n <div class=\"alert alert-secondary mt-3 mb-0\">\n <strong>Çalışma Kuralı</strong>\n <ul class=\"mb-0\">\n <li>Kaynak OINV.CardCode hedef şirketin kim olduğunu belirler.</li>\n <li>Hedef şirket DB'sindeki OPCH.CardCode, \"bulunulan şirket + ilişkili şirket\" eşleştirmesindeki Satıcı CardCode değerinden alınır.</li>\n <li>Aynı şirket içinde sonraki OINV oluşturulacaksa, sonraki hedef şirketin Müşteri CardCode eşleştirmesi kullanılır.</li>\n <li>Eşleştirme bulunamazsa sistem rastgele CardCode seçmez; aktarım öncesinde kullanıcıya seçim yaptırılır.</li>\n </ul>\n </div>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ editingId ? 'Eşleştirme Düzenle' : 'Yeni Muhatap Eşleştirmesi' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form>\n <div class=\"mb-3\">\n <label class=\"form-label\">Bulunulan Şirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.sourceCompanyId\" name=\"sourceCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Seçiniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">İlişkili Şirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.relatedCompanyId\" name=\"relatedCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Seçiniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Müşteri CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardCode\" name=\"customerCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Müşteri Adı</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardName\" name=\"customerCardName\" />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Satıcı CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardCode\" name=\"vendorCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Satıcı Adı</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardName\" name=\"vendorCardName\" />\n </div>\n </div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{ 'AbpUi::Cancel' | abpLocalization }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ 'AbpUi::Save' | abpLocalization }}\n </button>\n </ng-template>\n</abp-modal>\n","import { AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HitPartnerMappingComponent } from './components/hit-partner-mapping.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HitPartnerMappingComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HitPartnerMappingRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { HitPartnerMappingComponent } from './components/hit-partner-mapping.component';\nimport { HitPartnerMappingRoutingModule } from './hit-partner-mapping-routing.module';\n\n@NgModule({\n declarations: [HitPartnerMappingComponent],\n imports: [HitPartnerMappingRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],\n})\nexport class HitPartnerMappingModule {}\n\nexport function loadHitPartnerMappingModuleAsChild() {\n return Promise.resolve(HitPartnerMappingModule);\n}\n","import type { FullAuditedEntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';\n\nexport enum LegBehavior {\n IntermediateChain = 0,\n ConstructionChain = 1,\n}\n\nexport interface GetDocumentScenarioListInputDto extends PagedAndSortedResultRequestDto {\n filter?: string;\n isActive?: boolean;\n}\n\nexport interface DocumentScenarioLegDto {\n id: string;\n sequenceNo: number;\n sourceCompanyId: string;\n sourceCompanyName?: string;\n targetCompanyId: string;\n targetCompanyName?: string;\n legBehavior: LegBehavior;\n notes?: string;\n}\n\nexport interface DocumentScenarioDto extends FullAuditedEntityDto<string> {\n name?: string;\n description?: string;\n isActive: boolean;\n legs: DocumentScenarioLegDto[];\n}\n\nexport interface CreateUpdateDocumentScenarioLegDto {\n id?: string;\n sourceCompanyId: string;\n targetCompanyId: string;\n legBehavior: LegBehavior;\n notes?: string;\n}\n\nexport interface CreateUpdateDocumentScenarioDto {\n name: string;\n description?: string;\n isActive: boolean;\n legs: CreateUpdateDocumentScenarioLegDto[];\n}\n","import type { CreateUpdateDocumentScenarioDto, DocumentScenarioDto, GetDocumentScenarioListInputDto } from './models';\nimport { RestService } from '@abp/ng.core';\nimport type { PagedResultDto } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DocumentScenarioService {\n apiName = 'FBDocumentFlow';\n\n create = (input: CreateUpdateDocumentScenarioDto) =>\n this.restService.request<any, DocumentScenarioDto>(\n { method: 'POST', url: '/api/fbdocumentflow/document-scenarios', body: input },\n { apiName: this.apiName }\n );\n\n update = (id: string, input: CreateUpdateDocumentScenarioDto) =>\n this.restService.request<any, DocumentScenarioDto>(\n { method: 'PUT', url: `/api/fbdocumentflow/document-scenarios/${id}`, body: input },\n { apiName: this.apiName }\n );\n\n delete = (id: string) =>\n this.restService.request<any, void>(\n { method: 'DELETE', url: `/api/fbdocumentflow/document-scenarios/${id}` },\n { apiName: this.apiName }\n );\n\n get = (id: string) =>\n this.restService.request<any, DocumentScenarioDto>(\n { method: 'GET', url: `/api/fbdocumentflow/document-scenarios/${id}` },\n { apiName: this.apiName }\n );\n\n getList = (input: GetDocumentScenarioListInputDto) =>\n this.restService.request<any, PagedResultDto<DocumentScenarioDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/document-scenarios',\n params: { filter: input.filter, isActive: input.isActive, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\n },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport { finalize, filter, switchMap } from 'rxjs/operators';\nimport {\n CreateUpdateDocumentScenarioDto,\n CreateUpdateDocumentScenarioLegDto,\n DocumentScenarioDto,\n DocumentScenarioLegDto,\n DocumentScenarioService,\n LegBehavior,\n} from '../../../proxy/document-scenarios';\nimport { SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\n@Component({\n selector: 'hit-document-scenario',\n templateUrl: './hit-document-scenario.component.html',\n})\nexport class HitDocumentScenarioComponent implements OnInit {\n data: DocumentScenarioDto[] = [];\n companies: SapCompanyProfileDto[] = [];\n isLoading = false;\n isModalOpen = false;\n isSaving = false;\n editingId: string | null = null;\n selectedScenario: DocumentScenarioDto | null = null;\n selectedRowKeys: string[] = [];\n legBehaviors = [\n { value: LegBehavior.IntermediateChain, label: 'Ara Şirket' },\n { value: LegBehavior.ConstructionChain, label: 'Construction' },\n ];\n\n form: CreateUpdateDocumentScenarioDto = this.buildEmptyForm();\n\n constructor(\n private service: DocumentScenarioService,\n private companyService: SapCompanyProfileService,\n private confirmation: ConfirmationService\n ) {}\n\n ngOnInit() {\n this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => (this.companies = result.items));\n this.loadData();\n }\n\n loadData() {\n this.isLoading = true;\n this.service\n .getList({ maxResultCount: 1000, skipCount: 0, sorting: 'name asc' })\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(result => (this.data = result.items));\n }\n\n companyName(id: string): string {\n return this.companies.find(c => c.id === id)?.companyName ?? id;\n }\n\n selectRow(row: DocumentScenarioDto | undefined) {\n if (!row) {\n return;\n }\n this.selectedScenario = row;\n this.selectedRowKeys = [row.id];\n }\n\n // \"Başlangıç / Devam Akışı\" sütunu için: zincirin kaynak → hedef → hedef ... şeklinde kısa özeti.\n flowSummary(scenario: DocumentScenarioDto): string {\n const legs = [...(scenario.legs ?? [])].sort((a, b) => a.sequenceNo - b.sequenceNo);\n if (legs.length === 0) {\n return '';\n }\n\n const chain = [legs[0].sourceCompanyName ?? this.companyName(legs[0].sourceCompanyId)];\n for (const leg of legs) {\n const targetName = leg.targetCompanyName ?? this.companyName(leg.targetCompanyId);\n chain.push(leg.legBehavior === LegBehavior.ConstructionChain ? `${targetName} (Construction)` : targetName);\n }\n\n return chain.join(' → ');\n }\n\n legStepText(leg: DocumentScenarioLegDto): string {\n const source = this.companyName(leg.sourceCompanyId);\n const target = this.companyName(leg.targetCompanyId);\n if (leg.legBehavior === LegBehavior.ConstructionChain) {\n // Spec §7 - Construction bacağının tam belge zinciri: Satınalma Siparişi (OPOR) → Satınalma\n // Siparişli Mal Girişi (OPDN) → Satıcı Faturası (OPCH). \"Mal Girişi\" kısaltması OPDN'nin tam\n // adını yansıtmıyordu (kullanıcı geri bildirimiyle tespit edildi). SAP kısa tablo adları (OINV/OPCH\n // dahil) tüm belge tiplerinde tutarlı şekilde gösterilir.\n return `${source} Müşteri Faturası (OINV) → ${target} Satınalma Siparişi (OPOR) → Satınalma Siparişli Mal Girişi (OPDN) → Satıcı Faturası (OPCH)`;\n }\n return `${source} Müşteri Faturası (OINV) → ${target} Satıcı Faturası (OPCH) → ${target} Müşteri Faturası (OINV)`;\n }\n\n openCreate() {\n this.editingId = null;\n this.form = this.buildEmptyForm();\n this.isModalOpen = true;\n }\n\n openEdit(row: DocumentScenarioDto) {\n this.editingId = row.id;\n this.form = {\n name: row.name ?? '',\n description: row.description ?? '',\n isActive: row.isActive,\n legs: row.legs.map(l => ({\n id: l.id,\n sourceCompanyId: l.sourceCompanyId,\n targetCompanyId: l.targetCompanyId,\n legBehavior: l.legBehavior,\n notes: l.notes,\n })),\n };\n this.isModalOpen = true;\n }\n\n // İlk bacağın kaynağı senaryonun başlangıç noktası olduğu için serbestçe seçilir. Sonraki bacakların\n // kaynağı ise DocumentTransfer çalışma kopyasındaki aynı kuralla (spec §4/§3) bir önceki bacağın\n // hedefinden otomatik türetilir - aksi halde burada da (working copy'de düzeltilen hatanın aynısı)\n // kaynak/hedef birbirinden bağımsız seçilip zincir tutarsız hale gelebilirdi.\n addLeg() {\n const lastLeg = this.form.legs[this.form.legs.length - 1];\n this.form.legs.push({\n sourceCompanyId: lastLeg?.targetCompanyId ?? '',\n targetCompanyId: '',\n legBehavior: LegBehavior.IntermediateChain,\n notes: '',\n });\n }\n\n removeLeg(leg: CreateUpdateDocumentScenarioLegDto) {\n this.form.legs = this.form.legs.filter(l => l !== leg);\n this.relinkLegSources();\n }\n\n updateLegTarget(index: number, targetCompanyId: string) {\n this.form.legs[index].targetCompanyId = targetCompanyId;\n this.relinkLegSources();\n }\n\n private relinkLegSources() {\n for (let i = 1; i < this.form.legs.length; i++) {\n this.form.legs[i].sourceCompanyId = this.form.legs[i - 1].targetCompanyId;\n }\n }\n\n save() {\n this.isSaving = true;\n const request$ = this.editingId ? this.service.update(this.editingId, this.form) : this.service.create(this.form);\n request$.pipe(finalize(() => (this.isSaving = false))).subscribe(() => {\n this.isModalOpen = false;\n this.loadData();\n });\n }\n\n delete(row: DocumentScenarioDto) {\n this.confirmation\n .warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure')\n .pipe(\n filter(status => status === Confirmation.Status.confirm),\n switchMap(() => this.service.delete(row.id))\n )\n .subscribe(() => this.loadData());\n }\n\n private buildEmptyForm(): CreateUpdateDocumentScenarioDto {\n return { name: '', description: '', isActive: true, legs: [] };\n }\n}\n","<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:DocumentScenarios' | abpLocalization }}</h5>\n </div>\n <div class=\"col-auto d-flex align-items-center gap-2\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"openCreate()\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Senaryo\n </button>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-refresh me-1\"></i>{{ 'AbpUi::Refresh' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Yükleniyor...</div>\n </div>\n\n <dx-data-grid\n *ngIf=\"!isLoading\"\n [dataSource]=\"data\"\n keyExpr=\"id\"\n [showBorders]=\"true\"\n [showRowLines]=\"true\"\n [columnAutoWidth]=\"true\"\n [(selectedRowKeys)]=\"selectedRowKeys\"\n [hoverStateEnabled]=\"true\"\n (onRowClick)=\"selectRow($event.data)\"\n (onSelectionChanged)=\"selectRow($event.selectedRowsData[0])\"\n >\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"single\"></dxo-selection>\n\n <dxi-column dataField=\"name\" caption=\"Senaryo Adı\"></dxi-column>\n <dxi-column caption=\"Başlangıç / Devam Akışı\" cellTemplate=\"flowTemplate\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n <dxi-column dataField=\"description\" caption=\"Açıklama\"></dxi-column>\n <dxi-column caption=\"Bacak Sayısı\" cellTemplate=\"legCountTemplate\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"isActive\" caption=\"Aktif\" dataType=\"boolean\" [width]=\"80\"></dxi-column>\n <dxi-column caption=\"İşlemler\" cellTemplate=\"actionsTemplate\" [width]=\"140\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'flowTemplate'\">{{ flowSummary(cell.data) }}</div>\n\n <div *dxTemplate=\"let cell of 'legCountTemplate'\">{{ cell.data.legs?.length || 0 }}</div>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary me-1\" (click)=\"openEdit(cell.data)\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"delete(cell.data)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </dx-data-grid>\n\n <div class=\"card mt-3\" *ngIf=\"selectedScenario\">\n <div class=\"card-body\">\n <h6 class=\"mb-2\">Senaryo Detayı - {{ selectedScenario.name }}</h6>\n <p class=\"text-muted mb-2\" *ngIf=\"selectedScenario.description\">{{ selectedScenario.description }}</p>\n <ol class=\"mb-2\">\n <li *ngFor=\"let leg of selectedScenario.legs\">{{ legStepText(leg) }}</li>\n </ol>\n <small class=\"text-muted d-block\">\n Hazır senaryolar proje bağımsızdır. Kaynak belgenin header Project değeri her şirkette ilgili OPRJ kaydı ile eşleştirilir.\n </small>\n <small class=\"text-muted d-block\">\n Kullanıcının aktarım sırasında yaptığı manuel değişiklik yalnızca işlem çalışma kopyasını etkiler; bu senaryo tanımı değişmez.\n </small>\n </div>\n </div>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\" [options]=\"{ size: 'lg' }\">\n <ng-template #abpHeader>\n <h3>{{ editingId ? 'Senaryo Düzenle' : 'Yeni Hazır Senaryo' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form>\n <div class=\"row\">\n <div class=\"col-8 mb-3\">\n <label class=\"form-label\">Senaryo Adı</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.name\" name=\"name\" required />\n </div>\n <div class=\"col-4 mb-3 d-flex align-items-end\">\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"form.isActive\" name=\"isActive\" id=\"scIsActive\" />\n <label class=\"form-check-label\" for=\"scIsActive\">Aktif</label>\n </div>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Açıklama</label>\n <textarea class=\"form-control\" rows=\"2\" [(ngModel)]=\"form.description\" name=\"description\"></textarea>\n </div>\n\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <label class=\"form-label mb-0\">Bacaklar</label>\n <button type=\"button\" class=\"btn btn-sm btn-outline-primary\" (click)=\"addLeg()\">\n <i class=\"fa fa-plus me-1\"></i>Bacak Ekle\n </button>\n </div>\n\n <table class=\"table table-sm align-middle\">\n <thead>\n <tr>\n <th>Kaynak Şirket</th>\n <th>Hedef Şirket</th>\n <th>Davranış</th>\n <th>Not</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let leg of form.legs; let i = index\">\n <td>\n <select\n *ngIf=\"i === 0; else sourceText\"\n class=\"form-select form-select-sm\"\n [(ngModel)]=\"leg.sourceCompanyId\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option [ngValue]=\"''\" disabled>Seçiniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n <ng-template #sourceText>\n <span class=\"form-control form-control-sm bg-light\">{{ companyName(leg.sourceCompanyId) }}</span>\n </ng-template>\n </td>\n <td>\n <select\n class=\"form-select form-select-sm\"\n [ngModel]=\"leg.targetCompanyId\"\n (ngModelChange)=\"updateLegTarget(i, $event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option [ngValue]=\"''\" disabled>Seçiniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </td>\n <td>\n <select class=\"form-select form-select-sm\" [(ngModel)]=\"leg.legBehavior\" [ngModelOptions]=\"{ standalone: true }\">\n <option *ngFor=\"let b of legBehaviors\" [ngValue]=\"b.value\">{{ b.label }}</option>\n </select>\n </td>\n <td>\n <input type=\"text\" class=\"form-control form-control-sm\" [(ngModel)]=\"leg.notes\" [ngModelOptions]=\"{ standalone: true }\" />\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-sm btn-outline-danger\" (click)=\"removeLeg(leg)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{ 'AbpUi::Cancel' | abpLocalization }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ 'AbpUi::Save' | abpLocalization }}\n </button>\n </ng-template>\n</abp-modal>\n","import { AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HitDocumentScenarioComponent } from './components/hit-document-scenario.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HitDocumentScenarioComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HitDocumentScenarioRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { HitDocumentScenarioComponent } from './components/hit-document-scenario.component';\nimport { HitDocumentScenarioRoutingModule } from './hit-document-scenario-routing.module';\n\n@NgModule({\n declarations: [HitDocumentScenarioComponent],\n imports: [HitDocumentScenarioRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],\n})\nexport class HitDocumentScenarioModule {}\n\nexport function loadHitDocumentScenarioModuleAsChild() {\n return Promise.resolve(HitDocumentScenarioModule);\n}\n","import type {\n CreateSapProjectParameterDto,\n GetSapProjectParameterListInputDto,\n SapProjectParameterDto,\n UpdateSapProjectParameterDto,\n} from './models';\nimport { RestService } from '@abp/ng.core';\nimport type { ListResultDto } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SapProjectParameterService {\n apiName = 'FBDocumentFlow';\n\n getList = (input: GetSapProjectParameterListInputDto) =>\n this.restService.request<any, ListResultDto<SapProjectParameterDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/sap-project-parameters',\n params: { companyId: input.companyId, filter: input.filter },\n },\n { apiName: this.apiName }\n );\n\n create = (companyId: string, input: CreateSapProjectParameterDto) =>\n this.restService.request<any, SapProjectParameterDto>(\n { method: 'POST', url: `/api/fbdocumentflow/sap-project-parameters/${companyId}`, body: input },\n { apiName: this.apiName }\n );\n\n update = (companyId: string, prjCode: string, input: UpdateSapProjectParameterDto) =>\n this.restService.request<any, void>(\n { method: 'PUT', url: `/api/fbdocumentflow/sap-project-parameters/${companyId}/${prjCode}`, body: input },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { finalize } from 'rxjs/operators';\nimport { SapProjectParameterDto, SapProjectParameterService } from '../../../proxy/project-parameters';\nimport { SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\ninterface ProjectParameterFormModel {\n prjCode: string;\n prjName: string;\n ebaId?: string;\n increaseRate?: number;\n cardCode?: string;\n currency?: string;\n}\n\n@Component({\n selector: 'hit-project-parameter',\n templateUrl: './hit-project-parameter.component.html',\n})\nexport class HitProjectParameterComponent implements OnInit {\n companies: SapCompanyProfileDto[] = [];\n selectedCompanyId = '';\n data: SapProjectParameterDto[] = [];\n isLoading = false;\n isSaving = false;\n\n // SAP'ta Code alanı benzersiz anahtardır ve oluşturulduktan sonra değiştirilemez (DevExtreme'in inline\n // grid düzenlemesinde bu \"E4017 - Keys cannot be modified\" hatasına yol açıyordu). Bu yüzden ekleme/\n // güncelleme artık ayrı bir modal üzerinden yapılır; güncellemede Proje Kodu/Adı salt-okunur gösterilir.\n isModalOpen = false;\n modalMode: 'create' | 'update' = 'create';\n form: ProjectParameterFormModel = { prjCode: '', prjName: '' };\n\n constructor(private service: SapProjectParameterService, private companyService: SapCompanyProfileService) {}\n\n ngOnInit() {\n this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => {\n this.companies = result.items;\n if (this.companies.length > 0) {\n this.selectedCompanyId = this.companies[0].id;\n this.loadData();\n }\n });\n }\n\n loadData() {\n if (!this.selectedCompanyId) {\n return;\n }\n\n // Sorgu her tetiklendiğinde listeyi önce temizleriz: istek hata alırsa (önceki şirkete ait) eski veri\n // ekranda kalıp \"şirket değişmiyor\" izlenimi vermesin.\n this.data = [];\n const requestedCompanyId = this.selectedCompanyId;\n\n this.isLoading = true;\n this.service\n .getList({ companyId: requestedCompanyId })\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(result => {\n // Kullanıcı yanıt gelmeden şirketi tekrar değiştirmişse, artık geçersiz olan bu sonucu yok say.\n if (requestedCompanyId === this.selectedCompanyId) {\n this.data = result.items;\n }\n });\n }\n\n hasUndefinedIncreaseRate(): boolean {\n return this.data.some(x => !x.increaseRate);\n }\n\n openCreateModal() {\n this.modalMode = 'create';\n this.form = { prjCode: '', prjName: '', ebaId: '', increaseRate: undefined, cardCode: '', currency: '' };\n this.isModalOpen = true;\n }\n\n openUpdateModal(row: SapProjectParameterDto) {\n this.modalMode = 'update';\n // Formu mevcut SAP değerleriyle doldururuz; kullanıcı yalnızca değiştirmek istediği alanı düzenler,\n // dokunmadığı alanlar olduğu gibi geri gönderilir (SAP'taki diğer alanları boşaltmaz).\n this.form = {\n prjCode: row.prjCode ?? '',\n prjName: row.prjName ?? '',\n ebaId: row.ebaId ?? '',\n increaseRate: row.increaseRate,\n cardCode: row.cardCode ?? '',\n currency: row.currency ?? '',\n };\n this.isModalOpen = true;\n }\n\n // DevExtreme grid buton sütunu, tıklama olayını { row: { data } } şeklinde bir event objesiyle çağırır.\n onEditButtonClick = (e: any) => {\n this.openUpdateModal(e.row.data);\n };\n\n cancelModal() {\n this.isModalOpen = false;\n }\n\n saveModal() {\n if (!this.form.prjCode || !this.form.prjName) {\n return;\n }\n\n this.isSaving = true;\n const onSaved = () => {\n this.isSaving = false;\n this.isModalOpen = false;\n this.loadData();\n };\n const onError = () => (this.isSaving = false);\n\n if (this.modalMode === 'create') {\n this.service\n .create(this.selectedCompanyId, {\n prjCode: this.form.prjCode,\n prjName: this.form.prjName,\n ebaId: this.form.ebaId || undefined,\n increaseRate: this.form.increaseRate,\n cardCode: this.form.cardCode || undefined,\n currency: this.form.currency || undefined,\n })\n .subscribe({ next: onSaved, error: onError });\n } else {\n this.service\n .update(this.selectedCompanyId, this.form.prjCode, {\n increaseRate: this.form.increaseRate,\n cardCode: this.form.cardCode || undefined,\n currency: this.form.currency || undefined,\n })\n .subscribe({ next: onSaved, error: onError });\n }\n }\n}\n","<div class=\"card\">\n <div class=\"card-header py-3\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:ProjectParameters' | abpLocalization }}</h5>\n </div>\n <div class=\"card-body pt-3\">\n <div class=\"row g-3 align-items-end mb-3\">\n <div class=\"col-md-4\">\n <label class=\"form-label\">Şirket</label>\n <select class=\"form-select\" [(ngModel)]=\"selectedCompanyId\" (ngModelChange)=\"loadData()\">\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading || !selectedCompanyId\" title=\"Listeyi yenile\">\n <i class=\"fa fa-refresh me-1\"></i>Yenile\n </button>\n </div>\n </div>\n\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <h6 class=\"mb-0\">SAP B1 Proje Parametreleri</h6>\n <button class=\"btn btn-primary btn-sm\" (click)=\"openCreateModal()\" [disabled]=\"!selectedCompanyId\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Proje Ekle\n </button>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">SAP B1 proje parametreleri yükleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\" keyExpr=\"prjCode\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n\n <dxi-column dataField=\"prjCode\" caption=\"Proje Kodu\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"prjName\" caption=\"Proje Adı\"></dxi-column>\n <dxi-column dataField=\"ebaId\" caption=\"EBA ID\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"increaseRate\" caption=\"Artırım Oranı\" dataType=\"number\" [width]=\"130\"></dxi-column>\n <dxi-column dataField=\"cardCode\" caption=\"Muhatap Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"currency\" caption=\"Para Birimi\" [width]=\"110\"></dxi-column>\n <dxi-column type=\"buttons\" caption=\"\" [width]=\"60\">\n <dxi-button icon=\"edit\" hint=\"Düzenle\" [onClick]=\"onEditButtonClick\"></dxi-button>\n </dxi-column>\n </dx-data-grid>\n\n <div class=\"alert alert-warning mt-3\" *ngIf=\"hasUndefinedIncreaseRate()\">\n 0 / NULL artırım oranı akışı bloklamaz. Aktarım bacağında kırmızı uyarı gösterilir ve artırım uygulanmadan devam için kullanıcı onayı alınır.\n </div>\n\n <small class=\"text-muted d-block mt-2\">\n Proje Kodu/Adı/EBA ID SAP'ta oluşturulduktan sonra bu ekrandan değiştirilemez (SAP anahtar/bilgi alanlarıdır); yalnızca\n Artırım Oranı, Muhatap Kodu ve Para Birimi güncellenebilir.\n <br />\n U_CardCode varsayılan proje muhatabıdır; Intercompany hedef OPCH.CardCode çözümünde esas kaynak Muhatap Eşleştirmeleridir.\n </small>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ modalMode === 'create' ? 'Yeni Proje Ekle' : 'Proje Parametrelerini Güncelle' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"row g-3\">\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Kodu</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjCode\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Adı</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjName\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">EBA ID</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.ebaId\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Artırım Oranı (U_Oran)</label>\n <input type=\"number\" step=\"0.01\" class=\"form-control\" [(ngModel)]=\"form.increaseRate\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Muhatap Kodu (U_CardCode)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.cardCode\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Para Birimi (U_Currency)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.currency\" />\n </div>\n </div>\n\n <div class=\"alert alert-info small mt-3\" *ngIf=\"modalMode === 'update'\">\n Proje Kodu/Adı/EBA ID SAP'ta değiştirilemeyen alanlardır; yalnızca Artırım Oranı, Muhatap Kodu ve Para Birimi güncellenir.\n Dokunmadığınız alanlar mevcut SAP değeriyle olduğu gibi gönderilir.\n </div>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancelModal()\">Vazgeç</button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveModal()\"\n [disabled]=\"isSaving || !form.prjCode || !form.prjName\"\n >\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n Kaydet\n </button>\n </ng-template>\n</abp-modal>\n","import { AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HitProjectParameterComponent } from './components/hit-project-parameter.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HitProjectParameterComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HitProjectParameterRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { HitProjectParameterComponent } from './components/hit-project-parameter.component';\nimport { HitProjectParameterRoutingModule } from './hit-project-parameter-routing.module';\n\n@NgModule({\n declarations: [HitProjectParameterComponent],\n imports: [HitProjectParameterRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],\n})\nexport class HitProjectParameterModule {}\n\nexport function loadHitProjectParameterModuleAsChild() {\n return Promise.resolve(HitProjectParameterModule);\n}\n","import type { FullAuditedEntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';\nimport type { LegBehavior } from '../document-scenarios/models';\n\nexport enum DocumentTransferStatus {\n Draft = 0,\n Running = 1,\n Completed = 2,\n Failed = 3,\n Cancelled = 4,\n}\n\nexport enum DocumentTransferLegStatus {\n Pending = 0,\n Success = 1,\n Failed = 2,\n Skipped = 3,\n}\n\n// Spec §14 (18.09.2026 kararı) - süreç parametrik: DocumentTransferStatus.Draft (aktarım kaydının henüz\n// çalıştırılmamış olması) ile KARIŞTIRILMAMALIDIR; bu, SAP B1 tarafındaki belge yaşam döngüsü tercihidir.\nexport enum SapDocumentLifecycle {\n Posted = 0,\n Draft = 1,\n}\n\n// Spec ek karar (18.09.2026) - hedef Taslak iken Construction bacağının (OPOR→OPDN→OPCH) taban belge\n// zinciri taslaklar arasında çalışmaz; bu durumda kullanıcı üç belge tipinden yalnızca birinin taslak\n// olarak oluşturulmasını seçer.\nexport enum ConstructionDraftDocumentType {\n PurchaseOrder = 0,\n GoodsReceipt = 1,\n APInvoice = 2,\n}\n\nexport interface GetDocumentTransferListInputDto extends PagedAndSortedResultRequestDto {\n sourceCompanyId?: string;\n status?: DocumentTransferStatus;\n}\n\nexport interface DocumentTransferLegDto {\n id: string;\n sequenceNo: number;\n sourceCompanyId: string;\n sourceCompanyName?: string;\n targetCompanyId: string;\n targetCompanyName?: string;\n legBehavior: LegBehavior;\n status: DocumentTransferLegStatus;\n errorMessage?: string;\n createdDocType?: string;\n createdDocEntry?: number;\n createdDocNum?: string;\n createdPurchaseOrderDocEntry?: number;\n createdPurchaseOrderDocNum?: string;\n createdGoodsReceiptDocEntry?: number;\n createdGoodsReceiptDocNum?: string;\n createdInternalOinvDocEntry?: number;\n createdInternalOinvDocNum?: string;\n numAtCard?: string;\n currency?: string;\n exchangeRate?: number;\n freightAmount?: number;\n increaseRateApplied?: number;\n resolvedOpchCardCode?: string;\n plannedIncreaseRate?: number;\n selectedConstructionDraftDocType?: ConstructionDraftDocumentType;\n}\n\nexport interface DocumentTransferDto extends FullAuditedEntityDto<string> {\n intercompanyId: string;\n sourceCompanyId: string;\n sourceCompanyName?: string;\n sourceOinvDocEntry: number;\n sourceOinvDocNum?: string;\n sourceOinvCardCode?: string;\n sourceOinvNumAtCard?: string;\n projectCode?: string;\n scenarioId?: string;\n status: DocumentTransferStatus;\n sourceDocumentLifecycle: SapDocumentLifecycle;\n targetDocumentLifecycle: SapDocumentLifecycle;\n legs: DocumentTransferLegDto[];\n}\n\nexport interface ResolvedFirstTargetDto {\n isResolved: boolean;\n sourceCompanyId: string;\n sourceOinvCardCode?: string;\n sourceOinvNumAtCard?: string;\n sourceOinvDocNum?: string;\n targetCompanyId?: string;\n targetCompanyName?: string;\n projectCode?: string;\n}\n\nexport interface StartDocumentTransferInputDto {\n sourceCompanyId: string;\n sourceOinvDocEntry: number;\n scenarioId?: string;\n sourceDocumentLifecycle?: SapDocumentLifecycle;\n targetDocumentLifecycle?: SapDocumentLifecycle;\n}\n\nexport interface ApplyScenarioInputDto {\n scenarioId?: string;\n}\n\nexport interface UpdateDocumentTransferLegInputDto {\n targetCompanyId: string;\n legBehavior: LegBehavior;\n numAtCard?: string;\n currency?: string;\n exchangeRate?: number;\n freightAmount?: number;\n selectedConstructionDraftDocType?: ConstructionDraftDocumentType;\n}\n\nexport interface GetEligibleSourceInvoicesInputDto {\n sourceCompanyId: string;\n projectCode?: string;\n numAtCard?: string;\n sourceDocumentLifecycle?: SapDocumentLifecycle;\n}\n\nexport interface EligibleSourceInvoiceDto {\n docEntry: number;\n docNum?: string;\n numAtCard?: string;\n projectCode?: string;\n cardCode?: string;\n cardName?: string;\n currency?: string;\n isResolved: boolean;\n targetCompanyId?: string;\n targetCompanyName?: string;\n targetHasDuplicateNumAtCard: boolean;\n}\n","import type {\n ApplyScenarioInputDto,\n DocumentTransferDto,\n DocumentTransferLegDto,\n EligibleSourceInvoiceDto,\n GetDocumentTransferListInputDto,\n GetEligibleSourceInvoicesInputDto,\n ResolvedFirstTargetDto,\n SapDocumentLifecycle,\n StartDocumentTransferInputDto,\n UpdateDocumentTransferLegInputDto,\n} from './models';\nimport { RestService } from '@abp/ng.core';\nimport type { ListResultDto, PagedResultDto } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DocumentTransferService {\n apiName = 'FBDocumentFlow';\n\n get = (id: string) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'GET', url: `/api/fbdocumentflow/document-transfers/${id}` },\n { apiName: this.apiName }\n );\n\n getList = (input: GetDocumentTransferListInputDto) =>\n this.restService.request<any, PagedResultDto<DocumentTransferDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/document-transfers',\n params: { sourceCompanyId: input.sourceCompanyId, status: input.status, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\n },\n { apiName: this.apiName }\n );\n\n getEligibleSourceInvoices = (input: GetEligibleSourceInvoicesInputDto) =>\n this.restService.request<any, ListResultDto<EligibleSourceInvoiceDto>>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/document-transfers/eligible-source-invoices',\n params: {\n sourceCompanyId: input.sourceCompanyId,\n projectCode: input.projectCode,\n numAtCard: input.numAtCard,\n sourceDocumentLifecycle: input.sourceDocumentLifecycle,\n },\n },\n { apiName: this.apiName }\n );\n\n resolveFirstTarget = (sourceCompanyId: string, sourceOinvDocEntry: number, sourceDocumentLifecycle?: SapDocumentLifecycle) =>\n this.restService.request<any, ResolvedFirstTargetDto>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/document-transfers/resolve-first-target',\n params: { sourceCompanyId, sourceOinvDocEntry, sourceDocumentLifecycle },\n },\n { apiName: this.apiName }\n );\n\n findExistingDraft = (sourceCompanyId: string, sourceOinvDocEntry: number, sourceDocumentLifecycle?: SapDocumentLifecycle) =>\n this.restService.request<any, DocumentTransferDto | null>(\n {\n method: 'GET',\n url: '/api/fbdocumentflow/document-transfers/existing-draft',\n params: { sourceCompanyId, sourceOinvDocEntry, sourceDocumentLifecycle },\n },\n { apiName: this.apiName }\n );\n\n deleteDraft = (id: string) =>\n this.restService.request<any, void>(\n { method: 'DELETE', url: `/api/fbdocumentflow/document-transfers/${id}/draft` },\n { apiName: this.apiName }\n );\n\n delete = (id: string) =>\n this.restService.request<any, void>(\n { method: 'DELETE', url: `/api/fbdocumentflow/document-transfers/${id}` },\n { apiName: this.apiName }\n );\n\n create = (input: StartDocumentTransferInputDto) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'POST', url: '/api/fbdocumentflow/document-transfers', body: input },\n { apiName: this.apiName }\n );\n\n addLeg = (transferId: string, input: UpdateDocumentTransferLegInputDto) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'POST', url: `/api/fbdocumentflow/document-transfers/${transferId}/legs`, body: input },\n { apiName: this.apiName }\n );\n\n updateLeg = (transferId: string, legId: string, input: UpdateDocumentTransferLegInputDto) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'PUT', url: `/api/fbdocumentflow/document-transfers/${transferId}/legs/${legId}`, body: input },\n { apiName: this.apiName }\n );\n\n applyScenario = (transferId: string, input: ApplyScenarioInputDto) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'POST', url: `/api/fbdocumentflow/document-transfers/${transferId}/apply-scenario`, body: input },\n { apiName: this.apiName }\n );\n\n removeLeg = (transferId: string, legId: string) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'DELETE', url: `/api/fbdocumentflow/document-transfers/${transferId}/legs/${legId}` },\n { apiName: this.apiName }\n );\n\n executeLeg = (transferId: string, legId: string) =>\n this.restService.request<any, DocumentTransferLegDto>(\n { method: 'POST', url: `/api/fbdocumentflow/document-transfers/${transferId}/legs/${legId}/execute` },\n { apiName: this.apiName }\n );\n\n executeAll = (transferId: string) =>\n this.restService.request<any, DocumentTransferDto>(\n { method: 'POST', url: `/api/fbdocumentflow/document-transfers/${transferId}/execute-all` },\n { apiName: this.apiName }\n );\n\n cancelChain = (intercompanyId: string) =>\n this.restService.request<any, void>(\n { method: 'POST', url: `/api/fbdocumentflow/document-transfers/cancel-chain/${intercompanyId}` },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport { Subscription } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport {\n DocumentTransferDto,\n DocumentTransferService,\n EligibleSourceInvoiceDto,\n SapDocumentLifecycle,\n} from '../../../proxy/document-transfers';\nimport { SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\n// \"Durum\" sütunu Aktarıma Uygun Faturalar tablosunda tek bir SAP alanı değil, birden fazla alandan\n// (isResolved, targetHasDuplicateNumAtCard) hesaplanan bir etiket. DevExtreme filtre/başlık-filtresi\n// yalnızca gerçek bir dataField üzerinden çalışabildiğinden, bu hesaplanan etiket satır verisine ayrı\n// bir alan olarak ekleniyor - aksi halde \"Durum\" sütununda hiç filtreleme yapılamıyordu.\ntype EligibleSourceInvoiceRow = EligibleSourceInvoiceDto & { statusLabel: string };\n\n@Component({\n selector: 'hit-document-transfer',\n templateUrl: './hit-document-transfer.component.html',\n})\nexport class HitDocumentTransferComponent implements OnInit {\n companies: SapCompanyProfileDto[] = [];\n\n // Aktarıma uygun müşteri faturaları - Proje/NumAtCard/Belge No vb. daraltma tablonun kendi sütun\n // filtreleriyle yapılır.\n filterSourceCompanyId = '';\n isListLoading = false;\n eligibleInvoices: EligibleSourceInvoiceRow[] = [];\n\n // Spec §14 (18.09.2026 kararı) - süreç parametrik: Taslak seçilirse taslak faturalar, Kayıtlı\n // seçilirse (varsayılan, mevcut/eski davranışla uyumlu) kayıtlı faturalar listelenir. Bu yalnızca\n // KAYNAK faturanın modudur - hedefte oluşacak belgelerin modu (targetDocumentLifecycle) bundan\n // BAĞIMSIZDIR ve aktarım oluşturma ekranında ayrıca seçilir (kullanıcı geri bildirimiyle netleştirildi).\n sourceDocumentLifecycle = SapDocumentLifecycle.Posted;\n // Kaynak HER ZAMAN bir Müşteri Faturasıdır (OINV) - etiket bunu netleştirir (kullanıcı geri\n // bildirimiyle netleştirildi). İşlem Geçmişi tablosundaki \"Hedef Belge Durumu\" sütununda da (kullanıcı\n // isteğiyle) AYNI etiketler kullanılır.\n sourceDocumentLifecycleOptions = [\n { value: SapDocumentLifecycle.Posted, label: 'Kayıtlı Müşteri Faturası' },\n { value: SapDocumentLifecycle.Draft, label: 'Taslak Müşteri Faturası' },\n ];\n\n // İşlem Geçmişi - daha önce başlatılmış (işlem bekliyor/devam eden/tamamlanan/hatalı/iptal edilen) aktarımlar.\n // \"Kapat\"/\"Listeye Dön\" sonrası kullanıcının bir zincire tekrar dönüp bakabilmesi için.\n isTransfersLoading = false;\n transfers: DocumentTransferDto[] = [];\n isHistoryExpanded = true;\n\n // Durum sütununun header-filter/filter-row açılır listesinde okunabilir Türkçe etiketler gösterebilmesi\n // için (aksi halde DevExtreme ham sayısal enum değerlerini - 0/1/2/3/4 - listeler).\n transferStatusLookup = [\n { value: 0, text: 'İşlem Bekliyor' },\n { value: 1, text: 'Devam Ediyor' },\n { value: 2, text: 'Tamamlandı' },\n { value: 3, text: 'Hatalı' },\n { value: 4, text: 'İptal Edildi' },\n ];\n\n constructor(\n private service: DocumentTransferService,\n private companyService: SapCompanyProfileService,\n private router: Router,\n private confirmation: ConfirmationService\n ) {}\n\n ngOnInit() {\n this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => {\n this.companies = result.items;\n\n // Detay sayfasından \"Listeye Dön\"/\"Kapat\" ile geri gelindiğinde, kullanıcının o an üzerinde\n // çalıştığı şirket kaybolmasın diye router state'teki şirket önceliklidir.\n const returnedCompanyId = (history.state as { sourceCompanyId?: string } | undefined)?.sourceCompanyId;\n const preferredCompanyId =\n returnedCompanyId && this.companies.some(c => c.id === returnedCompanyId) ? returnedCompanyId : undefined;\n\n if (this.companies.length > 0 && !this.filterSourceCompanyId) {\n this.filterSourceCompanyId = preferredCompanyId ?? this.companies[0].id;\n this.search();\n }\n });\n }\n\n companyName(id: string): string {\n return this.companies.find(c => c.id === id)?.companyName ?? id;\n }\n\n search() {\n if (!this.filterSourceCompanyId) {\n return;\n }\n\n this.loadEligibleInvoices();\n this.loadTransfers();\n }\n\n // \"Belge Durumu\" (Taslak/Kayıtlı) veya kaynak şirket değiştirildiğinde önceki istek unsubscribe ile\n // iptal ediliyor - ancak bu TEK BAŞINA yeterli olmadığı gerçek ortamda gözlemlendi (kullanıcı geri\n // bildirimiyle tespit edildi: \"Taslak\" seçiliyken ekranda hâlâ Kayıtlı modundan kalma veri\n // görünebiliyordu - unsubscribe her koşulda tarayıcı isteğini anında iptal etmeyebiliyor/yanıt zaten\n // yola çıkmış olabiliyor). Bu yüzden AYRICA her isteğe artan bir sıra numarası (requestId) veriliyor;\n // yanıt geldiğinde bu numara hâlâ \"sonuncusu\" değilse (aradan yeni bir istek başladıysa) sonuç sessizce\n // atılıyor - eski yanıt hangi sebeple gelirse gelsin ekrana asla yansımaz.\n private eligibleInvoicesSubscription?: Subscription;\n private transfersSubscription?: Subscription;\n private eligibleInvoicesRequestId = 0;\n private transfersRequestId = 0;\n\n private loadEligibleInvoices() {\n this.eligibleInvoicesSubscription?.unsubscribe();\n this.eligibleInvoices = [];\n const requestId = ++this.eligibleInvoicesRequestId;\n\n this.isListLoading = true;\n this.eligibleInvoicesSubscription = this.service\n .getEligibleSourceInvoices({ sourceCompanyId: this.filterSourceCompanyId, sourceDocumentLifecycle: this.sourceDocumentLifecycle })\n .pipe(finalize(() => (this.isListLoading = false)))\n .subscribe(result => {\n if (requestId !== this.eligibleInvoicesRequestId) {\n return;\n }\n this.eligibleInvoices = result.items.map(item => ({ ...item, statusLabel: this.invoiceStatusLabel(item) }));\n });\n }\n\n private loadTransfers() {\n this.transfersSubscription?.unsubscribe();\n this.transfers = [];\n const requestId = ++this.transfersRequestId;\n\n this.isTransfersLoading = true;\n this.transfersSubscription = this.service\n .getList({ sourceCompanyId: this.filterSourceCompanyId, maxResultCount: 50, skipCount: 0, sorting: 'creationTime desc' })\n .pipe(finalize(() => (this.isTransfersLoading = false)))\n .subscribe(result => {\n if (requestId !== this.transfersRequestId) {\n return;\n }\n this.transfers = result.items;\n });\n }\n\n invoiceStatusLabel(row: EligibleSourceInvoiceDto): string {\n if (row.targetHasDuplicateNumAtCard) {\n return 'Hedefte mevcut';\n }\n return row.isResolved ? 'Aktarılabilir' : 'Eşleştirme yok';\n }\n\n transferStatusLabel(status: number): string {\n return this.transferStatusLookup.find(s => s.value === status)?.text ?? String(status);\n }\n\n // Aynı kaynak belge için daha önce başlatılmış ama henüz çalıştırılmamış bir taslak varsa, \"İşlemler\"\n // her seferinde CreateAsync çağırıp mükerrer bir taslak daha oluşturmasın diye önce kontrol edilir.\n openTransferPage(row: EligibleSourceInvoiceDto) {\n this.service.findExistingDraft(this.filterSourceCompanyId, row.docEntry, this.sourceDocumentLifecycle).subscribe(existing => {\n if (existing) {\n const creationDate = existing.creationTime ? new Date(existing.creationTime).toLocaleString('tr-TR') : '';\n this.confirmation\n .warn(\n `Bu belge (${row.docNum}) için zaten bir taslak aktarım var (oluşturulma: ${creationDate}).`,\n 'FBDocumentFlow::AreYouSure',\n {\n yesText: 'Evet, Aç',\n cancelText: 'Hayır, Yeni Oluştur',\n }\n )\n .subscribe(status => {\n if (status === Confirmation.Status.confirm) {\n this.router.navigate(['/fbdocumentflow/document-transfers', existing.id]);\n } else if (status === Confirmation.Status.reject) {\n // Kullanıcı \"Hayır, Yeni Taslak Oluştur\" butonuna bastı: önceki taslak hiç çalıştırılmadığından\n // (henüz hiçbir SAP belgesi yok) sessizce siliniyor - aksi halde her \"Hayır\" bir taslak daha\n // biriktirir ve kullanıcı zaten yalnızca en son oluşturduğu taslakla ilgileniyor.\n this.service.deleteDraft(existing.id).subscribe(() => this.navigateToNewTransfer(row));\n }\n // status === dismiss: kullanıcı diyaloğu kapattı (ör. dışarı tıkladı) - hiçbir şey yapılmaz,\n // ne mevcut taslak açılır ne de silinir; önceki davranışta bu durum yanlışlıkla silme\n // dalına düşüyordu.\n });\n } else {\n this.navigateToNewTransfer(row);\n }\n });\n }\n\n private navigateToNewTransfer(row: EligibleSourceInvoiceDto) {\n this.router.navigate(['/fbdocumentflow/document-transfers', 'new'], {\n state: {\n sourceCompanyId: this.filterSourceCompanyId,\n sourceCompanyName: this.companyName(this.filterSourceCompanyId),\n docEntry: row.docEntry,\n docNum: row.docNum,\n numAtCard: row.numAtCard,\n projectCode: row.projectCode,\n targetCompanyId: row.targetCompanyId,\n targetCompanyName: row.targetCompanyName,\n currency: row.currency,\n sourceDocumentLifecycle: this.sourceDocumentLifecycle,\n },\n });\n }\n\n openTransferDetail(row: DocumentTransferDto) {\n this.router.navigate(['/fbdocumentflow/document-transfers', row.id]);\n }\n\n // Tamamlanmış/Devam Eden kayıtlar silinemez (backend zaten TransferNotEditable ile reddeder); \"Sil\"\n // seçeneği yalnızca Taslak/Hatalı/İptal Edildi kayıtlarda görünür.\n canDeleteTransfer(row: DocumentTransferDto): boolean {\n return row.status !== 1 && row.status !== 2; // 1=Devam Ediyor, 2=Tamamlandı\n }\n\n deleteTransfer(row: DocumentTransferDto) {\n this.confirmation\n .warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure')\n .subscribe(status => {\n if (status === Confirmation.Status.confirm) {\n this.service.delete(row.id).subscribe(() => this.loadTransfers());\n }\n });\n }\n\n // Bu menü için üç farklı yaklaşım denendi ve hepsi DevExtreme grid hücresi içinde başarısız oldu:\n // (1) Bootstrap'ın data-bs-toggle=\"dropdown\"'ı - Bootstrap JS bundle'ı yüklü değil, hiç tepki vermedi.\n // (2) Saf Angular *ngIf dropdown'ı - DOM'da doğru açılıp kapanıyordu ama hücrenin/rowsview'ın\n // overflow:hidden'ı yüzünden görünmüyordu (z-index bunu aşamaz, gerçek ortamda doğrulandı).\n // (3) dx-drop-down-button - görsel olarak grid'in dışına taşıp doğru görünüyordu, ama onItemClick\n // olayı bu ortamda güvenilir tetiklenmedi (gerçek ortamda doğrulandı: hiçbir tıklama handler'ı\n // çağırmadı).\n // Çözüm: menüyü grid'in TAMAMEN DIŞINA, component şablonunun en üst seviyesine taşımak - böylece ne\n // overflow:hidden kırpması ne de *dxTemplate içi olay bağlama sorunları yaşanır. Zaten çalıştığı\n // kanıtlanmış tekli \"İşlemler\" butonuyla (actionsTemplate) birebir aynı, basit (click) mekanizması.\n openActionsRow: DocumentTransferDto | null = null;\n actionsMenuPosition = { top: 0, left: 0 };\n\n toggleActions(row: DocumentTransferDto, event: MouseEvent) {\n event.stopPropagation();\n if (this.openActionsRow === row) {\n this.openActionsRow = null;\n return;\n }\n\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n this.actionsMenuPosition = { top: rect.bottom + window.scrollY, left: rect.left + window.scrollX };\n this.openActionsRow = row;\n }\n\n @HostListener('document:click')\n closeActionsMenu() {\n this.openActionsRow = null;\n }\n\n selectAction(action: 'view' | 'delete', row: DocumentTransferDto) {\n this.openActionsRow = null;\n if (action === 'view') {\n this.openTransferDetail(row);\n } else {\n this.deleteTransfer(row);\n }\n }\n\n // Spec §5 - muhatap eşleştirmesi bulunamayan durumda kullanıcıdan hedef SAP şirketindeki doğru\n // Müşteri/Satıcı CardCode seçimi istenecektir; bu seçimin Muhatap Eşleştirmeleri ekranına\n // yönlendirilerek yaptırılması spec tarafından açıkça izin verilen bir arayüz seçeneğidir.\n // Müşteri CardCode burada tahmin değildir: ResolveFirstTargetAsync tam olarak\n // \"SourceCompanyId + CustomerCardCode == OINV.CardCode\" eşleşmesini aradığından, eksik olan\n // eşleştirmenin CustomerCardCode değeri zaten bu faturanın kendi CardCode'udur.\n goToPartnerMapping(customerCardCode?: string, customerCardName?: string) {\n this.router.navigate(['/fbdocumentflow/partner-mappings'], {\n state: { sourceCompanyId: this.filterSourceCompanyId, customerCardCode, customerCardName },\n });\n }\n\n toggleHistory() {\n this.isHistoryExpanded = !this.isHistoryExpanded;\n }\n}\n","<div class=\"card mb-3\">\n <div class=\"card-header py-3\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:DocumentTransfers' | abpLocalization }}</h5>\n </div>\n <div class=\"card-body pt-3\">\n <div class=\"row g-3 align-items-end mb-3\">\n <div class=\"col-md-4\">\n <label class=\"form-label\">Kaynak Şirket</label>\n <select class=\"form-select\" [(ngModel)]=\"filterSourceCompanyId\" (ngModelChange)=\"search()\">\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"col-md-3\">\n <label class=\"form-label\">Kaynak Belge Durumu</label>\n <select class=\"form-select\" [(ngModel)]=\"sourceDocumentLifecycle\" (ngModelChange)=\"search()\">\n <option *ngFor=\"let o of sourceDocumentLifecycleOptions\" [ngValue]=\"o.value\">{{ o.label }}</option>\n </select>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outline-primary\" (click)=\"search()\" [disabled]=\"isListLoading || isTransfersLoading\" title=\"Listeyi yenile\">\n <i class=\"fa fa-refresh me-1\"></i>Yenile\n </button>\n </div>\n </div>\n\n <h6 class=\"mb-2\">Aktarıma Uygun Müşteri Faturaları</h6>\n <small class=\"text-muted d-block mb-2\">Belge No, NumAtCard, Proje vb. ile daraltmak için tablo başlıklarındaki arama kutularını kullanın.</small>\n\n <div *ngIf=\"isListLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Faturalar SAP'tan yükleniyor...</div>\n </div>\n\n <dx-data-grid\n *ngIf=\"!isListLoading\"\n [dataSource]=\"eligibleInvoices\"\n [showBorders]=\"true\"\n [showRowLines]=\"true\"\n [columnAutoWidth]=\"true\"\n [height]=\"'45vh'\"\n [keyboardNavigation]=\"{ enabled: false }\"\n >\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n\n <dxi-column caption=\"İşlemler\" cellTemplate=\"actionsTemplate\" [width]=\"100\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" dataType=\"number\" sortOrder=\"desc\" [width]=\"100\"></dxi-column>\n <dxi-column dataField=\"numAtCard\" caption=\"NumAtCard\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"projectCode\" caption=\"Proje\" [width]=\"90\"></dxi-column>\n <dxi-column dataField=\"cardCode\" caption=\"OINV.CardCode\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"targetCompanyName\" caption=\"Hedef Şirket\"></dxi-column>\n <dxi-column dataField=\"currency\" caption=\"Döviz\" [width]=\"80\"></dxi-column>\n <dxi-column dataField=\"statusLabel\" caption=\"Durum\" cellTemplate=\"statusTemplate\" [width]=\"130\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"openTransferPage(cell.data); $event.target.blur()\"\n [disabled]=\"!cell.data.isResolved || cell.data.targetHasDuplicateNumAtCard\"\n >\n İşlemler\n </button>\n </div>\n\n <div *dxTemplate=\"let cell of 'statusTemplate'\" class=\"d-flex flex-column align-items-start py-2\">\n <span\n class=\"badge\"\n [class.bg-success]=\"invoiceStatusLabel(cell.data) === 'Aktarılabilir'\"\n [class.bg-secondary]=\"invoiceStatusLabel(cell.data) === 'Hedefte mevcut'\"\n [class.bg-warning]=\"invoiceStatusLabel(cell.data) === 'Eşleştirme yok'\"\n >\n {{ invoiceStatusLabel(cell.data) }}\n </span>\n <button\n *ngIf=\"!cell.data.isResolved\"\n type=\"button\"\n class=\"btn btn-outline-warning btn-sm mt-2 py-0 px-2\"\n style=\"font-size: 0.72rem\"\n (click)=\"goToPartnerMapping(cell.data.cardCode, cell.data.cardName)\"\n title=\"Muhatap Eşleştirmeleri ekranına git\"\n >\n <i class=\"fa fa-link me-1\"></i>Eşleştir\n </button>\n </div>\n </dx-data-grid>\n\n <small class=\"text-muted d-block mt-2\">\n \"Hedefte mevcut\" bilgisi, kaynak OINV.NumAtCard değerinin hedef şirkette OPCH.NumAtCard alanında bulunması halinde gösterilir.\n </small>\n </div>\n</div>\n\n<div class=\"card\">\n <div class=\"card-header py-3\" role=\"button\" (click)=\"toggleHistory()\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <h5 class=\"card-title mb-0\">İşlem Geçmişi</h5>\n <i class=\"fa\" [class.fa-chevron-up]=\"isHistoryExpanded\" [class.fa-chevron-down]=\"!isHistoryExpanded\"></i>\n </div>\n </div>\n <div class=\"card-body pt-3\" [hidden]=\"!isHistoryExpanded\">\n <small class=\"text-muted d-block mb-2\">Seçili kaynak şirket için daha önce başlatılmış aktarımlar (işlem bekliyor, devam eden, tamamlanan, hatalı, iptal edilen).</small>\n\n <div *ngIf=\"isTransfersLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Yükleniyor...</div>\n </div>\n\n <dx-data-grid\n *ngIf=\"!isTransfersLoading\"\n [dataSource]=\"transfers\"\n [showBorders]=\"true\"\n [showRowLines]=\"true\"\n [columnAutoWidth]=\"true\"\n [height]=\"'40vh'\"\n [keyboardNavigation]=\"{ enabled: false }\"\n >\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n\n <dxi-column caption=\"İşlemler\" cellTemplate=\"viewTemplate\" [width]=\"120\" [allowFiltering]=\"false\" [allowSorting]=\"false\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"sourceOinvDocNum\" caption=\"Kaynak Belge\" [width]=\"110\"></dxi-column>\n <dxi-column dataField=\"projectCode\" caption=\"Proje\" [width]=\"90\"></dxi-column>\n <dxi-column dataField=\"intercompanyId\" caption=\"Intercompany Id\"></dxi-column>\n <!-- Kullanıcı geri bildirimiyle tespit edildi: İşlem Geçmişi'nde bir kaydın normal (Kayıtlı) mi\n yoksa Taslak mı olduğu hiç görünmüyordu - Aktarım Durumu (Durum sütunu) ile karıştırılmasın diye\n Kaynak/Hedef Belge Durumu ayrı sütunlar olarak eklendi (bkz. spec §14). -->\n <dxi-column dataField=\"sourceDocumentLifecycle\" caption=\"Kaynak Belge Durumu\" [width]=\"140\">\n <dxo-lookup [dataSource]=\"sourceDocumentLifecycleOptions\" valueExpr=\"value\" displayExpr=\"label\"></dxo-lookup>\n </dxi-column>\n <dxi-column dataField=\"targetDocumentLifecycle\" caption=\"Hedef Belge Durumu\" [width]=\"140\">\n <dxo-lookup [dataSource]=\"sourceDocumentLifecycleOptions\" valueExpr=\"value\" displayExpr=\"label\"></dxo-lookup>\n </dxi-column>\n <dxi-column dataField=\"status\" caption=\"Durum\" cellTemplate=\"transferStatusTemplate\" [width]=\"130\">\n <dxo-lookup [dataSource]=\"transferStatusLookup\" valueExpr=\"value\" displayExpr=\"text\"></dxo-lookup>\n </dxi-column>\n <dxi-column\n dataField=\"creationTime\"\n caption=\"Oluşturma Tarihi\"\n dataType=\"datetime\"\n format=\"dd.MM.yyyy HH:mm\"\n [width]=\"150\"\n sortOrder=\"desc\"\n ></dxi-column>\n\n <div *dxTemplate=\"let cell of 'viewTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary\" type=\"button\" (click)=\"toggleActions(cell.data, $event)\">\n İşlemler <i class=\"fa fa-caret-down ms-1\"></i>\n </button>\n </div>\n\n <div *dxTemplate=\"let cell of 'transferStatusTemplate'\">\n <span\n class=\"badge\"\n [class.bg-secondary]=\"cell.value === 0\"\n [class.bg-primary]=\"cell.value === 1\"\n [class.bg-success]=\"cell.value === 2\"\n [class.bg-danger]=\"cell.value === 3\"\n [class.bg-warning]=\"cell.value === 4\"\n >\n {{ transferStatusLabel(cell.value) }}\n </span>\n </div>\n </dx-data-grid>\n </div>\n</div>\n\n<!-- Grid'in DIŞINDA: dx-data-grid hücrelerinin overflow:hidden kırpması ve *dxTemplate içi olay bağlama\n sorunları yaşanmasın diye \"İşlemler\" menüsü buraya, component şablonunun en üst seviyesine taşındı. -->\n<ul\n *ngIf=\"openActionsRow as row\"\n class=\"list-unstyled m-0 bg-white border rounded shadow-sm\"\n [style.position]=\"'absolute'\"\n [style.top.px]=\"actionsMenuPosition.top\"\n [style.left.px]=\"actionsMenuPosition.left\"\n style=\"z-index: 1050; min-width: 140px; padding: 4px 0\"\n (click)=\"$event.stopPropagation()\"\n>\n <li>\n <button type=\"button\" class=\"d-block w-100 text-start border-0 bg-white px-3 py-1\" (click)=\"selectAction('view', row)\">\n <i class=\"fa fa-eye me-2\"></i>Görüntüle\n </button>\n </li>\n <li *ngIf=\"canDeleteTransfer(row)\">\n <button type=\"button\" class=\"d-block w-100 text-start border-0 bg-white px-3 py-1 text-danger\" (click)=\"selectAction('delete', row)\">\n <i class=\"fa fa-trash me-2\"></i>Sil\n </button>\n </li>\n</ul>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport { from, of } from 'rxjs';\nimport { concatMap, finalize, switchMap, toArray } from 'rxjs/operators';\nimport {\n ConstructionDraftDocumentType,\n DocumentTransferDto,\n DocumentTransferLegDto,\n DocumentTransferService,\n SapDocumentLifecycle,\n} from '../../../proxy/document-transfers';\nimport { DocumentScenarioDto, DocumentScenarioService, LegBehavior } from '../../../proxy/document-scenarios';\nimport { SapCompanyProfileDto, SapCompanyProfileService } from '../../../proxy/sap-company-profiles';\n\nconst DOCUMENT_TRANSFER_STATUS_DRAFT = 0;\nconst DOCUMENT_TRANSFER_STATUS_COMPLETED = 2;\nconst DOCUMENT_TRANSFER_STATUS_CANCELLED = 4;\nconst DOCUMENT_TRANSFER_LEG_STATUS_PENDING = 0;\nconst DOCUMENT_TRANSFER_LEG_STATUS_SUCCESS = 1;\nconst DOCUMENT_TRANSFER_LEG_STATUS_FAILED = 2;\n\n/// Belge Aktarımı listesinden \"İşlemler\" ile buraya gelinir. Popup yerine ayrı bir sayfa olarak\n/// tasarlanmıştır ki kullanıcı sonucu (özellikle hata) kaybetmeden inceleyebilsin, sayfayı yenileyebilsin\n/// ve \"Listeye Dön\" ile her zaman aynı yere geri dönebilsin.\ninterface NewTransferState {\n sourceCompanyId: string;\n sourceCompanyName?: string;\n docEntry: number;\n docNum?: string;\n numAtCard?: string;\n projectCode?: string;\n targetCompanyId?: string;\n targetCompanyName?: string;\n currency?: string;\n // Kaynak faturanın kendi modu - Belge Aktarımı listesindeki filtreden (hangi fatura seçildiyse ona göre)\n // gelir, SABİTTİR ve bu ekranda DEĞİŞTİRİLEMEZ (kullanıcı geri bildirimiyle netleştirildi: kaynağın\n // taslak/işlenmiş olma hali, hangi DocEntry'nin seçildiğine bağlı değişmez bir gerçektir).\n sourceDocumentLifecycle: SapDocumentLifecycle;\n // Hedefte oluşacak belgelerin modu - kaynaktan BAĞIMSIZ, kullanıcı bu ekranda seçer (ör. Kayıtlı bir\n // kaynaktan Taslak hedef belgeler üretilebilir).\n targetDocumentLifecycle: SapDocumentLifecycle;\n}\n\n@Component({\n selector: 'hit-document-transfer-detail',\n templateUrl: './hit-document-transfer-detail.component.html',\n})\nexport class HitDocumentTransferDetailComponent implements OnInit {\n isNew = false;\n newState: NewTransferState | null = null;\n\n scenarios: DocumentScenarioDto[] = [];\n scenarioId = '';\n isFetchingScenario = false;\n\n companies: SapCompanyProfileDto[] = [];\n legBehaviors = [\n { value: LegBehavior.IntermediateChain, label: 'Ara Şirket' },\n { value: LegBehavior.ConstructionChain, label: 'Construction' },\n ];\n\n // Spec §14 (18.09.2026 kararı) - süreç parametrik. Aktarım henüz oluşturulmadıysa (isNew) kullanıcı bu\n // ekranda \"Hedef Belge Durumu\"nu seçebilir (kaynaktan bağımsız). Aktarım oluştuktan sonra bu alan\n // backend'de sabitlenir (DocumentTransfer.TargetDocumentLifecycle immutable), bu yüzden workingCopy\n // varken salt-okunur gösterilir. Kullanıcı isteğiyle Kaynak Belge Durumu ile AYNI etiketler kullanılır.\n documentLifecycleOptions = [\n { value: SapDocumentLifecycle.Posted, label: 'Kayıtlı Müşteri Faturası' },\n { value: SapDocumentLifecycle.Draft, label: 'Taslak Müşteri Faturası' },\n ];\n\n // Spec ek karar (18.09.2026) - hedef Taslak iken Construction bacağının (OPOR→OPDN→OPCH) taban belge\n // zinciri taslaklar arasında çalışmaz; bu durumda kullanıcı üç belge tipinden yalnızca birini seçer.\n constructionDraftDocTypeOptions = [\n { value: ConstructionDraftDocumentType.PurchaseOrder, label: 'OPOR' },\n { value: ConstructionDraftDocumentType.GoodsReceipt, label: 'OPDN' },\n { value: ConstructionDraftDocumentType.APInvoice, label: 'OPCH' },\n ];\n\n workingCopy: DocumentTransferDto | null = null;\n isLoading = false;\n isStarting = false;\n isExecuting = false;\n isMutatingLegs = false;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private service: DocumentTransferService,\n private scenarioService: DocumentScenarioService,\n private companyService: SapCompanyProfileService,\n private confirmation: ConfirmationService\n ) {}\n\n ngOnInit() {\n this.scenarioService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => (this.scenarios = result.items));\n this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => (this.companies = result.items));\n\n const id = this.route.snapshot.paramMap.get('id');\n if (id === 'new') {\n this.isNew = true;\n const state = history.state as NewTransferState | undefined;\n if (!state?.sourceCompanyId || state.docEntry == null) {\n // Sayfa doğrudan yenilenmiş/yeni sekmede açılmışsa router state kaybolur; kaynak faturanın\n // seçilmesi gereken listeye geri yönlendirilir.\n this.router.navigate(['/fbdocumentflow/document-transfers']);\n return;\n }\n // sourceDocumentLifecycle, Belge Aktarımı listesindeki filtreden gelir ve sabittir (router state hiç\n // taşınmadıysa - ör. doğrudan bağlantıyla gelinmişse - varsayılan Kayıtlı kabul edilir).\n // targetDocumentLifecycle ise kullanıcının bu ekranda seçeceği, kaynaktan bağımsız bir değerdir;\n // başlangıçta varsayılan olarak Kayıtlı gelir, kullanıcı isterse Taslak'a çevirir.\n this.newState = {\n ...state,\n sourceDocumentLifecycle: state.sourceDocumentLifecycle ?? SapDocumentLifecycle.Posted,\n targetDocumentLifecycle: SapDocumentLifecycle.Posted,\n };\n } else if (id) {\n this.loadWorkingCopy(id);\n }\n }\n\n companyName(): string {\n return this.newState?.sourceCompanyName ?? this.workingCopy?.sourceCompanyName ?? '';\n }\n\n scenarioName(): string {\n if (!this.workingCopy?.scenarioId) {\n return 'Senaryosuz (yalnızca ilk hedef bacağı)';\n }\n return this.scenarios.find(s => s.id === this.workingCopy?.scenarioId)?.name ?? this.workingCopy.scenarioId;\n }\n\n // Bir senaryonun ilk bacağı belirli bir kaynak şirket ve hedef şirket için tanımlanmıştır. Spec §3 -\n // kaynak belgenin ilk hedefi her zaman OINV.CardCode + Muhatap Eşleştirmeleri ile tespit edilir; hazır\n // senaryo bu hedefi değiştiremez. Bu yüzden hem kaynak şirketi hem de zaten tespit edilmiş ilk hedefi\n // uyuşmayan senaryolar seçilebilir listeden çıkarılır - aksi halde backend\n // ScenarioSourceCompanyMismatch/ScenarioFirstTargetMismatch hatası verir.\n availableScenarios(): DocumentScenarioDto[] {\n const sourceCompanyId = this.newState?.sourceCompanyId ?? this.workingCopy?.sourceCompanyId;\n const resolvedTargetCompanyId = this.newState?.targetCompanyId ?? this.workingCopy?.legs?.[0]?.targetCompanyId;\n if (!sourceCompanyId) {\n return this.scenarios;\n }\n\n return this.scenarios.filter(s => {\n const firstLeg = [...s.legs].sort((a, b) => a.sequenceNo - b.sequenceNo)[0];\n if (!firstLeg) {\n return true;\n }\n if (firstLeg.sourceCompanyId !== sourceCompanyId) {\n return false;\n }\n return !resolvedTargetCompanyId || firstLeg.targetCompanyId === resolvedTargetCompanyId;\n });\n }\n\n isDraft(): boolean {\n return this.isNew || (this.workingCopy?.status ?? DOCUMENT_TRANSFER_STATUS_DRAFT) === DOCUMENT_TRANSFER_STATUS_DRAFT;\n }\n\n // Bekleyen bacaklar ilk kez çalıştırılabilir; hatalı bacaklar da tekrar denenebilir çünkü bu noktada\n // henüz hiçbir SAP belgesi oluşmamıştır (aksi halde spec §13 gereği tüm zincir iptal edilip yeniden\n // kurulmalıdır, tek bacak tekrarı değil).\n // Spec §12-13 - iptal edilmiş (veya tamamlanmış) bir zincir tekrar çalıştırılmaz; kullanıcı yeniden\n // oluşturma sürecini (kaynak faturadan yeni bir aktarım başlatarak, yeni bir Intercompany Id ile)\n // başlatır. Bekleyen/Hatalı bir bacak kalmış olsa bile (zincir henüz tüm bacakları çalıştırmadan iptal\n // edildiyse) bu bacaklar artık çalıştırılamaz - backend da bunu TransferNotEditable ile reddeder,\n // burada buton en baştan devre dışı bırakılarak kullanıcıya net bir sinyal verilir.\n canExecuteLeg(leg: DocumentTransferLegDto): boolean {\n const transferStatus = this.workingCopy?.status;\n if (transferStatus === DOCUMENT_TRANSFER_STATUS_CANCELLED || transferStatus === DOCUMENT_TRANSFER_STATUS_COMPLETED) {\n return false;\n }\n if (this.isConstructionDraftSelectable(leg) && leg.selectedConstructionDraftDocType == null) {\n return false;\n }\n return leg.status === DOCUMENT_TRANSFER_LEG_STATUS_PENDING || leg.status === DOCUMENT_TRANSFER_LEG_STATUS_FAILED;\n }\n\n // Spec ek karar (18.09.2026) - hedef Taslak iken Construction bacağının OPOR→OPDN→OPCH taban belge\n // zinciri taslaklar arasında çalışmaz; bu bacaklarda kullanıcı zincir yerine TEK bir belge tipi seçer\n // (bkz. ExecuteSingleDraftDocumentAsync, backend). Hedef Kayıtlı iken (normal zincir) bu geçerli değildir.\n isConstructionDraftSelectable(leg: DocumentTransferLegDto): boolean {\n return leg.legBehavior === LegBehavior.ConstructionChain && this.workingCopy?.targetDocumentLifecycle === SapDocumentLifecycle.Draft;\n }\n\n hasMissingConstructionDraftSelection(): boolean {\n return (this.workingCopy?.legs ?? []).some(l => this.isConstructionDraftSelectable(l) && l.selectedConstructionDraftDocType == null);\n }\n\n updateLegConstructionDraftDocType(leg: DocumentTransferLegDto, value: ConstructionDraftDocumentType | null) {\n if (!this.workingCopy) {\n return;\n }\n\n leg.selectedConstructionDraftDocType = value ?? undefined;\n this.persistLegChanges();\n }\n\n legTargetDocLabel(leg: DocumentTransferLegDto): string {\n const isLastLeg = leg.sequenceNo >= (this.workingCopy?.legs.length ?? 0);\n if (leg.legBehavior === LegBehavior.ConstructionChain) {\n if (this.isConstructionDraftSelectable(leg)) {\n const selectedLabel =\n this.constructionDraftDocTypeOptions.find(o => o.value === leg.selectedConstructionDraftDocType)?.label ?? 'Seçilmedi';\n return isLastLeg ? selectedLabel : `${selectedLabel} → OINV`;\n }\n return isLastLeg ? 'OPOR → OPDN → OPCH' : 'OPOR → OPDN → OPCH → OINV';\n }\n return isLastLeg ? 'OPCH' : 'OPCH → OINV';\n }\n\n // Spec §9 - artırım yalnızca IntermediateChain'de değil, ConstructionChain bacağının (sonraki bacak\n // varsa) oluşturduğu devam Müşteri Faturasında da uygulanır - önceden yalnızca IntermediateChain\n // kontrol ediliyordu, bu da bir Construction bacağının hedefinde artırım oranı tanımsızken kullanıcının\n // hiç uyarılmadan sessizce artırımsız devam edilmesine yol açıyordu (kod incelemesiyle tespit edildi).\n hasMissingIncreaseRate(): boolean {\n return (this.workingCopy?.legs ?? []).some(\n l =>\n (l.legBehavior === LegBehavior.IntermediateChain || l.legBehavior === LegBehavior.ConstructionChain) &&\n l.plannedIncreaseRate == null\n );\n }\n\n // NumAtCard girişi yalnızca ara şirket bacaklarından, zincirin SON bacağı OLMAYANLAR için anlamlıdır\n // (o bacakta aynı şirkette yeni bir Müşteri Faturası oluşuyor ve NumAtCard'ı kullanıcı belirler).\n hasIntermediateNumAtCardLegs(): boolean {\n const legs = this.workingCopy?.legs ?? [];\n return legs.some(l => l.legBehavior === LegBehavior.IntermediateChain && l.sequenceNo < legs.length);\n }\n\n // Spec §4 - kullanıcı çalışma kopyasındaki bacakların hedef şirketini/davranışını (Ara Şirket veya\n // Construction) değiştirebilmeli; bu değişiklik yalnızca bu aktarımın çalışma kopyasını etkiler, ana\n // Hazır Senaryo tanımını (varsa) hiç değiştirmez. Kaynak şirket ayrıca düzenlenmez: zincirdeki her\n // bacağın kaynağı, bir önceki bacağın hedefinden (veya ilk bacaksa aktarımın kendi kaynağından) backend\n // tarafından otomatik türetilir (bkz. DocumentTransferAppService.AddLegAsync).\n updateLegTarget(leg: DocumentTransferLegDto, targetCompanyId: string) {\n if (!this.workingCopy) {\n return;\n }\n\n leg.targetCompanyId = targetCompanyId;\n leg.targetCompanyName = this.companies.find(c => c.id === targetCompanyId)?.companyName;\n this.persistLegChanges();\n }\n\n updateLegBehavior(leg: DocumentTransferLegDto, legBehavior: LegBehavior) {\n if (!this.workingCopy) {\n return;\n }\n\n leg.legBehavior = legBehavior;\n this.persistLegChanges();\n }\n\n // Hedef/Davranış dropdown'ı değiştiğinde yalnızca O bacağı kaydedip sunucudan dönen tam workingCopy'yi\n // olduğu gibi ekrana yansıtırsak, kullanıcının BAŞKA bir bacağa henüz yazdığı ama henüz senkronize\n // edilmemiş NumAtCard/Döviz/Kur değerleri (bunlar yalnızca \"Çalıştır\"/\"Başlat\" öncesi toplu gönderilir)\n // sunucudaki eski değerle geri gelen o bacak nesnesi tarafından sessizce ezilir/boşalır - gerçek\n // ortamda doğrulandı. Bu yüzden dropdown değişikliğinde de TÜM bacaklardaki mevcut değerler\n // (syncPendingLegChanges ile, sıralı/concurrency-safe) birlikte gönderilir.\n private persistLegChanges() {\n if (!this.workingCopy) {\n return;\n }\n\n this.isMutatingLegs = true;\n this.syncPendingLegChanges(this.workingCopy.legs)\n .pipe(finalize(() => (this.isMutatingLegs = false)))\n .subscribe(results => {\n const last = results?.[results.length - 1];\n if (last) {\n this.workingCopy = last;\n }\n });\n }\n\n // Zincire yeni bir bacak ekler: kaynağı otomatik olarak son bacağın hedefinden (ilk bacaksa aktarımın\n // kendi kaynak şirketinden) türetilir. Varsayılan hedef, henüz zincirde olmayan ilk şirkettir; kullanıcı\n // ekledikten sonra dropdown'lardan hedefi/davranışı değiştirebilir.\n addLeg() {\n if (!this.workingCopy || this.companies.length === 0) {\n return;\n }\n\n // Yeni bacağın kaynağı backend'de otomatik olarak son bacağın hedefinden türetilir (bkz.\n // DocumentTransferAppService.AddLegAsync). Varsayılan HEDEF seçilirken bu kaynakla AYNI şirket asla\n // önerilmemelidir - aksi halde bir şirketin kendi kendine fatura kestiği anlamsız bir bacak oluşur.\n // Önceden şirket havuzu tükendiğinde (tüm şirketler zaten bir bacakta hedef olarak kullanılmışsa)\n // fallback doğrudan companies[0]'a düşüyordu; bu tesadüfen kaynakla aynı şirkete denk gelip self-loop\n // (Kaynak=Hedef) bacak oluşturabiliyordu (kullanıcı geri bildirimiyle tespit edildi).\n const lastLeg = [...this.workingCopy.legs].sort((a, b) => a.sequenceNo - b.sequenceNo).slice(-1)[0];\n const newLegSourceCompanyId = lastLeg?.targetCompanyId ?? this.workingCopy.sourceCompanyId;\n\n const usedCompanyIds = new Set(this.workingCopy.legs.map(l => l.targetCompanyId));\n const defaultTarget =\n this.companies.find(c => !usedCompanyIds.has(c.id) && c.id !== newLegSourceCompanyId) ??\n this.companies.find(c => c.id !== newLegSourceCompanyId) ??\n this.companies[0];\n\n // Önce mevcut bacaklardaki henüz senkronize edilmemiş NumAtCard/Döviz/Kur değerleri kaydedilir -\n // aksi halde yeni bacak eklendiğinde dönen tam workingCopy, kullanıcının az önce yazdığı ama hiç\n // sunucuya gönderilmemiş değerleri eski/boş DB değeriyle ezerdi (persistLegChanges ile aynı sorun).\n this.isMutatingLegs = true;\n this.syncPendingLegChanges(this.workingCopy.legs)\n .pipe(\n switchMap(() =>\n this.service.addLeg(this.workingCopy!.id, {\n targetCompanyId: defaultTarget.id,\n legBehavior: LegBehavior.IntermediateChain,\n })\n ),\n finalize(() => (this.isMutatingLegs = false))\n )\n .subscribe(result => (this.workingCopy = result));\n }\n\n // Spec §5 - muhatap eşleştirmesi bulunamayan bacakta kullanıcıdan hedef SAP şirketindeki doğru\n // Müşteri/Satıcı CardCode seçimi istenecektir; bu, Muhatap Eşleştirmeleri ekranına yönlendirilerek\n // yaptırılabilir (spec tarafından açıkça izin verilen arayüz seçeneklerinden biri). \"Bulunulan Şirket\"\n // burada hedef (OPCH'nin oluşacağı) şirkettir, \"İlişkili Şirket\" ise kaynak şirkettir - bkz.\n // ResolveVendorCardCodeAsync(inCompanyId: hedef, forRelatedCompanyId: kaynak).\n goToPartnerMapping(leg: DocumentTransferLegDto) {\n this.router.navigate(['/fbdocumentflow/partner-mappings'], {\n state: { sourceCompanyId: leg.targetCompanyId, relatedCompanyId: leg.sourceCompanyId },\n });\n }\n\n removeLeg(leg: DocumentTransferLegDto) {\n if (!this.workingCopy || this.workingCopy.legs.length <= 1) {\n return;\n }\n\n // Aynı nedenle (bkz. addLeg) silinmeyen diğer bacaklardaki senkronize edilmemiş değerler önce kaydedilir.\n const remainingLegs = this.workingCopy.legs.filter(l => l.id !== leg.id);\n this.isMutatingLegs = true;\n this.syncPendingLegChanges(remainingLegs)\n .pipe(\n switchMap(() => this.service.removeLeg(this.workingCopy!.id, leg.id)),\n finalize(() => (this.isMutatingLegs = false))\n )\n .subscribe(result => (this.workingCopy = result));\n }\n\n // Yeni bir aktarım için çalışma kopyasını ilk kez oluşturur. Zaten oluşturulmuş ama henüz\n // çalıştırılmamış (taslak) bir aktarımda senaryo değiştirmek için applyScenario() kullanılır -\n // örn. \"İşlem Geçmişi\"nden geri dönülen bir taslak kayıtta.\n fetchScenario() {\n if (!this.newState) {\n return;\n }\n\n this.isFetchingScenario = true;\n this.service\n .create({\n sourceCompanyId: this.newState.sourceCompanyId,\n sourceOinvDocEntry: this.newState.docEntry,\n scenarioId: this.scenarioId || undefined,\n sourceDocumentLifecycle: this.newState.sourceDocumentLifecycle,\n targetDocumentLifecycle: this.newState.targetDocumentLifecycle,\n })\n .pipe(finalize(() => (this.isFetchingScenario = false)))\n .subscribe(result => {\n this.workingCopy = result;\n this.isNew = false;\n // URL'i oluşan kayda göre değiştir - sayfa yenilenirse veya geri/ileri gidilirse doğru kayıt yüklensin.\n this.router.navigate(['/fbdocumentflow/document-transfers', result.id], { replaceUrl: true });\n });\n }\n\n applyScenario() {\n if (!this.workingCopy) {\n return;\n }\n\n this.isFetchingScenario = true;\n this.service\n .applyScenario(this.workingCopy.id, { scenarioId: this.scenarioId || undefined })\n .pipe(finalize(() => (this.isFetchingScenario = false)))\n .subscribe(result => {\n this.workingCopy = result;\n this.scenarioId = result.scenarioId ?? '';\n });\n }\n\n private loadWorkingCopy(id: string) {\n this.isLoading = true;\n this.service\n .get(id)\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(result => {\n this.workingCopy = result;\n this.scenarioId = result.scenarioId ?? '';\n });\n }\n\n private buildLegUpdateInput(leg: DocumentTransferLegDto) {\n return {\n targetCompanyId: leg.targetCompanyId,\n legBehavior: leg.legBehavior,\n numAtCard: leg.numAtCard,\n currency: leg.currency,\n exchangeRate: leg.exchangeRate,\n freightAmount: leg.freightAmount,\n selectedConstructionDraftDocType: leg.selectedConstructionDraftDocType,\n };\n }\n\n // NumAtCard/Döviz/Kur alanları kullanıcı yazarken/alanı terk ederken ayrı bir \"kaydet\" isteği\n // göndermiyor (bu, art arda hızlı isteklerin ConcurrencyStamp yarış durumuna - AbpDbConcurrencyException,\n // \"veri başka bir kullanıcı tarafından değiştirilmiş\" - yol açtığı gerçek ortamda gözlemlendi). Bunun\n // yerine ekrandaki değerler yalnızca \"Çalıştır\"/\"Belge Akışını Başlat\" tetiklendiği anda, o çağrıdan\n // hemen önce tek seferde backend'e senkronize edilir. Spec §10 - döviz/kur her bacak için (Construction\n // dahil, son bacak dahil) geçerli olduğundan NumAtCard'ın aksine davranış/sıra bazlı filtrelenmez.\n private syncPendingLegChanges(legs: DocumentTransferLegDto[]) {\n // Zaten Başarılı (Success) olmuş bir bacak backend'de artık düzenlenemez (EnsureLegIsEditable,\n // FBDocumentFlow:010017 \"LegAlreadySucceeded\" fırlatır) - bu fonksiyona önceden TÜM bacaklar\n // (zaten başarılı olanlar dahil) gönderiliyordu. Bu, örn. bir zincirde 1-2. bacak Başarılı, 3. bacak\n // Hatalı iken 3. bacağı tekrar \"Çalıştır\"a basmayı TAMAMEN imkansız hale getiriyordu - senkronizasyon\n // adımı, henüz 3. bacağa hiç sıra gelmeden, zaten başarılı 1. bacakta bu hatayla patlıyordu (gerçek\n // ortamda gözlemlendi). Yalnızca hâlâ düzenlenebilir (Success olmayan) bacaklar senkronize edilir.\n const editableLegs = legs.filter(l => l.status !== DOCUMENT_TRANSFER_LEG_STATUS_SUCCESS);\n\n if (!this.workingCopy || editableLegs.length === 0) {\n return of(null);\n }\n\n // Bacaklar aynı DocumentTransfer (aggregate root) kaydını paylaştığı için forkJoin ile paralel\n // gönderilirse her istek aynı ConcurrencyStamp'i yükler; ilk kaydeden dışındakiler\n // AbpDbConcurrencyException (\"veri başka bir kullanıcı/istemci tarafından değiştirilmiş\") alır -\n // gerçek ortamda doğrulandı. concatMap ile sırayla gönderilir, her istek bir öncekinin\n // kaydettiği güncel stamp üzerinden devam eder.\n return from(editableLegs).pipe(\n concatMap(leg => this.service.updateLeg(this.workingCopy!.id, leg.id, this.buildLegUpdateInput(leg))),\n toArray()\n );\n }\n\n backToList() {\n const sourceCompanyId = this.newState?.sourceCompanyId ?? this.workingCopy?.sourceCompanyId;\n this.router.navigate(['/fbdocumentflow/document-transfers'], {\n state: sourceCompanyId ? { sourceCompanyId } : undefined,\n });\n }\n\n startFlow() {\n if (!this.workingCopy) {\n return;\n }\n\n // Spec §9 - U_Oran tanımsızken akış bloklanmaz; ancak kullanıcının bunu bilerek onaylaması gerekir.\n if (this.hasMissingIncreaseRate()) {\n this.confirmation\n .warn(\n 'Bu şirkette bu proje için artırım oranı tanımlı değildir. Artırım uygulanmadan devam etmek istiyor musunuz?',\n 'FBDocumentFlow::AreYouSure'\n )\n .subscribe(status => {\n if (status === Confirmation.Status.confirm) {\n this.executeStartFlow();\n }\n });\n return;\n }\n\n this.executeStartFlow();\n }\n\n private executeStartFlow() {\n if (!this.workingCopy) {\n return;\n }\n\n this.isStarting = true;\n this.syncPendingLegChanges(this.workingCopy.legs)\n .pipe(\n switchMap(() => this.service.executeAll(this.workingCopy!.id)),\n finalize(() => (this.isStarting = false))\n )\n .subscribe({\n next: result => (this.workingCopy = result),\n // ABP zaten başarısız HTTP çağrılarında genel bir hata diyaloğu gösterir.\n error: () => {\n this.isStarting = false;\n },\n });\n }\n\n // Yalnızca [leg] (çalıştırılan bacak) senkronize edilirse, kullanıcının BAŞKA bir bacağa yazdığı ama\n // henüz gönderilmemiş NumAtCard/Döviz/Kur değerleri hiç kaydedilmeden kalır - ardından çağrılan\n // loadWorkingCopy() sunucudaki eski (boş) değerle o bacağı ezer, kullanıcı yazdığı değeri kaybeder\n // (gerçek ortamda doğrulandı, executeStartFlow'daki gibi TÜM bacaklar senkronize edilmeli).\n executeLeg(leg: DocumentTransferLegDto) {\n if (!this.workingCopy || !this.canExecuteLeg(leg)) {\n return;\n }\n\n this.isExecuting = true;\n this.syncPendingLegChanges(this.workingCopy.legs)\n .pipe(\n switchMap(() => this.service.executeLeg(this.workingCopy!.id, leg.id)),\n finalize(() => (this.isExecuting = false))\n )\n .subscribe(() => this.loadWorkingCopy(this.workingCopy!.id));\n }\n\n // \"Zinciri İptal Et\" yalnızca fiilen iptal edilecek bir şey varken (Devam Ediyor/Hatalı) anlamlıdır;\n // zaten İptal Edildi veya Tamamlandı durumundaki bir aktarımda tekrar gösterilmesi kullanıcıyı\n // yanıltır (spec §12-13 - iptal edilmiş bir zincir tekrar işleme alınmaz, yeniden oluşturma sürecine\n // kaynak faturadan yeni bir aktarımla girilir).\n canCancelChain(): boolean {\n const status = this.workingCopy?.status;\n return status === 1 || status === 3; // 1=Devam Ediyor, 3=Hatalı\n }\n\n cancelChain() {\n if (!this.workingCopy) {\n return;\n }\n\n this.confirmation.warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure').subscribe(status => {\n if (status === Confirmation.Status.confirm && this.workingCopy) {\n // İptalden sonra bu sayfada kalmak yerine listeye dönülür - backToList() zaten seçili kaynak\n // şirketi router state ile taşıyıp liste ekranında aynı şirketin seçili kalmasını sağlıyor.\n this.service.cancelChain(this.workingCopy.intercompanyId).subscribe(() => {\n this.backToList();\n });\n }\n });\n }\n\n statusLabel(status: number): string {\n return ['İşlem Bekliyor', 'Devam Ediyor', 'Tamamlandı', 'Hatalı', 'İptal Edildi'][status] ?? String(status);\n }\n\n // Spec §14 (18.09.2026 kararı) - süreç parametrik; Kaynak ve Hedef Belge Durumu için AYNI etiket\n // kullanılır (kullanıcı isteğiyle netleştirildi).\n sourceDocumentLifecycleLabel(lifecycle?: SapDocumentLifecycle): string {\n if (lifecycle == null) {\n return '';\n }\n return lifecycle === SapDocumentLifecycle.Draft ? 'Taslak Müşteri Faturası' : 'Kayıtlı Müşteri Faturası';\n }\n\n legStatusLabel(status: number): string {\n return ['Bekliyor', 'Başarılı', 'Hatalı', 'Atlandı'][status] ?? String(status);\n }\n\n // Bir bacakta (özellikle Construction: OPOR→OPDN→OPCH, veya Ara Şirket'te devam OINV oluştuğunda)\n // BİRDEN FAZLA SAP belgesi oluşabilir; önceden yalnızca \"son\" belge (leg.createdDocType/createdDocEntry)\n // gösteriliyordu, diğerleri (OPOR/OPDN, devam OINV) DTO'da vardı ama ekranda hiç görünmüyordu.\n // Sonuç belge etiketleri (spec §15 - Teknik SAP B1 Alanları tablosundaki nesne kısaltmalarıyla birebir):\n // OPOR/OPDN/OPCH/OINV. Önceden burada leg.createdDocType (backend'de her zaman ham SAP Service Layer\n // entity set adı \"PurchaseInvoices\" olarak sabit) doğrudan gösteriliyordu - OPOR/OPDN gibi kısa SAP\n // kodlarıyla aynı satırda karışık görünüp anlam karmaşasına yol açıyordu (kullanıcı geri bildirimiyle\n // tespit edildi). Artık tüm belge tipleri aynı kısaltma setiyle, tutarlı şekilde gösteriliyor.\n // Ekranda gösterilecek belge numarası her zaman DocNum üzerinden yürür (kullanıcı geri bildirimiyle\n // netleştirildi) - DocEntry (SAP'ın dahili anahtarı) yalnızca fallback'tir, DocNum bir sebeple\n // yakalanamadıysa (ör. çok eski bir kayıt) belge tamamen kaybolmuş görünmesin diye.\n createdDocumentsSummary(leg: DocumentTransferLegDto): string {\n const parts: string[] = [];\n if (leg.createdPurchaseOrderDocEntry) {\n parts.push(`OPOR ${leg.createdPurchaseOrderDocNum ?? leg.createdPurchaseOrderDocEntry}`);\n }\n if (leg.createdGoodsReceiptDocEntry) {\n parts.push(`OPDN ${leg.createdGoodsReceiptDocNum ?? leg.createdGoodsReceiptDocEntry}`);\n }\n if (leg.createdDocEntry) {\n parts.push(`OPCH ${leg.createdDocNum ?? leg.createdDocEntry}`);\n }\n if (leg.createdInternalOinvDocEntry) {\n parts.push(`OINV ${leg.createdInternalOinvDocNum ?? leg.createdInternalOinvDocEntry}`);\n }\n return parts.join(' → ');\n }\n}\n","<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">Belge Akışı / Intercompany Aktarımı</h5>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-sm btn-outline-secondary\" (click)=\"backToList()\">\n <i class=\"fa fa-arrow-left me-1\"></i>Listeye Dön\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Yükleniyor...</div>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <!-- Bu satır hem \"yeni\" (henüz kayıt oluşmamış) hem de kayıt oluştuktan sonraki taslak durumunda\n AYNI alan setini gösterir - kayıt oluşunca ekranın alan seti değişip kullanıcıda \"başka bir\n kayıt mı bu\" izlenimi vermesin diye. Değerler önce newState'ten (istemcide tutulan önizleme),\n o yoksa oluşan kaydın ilk bacağından (workingCopy.legs[0]) okunur - ilk bacak her zaman\n newState'in temsil ettiği \"ilk hedef\" adımıyla aynı belgedir. -->\n <div class=\"row g-3 mb-3\" *ngIf=\"newState || workingCopy\">\n <div class=\"col-md-3\">\n <label class=\"form-label\">Kaynak Şirket</label>\n <input type=\"text\" class=\"form-control\" [value]=\"companyName()\" disabled />\n </div>\n <div class=\"col-md-2\">\n <label class=\"form-label\">Belge No</label>\n <input type=\"text\" class=\"form-control\" [value]=\"newState?.docNum ?? workingCopy?.sourceOinvDocNum\" disabled />\n </div>\n <div class=\"col-md-2\">\n <label class=\"form-label\">NumAtCard</label>\n <input type=\"text\" class=\"form-control\" [value]=\"newState?.numAtCard ?? workingCopy?.sourceOinvNumAtCard\" disabled />\n </div>\n <div class=\"col-md-1\">\n <label class=\"form-label\">Proje</label>\n <input type=\"text\" class=\"form-control\" [value]=\"newState?.projectCode ?? workingCopy?.projectCode\" disabled />\n </div>\n <div class=\"col-md-2\">\n <label class=\"form-label\">İlk Hedef</label>\n <input type=\"text\" class=\"form-control\" [value]=\"newState?.targetCompanyName ?? workingCopy?.legs?.[0]?.targetCompanyName\" disabled />\n </div>\n <div class=\"col-md-2\">\n <label class=\"form-label\">Döviz</label>\n <input type=\"text\" class=\"form-control\" [value]=\"newState?.currency ?? workingCopy?.legs?.[0]?.currency\" disabled />\n </div>\n </div>\n\n <!-- Belge Durumu her zaman (yeni kayıtta da) görünür; Intercompany Id/Aktarım Durumu/Senaryo yalnızca\n kayıt oluştuktan sonra vardır - kullanıcı isteğiyle hepsi aynı satırda, Belge Durumu'nun yanına\n toplandı (önceden Intercompany Id/Aktarım Durumu ayrı bir satırdaydı). -->\n <div class=\"row g-3 mb-3\" *ngIf=\"newState || workingCopy\">\n <div class=\"col-md-2\">\n <label class=\"form-label\">Kaynak Belge Durumu</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [value]=\"sourceDocumentLifecycleLabel(newState?.sourceDocumentLifecycle ?? workingCopy?.sourceDocumentLifecycle)\"\n disabled\n />\n </div>\n <div class=\"col-md-2\">\n <label class=\"form-label\">Hedef Belge Durumu</label>\n <!-- Aktarım henüz oluşturulmadıysa (isNew) burada seçilebilir - kaynaktan bağımsız bir karardır\n (kullanıcı geri bildirimiyle netleştirildi: kaynağın modu sabit, hedefin modu burada seçilir).\n Oluştuktan sonra backend'de sabitlendiği için (workingCopy) salt-okunur gösterilir. -->\n <select *ngIf=\"isNew && newState\" class=\"form-select\" [(ngModel)]=\"newState.targetDocumentLifecycle\">\n <option *ngFor=\"let o of documentLifecycleOptions\" [ngValue]=\"o.value\">{{ o.label }}</option>\n </select>\n <input\n *ngIf=\"!isNew || !newState\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"sourceDocumentLifecycleLabel(newState?.targetDocumentLifecycle ?? workingCopy?.targetDocumentLifecycle)\"\n disabled\n />\n </div>\n <div class=\"col-md-3\" *ngIf=\"workingCopy\">\n <label class=\"form-label\">Intercompany Id</label>\n <input type=\"text\" class=\"form-control\" [value]=\"workingCopy.intercompanyId\" disabled />\n </div>\n <div class=\"col-md-2\" *ngIf=\"workingCopy\">\n <label class=\"form-label\">Aktarım Durumu</label>\n <input type=\"text\" class=\"form-control\" [value]=\"statusLabel(workingCopy.status)\" disabled />\n </div>\n <!-- Senaryo, aktarım henüz çalıştırılmamışken (isDraft()) altındaki \"Hazır Senaryo\" dropdown'ında\n zaten düzenlenebilir/görünür durumda - aynı bilgiyi burada salt-okunur tekrar göstermek\n (kullanıcı geri bildirimiyle tespit edildi) kafa karıştırıyordu. Yalnızca aktarım artık\n düzenlenemez hale geldiğinde (dropdown kaybolduğunda) burada gösterilir. -->\n <div class=\"col-md-3\" *ngIf=\"workingCopy && !isDraft()\">\n <label class=\"form-label\">Senaryo</label>\n <input type=\"text\" class=\"form-control\" [value]=\"scenarioName()\" disabled />\n </div>\n </div>\n\n <!-- Taslak: hazır senaryo seçimi, henüz çalıştırılmadı. -->\n <ng-container *ngIf=\"isDraft()\">\n <div class=\"row g-3 align-items-end mb-3\">\n <div class=\"col-md-4\">\n <label class=\"form-label\">Hazır Senaryo</label>\n <select class=\"form-select\" [(ngModel)]=\"scenarioId\">\n <option [ngValue]=\"''\">Senaryosuz (yalnızca ilk hedef bacağı)</option>\n <option *ngFor=\"let s of availableScenarios()\" [ngValue]=\"s.id\">{{ s.name }}</option>\n </select>\n </div>\n <div class=\"col-md-2\">\n <button\n class=\"btn btn-outline-primary\"\n (click)=\"isNew ? fetchScenario() : applyScenario()\"\n [disabled]=\"isFetchingScenario\"\n >\n <span *ngIf=\"isFetchingScenario\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ isNew ? 'Senaryoyu Getir' : 'Senaryoyu Uygula' }}\n </button>\n </div>\n </div>\n </ng-container>\n\n <!-- NumAtCard alanları artık isDraft()'a bağlı DEĞİL: taslakta düzenlenebilir, çalıştırıldıktan\n sonra (isDraft() false olsa da) salt-okunur olarak ekranda kalır - \"Hazır Senaryo\" bloğuyla\n birlikte tamamen kaybolmasın diye. -->\n <ng-container *ngIf=\"workingCopy\">\n <div class=\"row g-3 align-items-end mb-3\" *ngIf=\"hasIntermediateNumAtCardLegs()\">\n <div class=\"col-md-3\" *ngFor=\"let leg of workingCopy.legs\">\n <ng-container *ngIf=\"leg.legBehavior === 0 && leg.sequenceNo < workingCopy.legs.length\">\n <label class=\"form-label\">{{ leg.sequenceNo }}. Bacak - {{ leg.targetCompanyName }} Müşteri Faturası NumAtCard</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"leg.numAtCard\" [disabled]=\"!isDraft()\" />\n </ng-container>\n </div>\n </div>\n\n <div class=\"alert alert-warning\" *ngIf=\"isDraft() && hasMissingIncreaseRate()\">\n Uyarı: İlgili şirkette/projede artırım oranı 0 / NULL. Artırım uygulanmadan devam etmek istiyor musunuz?\n </div>\n\n <div class=\"alert alert-warning\" *ngIf=\"isDraft() && hasMissingConstructionDraftSelection()\">\n Uyarı: Hedef Belge Durumu Taslak olduğunda Construction bacaklarında OPOR → OPDN → OPCH zinciri taslak belgeler arasında\n çalışmaz. \"Hedefte Oluşacak\" sütunundan bu bacaklar için tek bir belge tipi (OPOR / OPDN / OPCH) seçmelisiniz.\n </div>\n </ng-container>\n\n <!-- Tek tablo: taslakta da, çalıştırıldıktan sonra da AYNI sütun seti (Sıra..Artırım) korunur;\n Durum/Sonuç Belge/Hata/Çalıştır yalnızca çalıştırıldıktan sonra, her satırın ALTINA ikinci bir\n satır olarak eklenir - eskiden bu bilgiler ayrı ve daha dar bir tabloya geçilerek gösteriliyordu,\n bu da Kaynak Belge/Hedefte Oluşacak gibi sütunların \"kaybolmuş\" görünmesine yol açıyordu. -->\n <ng-container *ngIf=\"workingCopy\">\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <div>\n <h6 class=\"mb-0\">{{ isDraft() ? 'Senaryo Çalışma Kopyası' : 'Aktarım Sonucu' }}</h6>\n <small class=\"text-muted\" *ngIf=\"isDraft()\">Bu tablo yalnızca çalışma kopyasını düzenler; ana senaryoyu değiştirmez.</small>\n </div>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"addLeg()\" *ngIf=\"isDraft()\" [disabled]=\"isMutatingLegs\">\n <i class=\"fa fa-plus me-1\"></i>Bacak Ekle\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"cancelChain()\" *ngIf=\"canCancelChain()\">\n <i class=\"fa fa-ban me-1\"></i>Zinciri İptal Et\n </button>\n </div>\n\n <div class=\"alert alert-secondary small\" *ngIf=\"workingCopy.status === 4\">\n Bu zincir iptal edildi, bacakları artık çalıştırılamaz/düzenlenemez. Yeniden denemek için\n \"Listeye Dön\"den kaynak faturayı tekrar seçip yeni bir aktarım başlatın - bu, yeni bir Intercompany Id ile\n çalışır.\n </div>\n\n <div class=\"table-responsive\">\n <table class=\"table table-sm table-bordered align-middle\">\n <thead>\n <tr>\n <th>Sıra</th>\n <th>Kaynak</th>\n <th>Kaynak Belge</th>\n <th>Hedef</th>\n <th>Davranış</th>\n <th>Hedefte Oluşacak</th>\n <th>OPCH CardCode</th>\n <th>Döviz</th>\n <th>Kur</th>\n <th>Artırım</th>\n <th *ngIf=\"isDraft()\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let leg of workingCopy.legs\">\n <tr>\n <td>{{ leg.sequenceNo }}</td>\n <td>{{ leg.sourceCompanyName }}</td>\n <td>OINV</td>\n <td>\n <select\n *ngIf=\"isDraft(); else targetText\"\n class=\"form-select form-select-sm\"\n [ngModel]=\"leg.targetCompanyId\"\n (ngModelChange)=\"updateLegTarget(leg, $event)\"\n [disabled]=\"isMutatingLegs\"\n >\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n <ng-template #targetText>{{ leg.targetCompanyName }}</ng-template>\n </td>\n <td>\n <select\n *ngIf=\"isDraft(); else behaviorText\"\n class=\"form-select form-select-sm\"\n [ngModel]=\"leg.legBehavior\"\n (ngModelChange)=\"updateLegBehavior(leg, $event)\"\n [disabled]=\"isMutatingLegs\"\n >\n <option *ngFor=\"let b of legBehaviors\" [ngValue]=\"b.value\">{{ b.label }}</option>\n </select>\n <ng-template #behaviorText>{{ legBehaviors[leg.legBehavior]?.label }}</ng-template>\n </td>\n <td>\n <select\n *ngIf=\"isDraft() && isConstructionDraftSelectable(leg); else targetDocText\"\n class=\"form-select form-select-sm\"\n [ngModel]=\"leg.selectedConstructionDraftDocType\"\n (ngModelChange)=\"updateLegConstructionDraftDocType(leg, $event)\"\n [disabled]=\"isMutatingLegs\"\n >\n <option [ngValue]=\"null\">Seçiniz...</option>\n <option *ngFor=\"let o of constructionDraftDocTypeOptions\" [ngValue]=\"o.value\">{{ o.label }}</option>\n </select>\n <ng-template #targetDocText>{{ legTargetDocLabel(leg) }}</ng-template>\n </td>\n <td>\n <span *ngIf=\"leg.resolvedOpchCardCode\">{{ leg.resolvedOpchCardCode }}</span>\n <div *ngIf=\"!leg.resolvedOpchCardCode\" class=\"d-flex flex-column align-items-start py-1\">\n <span class=\"badge bg-danger\">Eşleştirilmedi</span>\n <button\n type=\"button\"\n class=\"btn btn-outline-danger btn-sm mt-2 py-0 px-2\"\n style=\"font-size: 0.72rem\"\n (click)=\"goToPartnerMapping(leg)\"\n title=\"Muhatap Eşleştirmeleri ekranına git\"\n >\n <i class=\"fa fa-link me-1\"></i>Eşleştir\n </button>\n </div>\n </td>\n <td>\n <input\n *ngIf=\"isDraft(); else currencyText\"\n type=\"text\"\n class=\"form-control form-control-sm\"\n style=\"width: 5.5rem\"\n [(ngModel)]=\"leg.currency\"\n [placeholder]=\"newState?.currency || 'Kaynaktan'\"\n />\n <ng-template #currencyText>{{ leg.currency || newState?.currency }}</ng-template>\n </td>\n <td>\n <input\n *ngIf=\"isDraft(); else rateText\"\n type=\"number\"\n class=\"form-control form-control-sm\"\n style=\"width: 6rem\"\n [(ngModel)]=\"leg.exchangeRate\"\n placeholder=\"Kaynaktan\"\n />\n <ng-template #rateText>{{ leg.exchangeRate ?? '-' }}</ng-template>\n </td>\n <!-- Spec §9 - artırım YALNIZCA bu bacağın oluşturduğu devam Müşteri Faturasına (bir\n sonraki bacak varsa) uygulanır; bu hem IntermediateChain hem ConstructionChain için\n geçerlidir (Construction'da da nextTargetCompanyId.HasValue ise devam OINV'i\n artırımla oluşturuluyor). Önceden Construction bacakları legBehavior'a bakılarak\n KOŞULSUZ \"-\" gösteriyordu - zincirin SON bacağı olmayan bir Construction bacağının\n hedefinde artırım oranı tanımsızken kullanıcı hiç uyarılmıyordu (kod incelemesiyle\n tespit edildi). Doğru koşul \"zincirin son bacağı mı\" (legTargetDocLabel'daki\n isLastLeg ile aynı mantık), legBehavior değil. -->\n <td>\n <span *ngIf=\"leg.sequenceNo >= (workingCopy?.legs?.length ?? 0)\">-</span>\n <ng-container *ngIf=\"leg.sequenceNo < (workingCopy?.legs?.length ?? 0)\">\n <span *ngIf=\"leg.increaseRateApplied ?? leg.plannedIncreaseRate as rate\">{{ rate | number: '1.2-2' }}</span>\n <span\n class=\"text-danger\"\n *ngIf=\"!(leg.increaseRateApplied ?? leg.plannedIncreaseRate)\"\n title=\"Bu şirkette bu proje için artırım oranı tanımlı değildir. Artırım uygulanmadan devam edilecektir.\"\n >\n Tanımsız\n </span>\n </ng-container>\n </td>\n <td *ngIf=\"isDraft()\">\n <button\n class=\"btn btn-sm btn-outline-danger\"\n (click)=\"removeLeg(leg)\"\n [disabled]=\"isMutatingLegs || workingCopy.legs.length <= 1\"\n title=\"Bacağı Sil\"\n >\n <i class=\"fa fa-trash\"></i>\n </button>\n </td>\n </tr>\n <tr class=\"table-light\" *ngIf=\"!isDraft()\">\n <td></td>\n <td colspan=\"9\">\n <div class=\"d-flex align-items-center flex-wrap gap-3\">\n <span>\n <strong>Durum:</strong>\n <span\n class=\"badge ms-1\"\n [class.bg-secondary]=\"leg.status === 0\"\n [class.bg-success]=\"leg.status === 1\"\n [class.bg-danger]=\"leg.status === 2\"\n [class.bg-warning]=\"leg.status === 3\"\n >\n {{ legStatusLabel(leg.status) }}\n </span>\n </span>\n <span *ngIf=\"createdDocumentsSummary(leg) as docs\"><strong>Sonuç Belge(ler):</strong> {{ docs }}</span>\n <span class=\"text-danger\" *ngIf=\"leg.errorMessage\"><strong>Hata:</strong> {{ leg.errorMessage }}</span>\n <button\n class=\"btn btn-sm btn-outline-primary ms-auto\"\n (click)=\"executeLeg(leg)\"\n [disabled]=\"isExecuting || !canExecuteLeg(leg)\"\n >\n <span *ngIf=\"isExecuting\" class=\"spinner-border spinner-border-sm me-1\"></span>\n Çalıştır\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n\n <ul class=\"text-muted small\" *ngIf=\"isDraft()\">\n <li>Şirketler arası OINV → OPCH geçişinde kaynak NumAtCard hedef OPCH.NumAtCard alanına aynen taşınır.</li>\n <li>Artırım yalnızca aynı şirket içinde oluşturulan yeni Müşteri Faturasına uygulanır; navlun artırım oranından etkilenmez.</li>\n <li>Muhatap kodları Muhatap Eşleştirmeleri üzerinden çözülür. Kur kaynak belgeden gelir ve kullanıcı tarafından değiştirilebilir.</li>\n </ul>\n </ng-container>\n\n <div class=\"d-flex justify-content-end gap-2 mt-3\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"backToList()\">{{ isDraft() ? 'Vazgeç' : 'Kapat' }}</button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"startFlow()\"\n *ngIf=\"isDraft() && workingCopy\"\n [disabled]=\"isStarting || hasMissingConstructionDraftSelection()\"\n >\n <span *ngIf=\"isStarting\" class=\"spinner-border spinner-border-sm me-1\"></span>\n Belge Akışını Başlat\n </button>\n </div>\n </ng-container>\n </div>\n</div>\n","import { AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HitDocumentTransferComponent } from './components/hit-document-transfer.component';\nimport { HitDocumentTransferDetailComponent } from './components/hit-document-transfer-detail.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HitDocumentTransferComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n {\n // \":id\" - yeni aktarım için \"new\" (router state ile), mevcut bir kayıt için gerçek DocumentTransfer Id'si.\n path: ':id',\n component: HitDocumentTransferDetailComponent,\n canActivate: [AuthGuard, PermissionGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HitDocumentTransferRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { HitDocumentTransferComponent } from './components/hit-document-transfer.component';\nimport { HitDocumentTransferDetailComponent } from './components/hit-document-transfer-detail.component';\nimport { HitDocumentTransferRoutingModule } from './hit-document-transfer-routing.module';\n\n@NgModule({\n declarations: [HitDocumentTransferComponent, HitDocumentTransferDetailComponent],\n imports: [HitDocumentTransferRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],\n})\nexport class HitDocumentTransferModule {}\n\nexport function loadHitDocumentTransferModuleAsChild() {\n return Promise.resolve(HitDocumentTransferModule);\n}\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { FBDocumentFlowComponent } from './components/fbdocumentflow.component';\r\nimport { loadHitSapCompanyProfileModuleAsChild } from './components/hit-sap-company-profiles/hit-sap-company-profile.module';\r\nimport { loadHitPartnerMappingModuleAsChild } from './components/hit-partner-mappings/hit-partner-mapping.module';\r\nimport { loadHitDocumentScenarioModuleAsChild } from './components/hit-document-scenarios/hit-document-scenario.module';\r\nimport { loadHitProjectParameterModuleAsChild } from './components/hit-project-parameters/hit-project-parameter.module';\r\nimport { loadHitDocumentTransferModuleAsChild } from './components/hit-document-transfers/hit-document-transfer.module';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n component: FBDocumentFlowComponent,\r\n },\r\n { path: 'sap-company-profiles', loadChildren: loadHitSapCompanyProfileModuleAsChild },\r\n { path: 'partner-mappings', loadChildren: loadHitPartnerMappingModuleAsChild },\r\n { path: 'document-scenarios', loadChildren: loadHitDocumentScenarioModuleAsChild },\r\n { path: 'project-parameters', loadChildren: loadHitProjectParameterModuleAsChild },\r\n { path: 'document-transfers', loadChildren: loadHitDocumentTransferModuleAsChild },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class FBDocumentFlowRoutingModule {}\r\n","import { NgModule, NgModuleFactory, ModuleWithProviders } from '@angular/core';\r\nimport { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { FBDocumentFlowComponent } from './components/fbdocumentflow.component';\r\nimport { FBDocumentFlowRoutingModule } from './fbdocumentflow-routing.module';\r\n\r\n@NgModule({\r\n declarations: [FBDocumentFlowComponent],\r\n imports: [CoreModule, ThemeSharedModule, FBDocumentFlowRoutingModule],\r\n exports: [FBDocumentFlowComponent],\r\n})\r\nexport class FBDocumentFlowModule {\r\n static forChild(): ModuleWithProviders<FBDocumentFlowModule> {\r\n return {\r\n ngModule: FBDocumentFlowModule,\r\n providers: [],\r\n };\r\n }\r\n\r\n static forLazy(): NgModuleFactory<FBDocumentFlowModule> {\r\n return new LazyModuleFactory(FBDocumentFlowModule.forChild());\r\n }\r\n}\r\n","/*\r\n * Public API Surface of fbdocumentflow\r\n */\r\n\r\nexport * from './lib/components/fbdocumentflow.component';\r\nexport * from './lib/services/fbdocumentflow.service';\r\nexport * from './lib/fbdocumentflow.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.SapCompanyProfileService","i4","i5","i6","i7","i8","routes","i1.PartnerMappingService","i2.SapCompanyProfileService","i9","i1.DocumentScenarioService","i1.SapProjectParameterService","i1.DocumentTransferService","i10","i2.DocumentTransferService","i3.DocumentScenarioService","i4.SapCompanyProfileService"],"mappings":"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"}
|