From ca28fe8b5cba3da6c3f9ae7c6307c3506de013a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:46:58 +0300 Subject: [PATCH] =?UTF-8?q?Enum=20ve=20static=20veriler=20d=C3=BCzenlendi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/dev-dist/sw.js | 2 +- .../components/developerKit/EntityManager.tsx | 2 +- ui/src/mocks/mockBusinessParties.ts | 511 ++++++----- ui/src/mocks/mockChecks.ts | 68 +- ui/src/mocks/mockProjectCostTracking.ts | 156 ++-- ui/src/mocks/mockProjectPhases.ts | 188 ++-- ui/src/mocks/mockPromissoryNotes.ts | 60 +- ui/src/mocks/mockWorkCenterMachineTypes.ts | 28 + ui/src/mocks/mockWorkCenters.ts | 433 ++++----- ui/src/types/common.ts | 17 +- ui/src/types/fi.ts | 11 +- ui/src/types/hr.ts | 17 + ui/src/types/mm.ts | 8 +- ui/src/types/pm.ts | 11 +- ui/src/types/ps.ts | 21 +- ui/src/utils/erp.tsx | 858 +++++++++++------- .../accounting/components/BankAccountForm.tsx | 266 +++--- .../views/accounting/components/CheckForm.tsx | 314 +++---- .../components/CheckNoteDetails.tsx | 225 ++--- .../components/CheckNoteManagement.tsx | 25 +- .../components/CurrentAccountForm.tsx | 235 ++--- .../components/CurrentAccountMovementForm.tsx | 220 ++--- .../accounting/components/InvoiceForm.tsx | 276 +++--- .../components/InvoiceManagement.tsx | 284 +++--- .../components/PromissoryNoteForm.tsx | 274 +++--- .../accounting/components/WaybillForm.tsx | 333 +++---- .../components/WaybillManagement.tsx | 297 +++--- ui/src/views/crm/components/CustomerCards.tsx | 26 +- ui/src/views/crm/components/CustomerEdit.tsx | 53 +- ui/src/views/crm/components/CustomerForm.tsx | 85 +- .../views/crm/components/CustomerFormNew.tsx | 87 +- ui/src/views/crm/components/CustomerList.tsx | 26 +- ui/src/views/crm/components/CustomerView.tsx | 14 +- .../views/crm/components/OpportunityForm.tsx | 9 +- .../views/crm/components/SalesOrderForm.tsx | 32 +- .../views/crm/components/SalesTeamCreate.tsx | 9 +- ui/src/views/crm/components/SalesTeamEdit.tsx | 9 +- ui/src/views/forum/forum/ForumView.tsx | 2 +- .../hr/components/CostCenterFormModal.tsx | 130 ++- .../hr/components/Degree360Evaluation.tsx | 20 +- .../hr/components/Degree360Templates.tsx | 10 +- ui/src/views/hr/components/EmployeeCards.tsx | 10 +- ui/src/views/hr/components/EmployeeForm.tsx | 64 +- ui/src/views/hr/components/EmployeeList.tsx | 22 +- .../hr/components/JobPositionFormModal.tsx | 299 +++--- ui/src/views/hr/components/JobPositions.tsx | 17 +- .../views/hr/components/LeaveManagement.tsx | 48 +- .../hr/components/OvertimeManagement.tsx | 8 +- .../views/hr/components/PayrollManagement.tsx | 10 +- .../ChangeNotificationStatusModal.tsx | 21 +- .../CreateWorkOrderFromNotificationModal.tsx | 20 +- .../components/CreateWorkOrderModal.tsx | 20 +- .../components/EditFaultNotificationModal.tsx | 48 +- .../components/EditMaintenancePlanModal.tsx | 30 +- .../maintenance/components/EditTeamModal.tsx | 11 +- .../components/EditWorkCenterModal.tsx | 31 +- .../components/EditWorkOrderModal.tsx | 32 +- .../components/FaultNotifications.tsx | 20 +- .../components/MaintenanceCalendar.tsx | 10 +- .../components/MaintenancePlanModal.tsx | 19 +- .../components/MaintenancePlans.tsx | 14 +- .../components/MaintenanceTeams.tsx | 8 +- .../components/MaintenanceWorkOrders.tsx | 19 +- .../components/NewCalendarEventModal.tsx | 23 +- .../components/NewFaultNotificationModal.tsx | 32 +- .../components/NewMaintenancePlanModal.tsx | 30 +- .../maintenance/components/NewTeamModal.tsx | 10 +- .../components/NewWorkCenterModal.tsx | 19 +- .../components/NewWorkOrderModal.tsx | 20 +- .../components/StatusUpdateModal.tsx | 18 +- .../components/WorkCenterCards.tsx | 19 +- .../maintenance/components/WorkCenterForm.tsx | 32 +- .../maintenance/components/WorkCenterList.tsx | 18 +- ui/src/views/mrp/components/BOMManagement.tsx | 10 +- .../components/DemandForecastFormModal.tsx | 103 +-- .../mrp/components/EditWorkOrderForm.tsx | 142 ++- .../MaterialRequirementFormModal.tsx | 115 +-- .../mrp/components/OperationTypeFormModal.tsx | 128 ++- .../views/mrp/components/OperationTypes.tsx | 9 +- ui/src/views/mrp/components/PlanningGantt.tsx | 24 +- .../mrp/components/ProductionOrderForm.tsx | 44 +- .../mrp/components/ProductionOrderList.tsx | 20 +- .../project/components/CostTimeTracking.tsx | 11 +- .../project/components/PhaseEditModal.tsx | 219 ++--- .../views/project/components/ProjectForm.tsx | 45 +- .../views/project/components/ProjectGantt.tsx | 27 +- .../views/project/components/ProjectList.tsx | 19 +- .../project/components/ProjectPhases.tsx | 43 +- .../views/project/components/ProjectTasks.tsx | 399 ++++---- .../project/components/TaskEditModal.tsx | 237 +++-- .../components/ApprovalWorkflowModal.tsx | 23 +- .../components/DeliveryTracking.tsx | 14 +- .../components/DeliveryTrackingModal.tsx | 30 +- .../components/MaterialTypeModal.tsx | 12 +- .../supplychain/components/MaterialTypes.tsx | 6 +- .../components/OrderManagement.tsx | 27 +- .../components/OrderManagementForm.tsx | 36 +- .../components/PurchaseRequestForm.tsx | 39 +- .../components/PurchaseRequests.tsx | 23 +- .../components/PurchaseRequisitionList.tsx | 19 +- .../supplychain/components/QuotationForm.tsx | 31 +- .../components/QuotationManagement.tsx | 21 +- .../components/SupplierCardModal.tsx | 25 +- .../supplychain/components/SupplierForm.tsx | 33 +- .../supplychain/components/SupplierList.tsx | 8 +- .../components/InventoryTracking.tsx | 17 +- ui/src/views/warehouse/components/LotForm.tsx | 10 +- .../components/MaterialMovements.tsx | 26 +- .../warehouse/components/PutawayRules.tsx | 18 +- .../views/warehouse/components/SerialForm.tsx | 10 +- .../components/StockLevelsInventory.tsx | 32 +- .../warehouse/components/WarehouseForm.tsx | 14 +- .../warehouse/components/WarehouseIssue.tsx | 60 +- .../warehouse/components/WarehouseList.tsx | 10 +- .../warehouse/components/WarehouseReceipt.tsx | 17 +- .../components/WarehouseTransfer.tsx | 9 +- 116 files changed, 4170 insertions(+), 4649 deletions(-) create mode 100644 ui/src/mocks/mockWorkCenterMachineTypes.ts diff --git a/ui/dev-dist/sw.js b/ui/dev-dist/sw.js index 45e953a9..3c7e9b2c 100644 --- a/ui/dev-dist/sw.js +++ b/ui/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-a959eb95'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "/index.html", - "revision": "0.bkv2hic80pg" + "revision": "0.h99odp2o5hg" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), { diff --git a/ui/src/components/developerKit/EntityManager.tsx b/ui/src/components/developerKit/EntityManager.tsx index bee5f9a0..9a1cb6e4 100644 --- a/ui/src/components/developerKit/EntityManager.tsx +++ b/ui/src/components/developerKit/EntityManager.tsx @@ -368,7 +368,7 @@ const EntityManager: React.FC = () => {

{!searchTerm && filterActive === 'all' && ( diff --git a/ui/src/mocks/mockBusinessParties.ts b/ui/src/mocks/mockBusinessParties.ts index 388e1743..0499936c 100644 --- a/ui/src/mocks/mockBusinessParties.ts +++ b/ui/src/mocks/mockBusinessParties.ts @@ -1,54 +1,51 @@ -import { BankAccountTypeEnum } from "../types/fi"; -import { BusinessParty, BusinessPartyStatusEnum, PartyType, PaymentTerms } from "../types/common"; -import { - CustomerSegmentEnum, - CustomerTypeEnum, -} from "../types/crm"; -import { SupplierTypeEnum, SupplierCardTypeEnum } from "../types/mm"; +import { BankAccountTypeEnum } from '../types/fi' +import { BusinessParty, BusinessPartyStatusEnum, PartyType, PaymentTerms } from '../types/common' +import { CustomerSegmentEnum, CustomerTypeEnum } from '../types/crm' +import { SupplierTypeEnum, SupplierCardTypeEnum } from '../types/mm' export const mockBusinessParties: BusinessParty[] = [ { - id: "1", - code: "SUP001", - supplierType: SupplierTypeEnum.Material, - name: "ABC Malzeme Ltd.", + id: '1', + code: 'SUP001', + supplierType: SupplierTypeEnum.Manufacturer, + name: 'ABC Malzeme Ltd.', primaryContact: { - id: "2", - firstName: "Fatma", - lastName: "Demir", - fullName: "Fatma Demir", - title: "Genel Müdür", - department: "Yönetim", - email: "fatma.demir@uretim.com", - phone: "+90 312 555 0202", - mobile: "+90 532 555 0202", + id: '2', + firstName: 'Fatma', + lastName: 'Demir', + fullName: 'Fatma Demir', + title: 'Genel Müdür', + department: 'Yönetim', + email: 'fatma.demir@uretim.com', + phone: '+90 312 555 0202', + mobile: '+90 532 555 0202', isPrimary: true, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }, - email: "aliveli@gmail.com", - phone: "+90 212 555 1234", + email: 'aliveli@gmail.com', + phone: '+90 212 555 1234', address: { - street: "İstiklal Cad. No:10", - city: "İstanbul", - state: "İstanbul", - postalCode: "34430", - country: "Türkiye", + street: 'İstiklal Cad. No:10', + city: 'İstanbul', + state: 'İstanbul', + postalCode: '34430', + country: 'Türkiye', }, - taxNumber: "1234567890", + taxNumber: '1234567890', paymentTerms: PaymentTerms.Net30, - currency: "TRY", - cardNumber: "SC-2024-001", + currency: 'TRY', + cardNumber: 'SC-2024-001', cardType: SupplierCardTypeEnum.Standard, - validFrom: new Date("2024-01-01"), - validTo: new Date("2024-12-31"), + validFrom: new Date('2024-01-01'), + validTo: new Date('2024-12-31'), creditLimit: 500000, isActive: true, currentBalance: 120000, discountRate: 5, - specialConditions: ["Toplu sipariş indirimi", "Öncelikli teslimat"], - lastOrderDate: new Date("2024-08-15"), + specialConditions: ['Toplu sipariş indirimi', 'Öncelikli teslimat'], + lastOrderDate: new Date('2024-08-15'), performanceMetrics: { deliveryPerformance: 95, qualityRating: 90, @@ -56,21 +53,21 @@ export const mockBusinessParties: BusinessParty[] = [ responsiveness: 67, complianceRating: 88, overallScore: 100, - lastEvaluationDate: new Date("2024-08-01"), + lastEvaluationDate: new Date('2024-08-01'), }, - certifications: ["ISO 9001", "ISO 14001"], + certifications: ['ISO 9001', 'ISO 14001'], bankAccounts: [ { - id: "BA001", - bankName: "Garanti BBVA", - accountNumber: "1234567890", - iban: "TR330006100519786457841326", - swiftCode: "TGBATRIS", + id: 'BA001', + bankName: 'Garanti BBVA', + accountNumber: '1234567890', + iban: 'TR330006100519786457841326', + swiftCode: 'TGBATRIS', isDefault: true, - accountCode: "", - branchName: "", + accountCode: '', + branchName: '', accountType: BankAccountTypeEnum.Current, - currency: "", + currency: '', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, @@ -81,14 +78,14 @@ export const mockBusinessParties: BusinessParty[] = [ ], contacts: [ { - id: "C001", - firstName: "Ali", - lastName: "Veli", - fullName: "Ali Veli", - title: "Satınalma Müdürü", - email: "aliveli@gmail.com", - phone: "+90 212 555 1234", - department: "Satınalma", + id: 'C001', + firstName: 'Ali', + lastName: 'Veli', + fullName: 'Ali Veli', + title: 'Satınalma Müdürü', + email: 'aliveli@gmail.com', + phone: '+90 212 555 1234', + department: 'Satınalma', isPrimary: true, isActive: false, creationTime: new Date(), @@ -100,47 +97,47 @@ export const mockBusinessParties: BusinessParty[] = [ partyType: PartyType.Supplier, }, { - id: "2", - code: "SUP002", - supplierType: SupplierTypeEnum.Service, - name: "XYZ Teknoloji A.Ş.", + id: '2', + code: 'SUP002', + supplierType: SupplierTypeEnum.ServiceProvider, + name: 'XYZ Teknoloji A.Ş.', primaryContact: { - id: "2", - firstName: "Fatma", - lastName: "Demir", - fullName: "Fatma Demir", - title: "Genel Müdür", - department: "Yönetim", - email: "fatma.demir@uretim.com", - phone: "+90 312 555 0202", - mobile: "+90 532 555 0202", + id: '2', + firstName: 'Fatma', + lastName: 'Demir', + fullName: 'Fatma Demir', + title: 'Genel Müdür', + department: 'Yönetim', + email: 'fatma.demir@uretim.com', + phone: '+90 312 555 0202', + mobile: '+90 532 555 0202', isPrimary: true, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }, - email: "aysedemir@gmail.com", - phone: "+90 216 555 5678", + email: 'aysedemir@gmail.com', + phone: '+90 216 555 5678', address: { - street: "Barbaros Bulv. No:20", - city: "İstanbul", - state: "İstanbul", - postalCode: "34746", - country: "Türkiye", + street: 'Barbaros Bulv. No:20', + city: 'İstanbul', + state: 'İstanbul', + postalCode: '34746', + country: 'Türkiye', }, - taxNumber: "0987654321", + taxNumber: '0987654321', paymentTerms: PaymentTerms.Net15, - currency: "TRY", - cardNumber: "SC-2024-002", + currency: 'TRY', + cardNumber: 'SC-2024-002', cardType: SupplierCardTypeEnum.Premium, - validFrom: new Date("2024-02-01"), - validTo: new Date("2024-12-31"), + validFrom: new Date('2024-02-01'), + validTo: new Date('2024-12-31'), creditLimit: 250000, isActive: true, currentBalance: 75000, discountRate: 3, - specialConditions: ["Hızlı teslimat", "Kalite garantisi"], - lastOrderDate: new Date("2024-08-20"), + specialConditions: ['Hızlı teslimat', 'Kalite garantisi'], + lastOrderDate: new Date('2024-08-20'), performanceMetrics: { deliveryPerformance: 88, qualityRating: 90, @@ -148,21 +145,21 @@ export const mockBusinessParties: BusinessParty[] = [ responsiveness: 87, complianceRating: 91, overallScore: 88, - lastEvaluationDate: new Date("2024-08-01"), + lastEvaluationDate: new Date('2024-08-01'), }, - certifications: ["ISO 9001"], + certifications: ['ISO 9001'], bankAccounts: [ { - id: "BA002", - bankName: "İş Bankası", - accountNumber: "0987654321", - iban: "TR440006200519786457841327", - swiftCode: "ISBKTRIS", + id: 'BA002', + bankName: 'İş Bankası', + accountNumber: '0987654321', + iban: 'TR440006200519786457841327', + swiftCode: 'ISBKTRIS', isDefault: true, - accountCode: "", - branchName: "", + accountCode: '', + branchName: '', accountType: BankAccountTypeEnum.Current, - currency: "", + currency: '', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, @@ -173,14 +170,14 @@ export const mockBusinessParties: BusinessParty[] = [ ], contacts: [ { - id: "C002", - firstName: "Ayşe", - lastName: "Demir", - fullName: "Ayşe Demir", - title: "Satış Müdürü", - email: "aysedemir@gmail.com", - phone: "+90 216 555 5678", - department: "Satış", + id: 'C002', + firstName: 'Ayşe', + lastName: 'Demir', + fullName: 'Ayşe Demir', + title: 'Satış Müdürü', + email: 'aysedemir@gmail.com', + phone: '+90 216 555 5678', + department: 'Satış', isPrimary: true, isActive: false, creationTime: new Date(), @@ -192,47 +189,47 @@ export const mockBusinessParties: BusinessParty[] = [ partyType: PartyType.Supplier, }, { - id: "3", - code: "SUP003", - supplierType: SupplierTypeEnum.Both, - name: "LMN Endüstri A.Ş.", + id: '3', + code: 'SUP003', + supplierType: SupplierTypeEnum.Manufacturer, + name: 'LMN Endüstri A.Ş.', primaryContact: { - id: "2", - firstName: "Fatma", - lastName: "Demir", - fullName: "Fatma Demir", - title: "Genel Müdür", - department: "Yönetim", - email: "fatma.demir@uretim.com", - phone: "+90 312 555 0202", - mobile: "+90 532 555 0202", + id: '2', + firstName: 'Fatma', + lastName: 'Demir', + fullName: 'Fatma Demir', + title: 'Genel Müdür', + department: 'Yönetim', + email: 'fatma.demir@uretim.com', + phone: '+90 312 555 0202', + mobile: '+90 532 555 0202', isPrimary: true, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }, - email: "mehmetyilmaz@gmail.com", - phone: "+90 232 555 7890", + email: 'mehmetyilmaz@gmail.com', + phone: '+90 232 555 7890', address: { - street: "Atatürk Cad. No:5", - city: "İzmir", - state: "İzmir", - postalCode: "35210", - country: "Türkiye", + street: 'Atatürk Cad. No:5', + city: 'İzmir', + state: 'İzmir', + postalCode: '35210', + country: 'Türkiye', }, - taxNumber: "1122334455", + taxNumber: '1122334455', paymentTerms: PaymentTerms.Net45, - currency: "TRY", - cardNumber: "SC-2024-003", + currency: 'TRY', + cardNumber: 'SC-2024-003', cardType: SupplierCardTypeEnum.Preferred, - validFrom: new Date("2024-03-01"), - validTo: new Date("2024-12-31"), + validFrom: new Date('2024-03-01'), + validTo: new Date('2024-12-31'), creditLimit: 150000, isActive: true, currentBalance: 45000, discountRate: 2, - specialConditions: ["Toplu sipariş indirimi"], - lastOrderDate: new Date("2024-08-18"), + specialConditions: ['Toplu sipariş indirimi'], + lastOrderDate: new Date('2024-08-18'), performanceMetrics: { deliveryPerformance: 82, qualityRating: 85, @@ -240,21 +237,21 @@ export const mockBusinessParties: BusinessParty[] = [ responsiveness: 80, complianceRating: 88, overallScore: 85, - lastEvaluationDate: new Date("2024-07-15"), + lastEvaluationDate: new Date('2024-07-15'), }, - certifications: ["ISO 9001", "OHSAS 18001"], + certifications: ['ISO 9001', 'OHSAS 18001'], bankAccounts: [ { - id: "BA003", - bankName: "Yapı Kredi", - accountNumber: "1122334455", - iban: "TR550006300519786457841328", - swiftCode: "YAPITRIS", + id: 'BA003', + bankName: 'Yapı Kredi', + accountNumber: '1122334455', + iban: 'TR550006300519786457841328', + swiftCode: 'YAPITRIS', isDefault: true, - accountCode: "", - branchName: "", + accountCode: '', + branchName: '', accountType: BankAccountTypeEnum.Current, - currency: "", + currency: '', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, @@ -265,14 +262,14 @@ export const mockBusinessParties: BusinessParty[] = [ ], contacts: [ { - id: "C003", - firstName: "Mehmet", - lastName: "Yılmaz", - fullName: "Mehmet Yılmaz", - title: "Genel Müdür", - email: "mehmetyilmaz@gmail.com", - phone: "+90 232 555 7890", - department: "Yönetim", + id: 'C003', + firstName: 'Mehmet', + lastName: 'Yılmaz', + fullName: 'Mehmet Yılmaz', + title: 'Genel Müdür', + email: 'mehmetyilmaz@gmail.com', + phone: '+90 232 555 7890', + department: 'Yönetim', isPrimary: true, isActive: false, creationTime: new Date(), @@ -284,47 +281,47 @@ export const mockBusinessParties: BusinessParty[] = [ partyType: PartyType.Supplier, }, { - id: "4", - code: "SUP004", - supplierType: SupplierTypeEnum.Material, - name: "OPQ Ticaret Ltd.", + id: '4', + code: 'SUP004', + supplierType: SupplierTypeEnum.Distributor, + name: 'OPQ Ticaret Ltd.', primaryContact: { - id: "2", - firstName: "Fatma", - lastName: "Demir", - fullName: "Fatma Demir", - title: "Genel Müdür", - department: "Yönetim", - email: "fatma.demir@uretim.com", - phone: "+90 312 555 0202", - mobile: "+90 532 555 0202", + id: '2', + firstName: 'Fatma', + lastName: 'Demir', + fullName: 'Fatma Demir', + title: 'Genel Müdür', + department: 'Yönetim', + email: 'fatma.demir@uretim.com', + phone: '+90 312 555 0202', + mobile: '+90 532 555 0202', isPrimary: true, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }, - email: "fatmacelik@gmail.com", - phone: "+90 312 555 3456", + email: 'fatmacelik@gmail.com', + phone: '+90 312 555 3456', address: { - street: "Kızılay Meydanı No:15", - city: "Ankara", - state: "Ankara", - postalCode: "06690", - country: "Türkiye", + street: 'Kızılay Meydanı No:15', + city: 'Ankara', + state: 'Ankara', + postalCode: '06690', + country: 'Türkiye', }, - taxNumber: "6677889900", + taxNumber: '6677889900', paymentTerms: PaymentTerms.Net30, - currency: "TRY", - cardNumber: "SC-2024-004", + currency: 'TRY', + cardNumber: 'SC-2024-004', cardType: SupplierCardTypeEnum.Standard, - validFrom: new Date("2024-04-01"), - validTo: new Date("2024-12-31"), + validFrom: new Date('2024-04-01'), + validTo: new Date('2024-12-31'), creditLimit: 100000, isActive: false, currentBalance: 30000, discountRate: 4, - specialConditions: ["Öncelikli sipariş", "Hızlı teslimat"], - lastOrderDate: new Date("2024-06-30"), + specialConditions: ['Öncelikli sipariş', 'Hızlı teslimat'], + lastOrderDate: new Date('2024-06-30'), performanceMetrics: { deliveryPerformance: 75, qualityRating: 78, @@ -332,21 +329,21 @@ export const mockBusinessParties: BusinessParty[] = [ responsiveness: 76, complianceRating: 80, overallScore: 78, - lastEvaluationDate: new Date("2024-07-01"), + lastEvaluationDate: new Date('2024-07-01'), }, - certifications: ["ISO 9001"], + certifications: ['ISO 9001'], bankAccounts: [ { - id: "BA004", - bankName: "Halkbank", - accountNumber: "6677889900", - iban: "TR660006400519786457841329", - swiftCode: "HALKTRIS", + id: 'BA004', + bankName: 'Halkbank', + accountNumber: '6677889900', + iban: 'TR660006400519786457841329', + swiftCode: 'HALKTRIS', isDefault: true, - accountCode: "", - branchName: "", + accountCode: '', + branchName: '', accountType: BankAccountTypeEnum.Current, - currency: "", + currency: '', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, @@ -357,14 +354,14 @@ export const mockBusinessParties: BusinessParty[] = [ ], contacts: [ { - id: "C004", - firstName: "Fatma", - lastName: "Çelik", - fullName: "Fatma Çelik", - title: "Finans Müdürü", - email: "fatmacelik@gmail.com", - phone: "+90 312 555 3456", - department: "Finans", + id: 'C004', + firstName: 'Fatma', + lastName: 'Çelik', + fullName: 'Fatma Çelik', + title: 'Finans Müdürü', + email: 'fatmacelik@gmail.com', + phone: '+90 312 555 3456', + department: 'Finans', isPrimary: true, isActive: false, creationTime: new Date(), @@ -376,22 +373,22 @@ export const mockBusinessParties: BusinessParty[] = [ partyType: PartyType.Supplier, }, { - id: "5", - code: "CUST-002", - name: "Üretim Ltd.", + id: '5', + code: 'CUST-002', + name: 'Üretim Ltd.', customerType: CustomerTypeEnum.Company, - industry: "İmalat", - website: "www.uretim.com", + industry: 'İmalat', + website: 'www.uretim.com', primaryContact: { - id: "2", - firstName: "Fatma", - lastName: "Demir", - fullName: "Fatma Demir", - title: "Genel Müdür", - department: "Yönetim", - email: "fatma.demir@uretim.com", - phone: "+90 312 555 0202", - mobile: "+90 532 555 0202", + id: '2', + firstName: 'Fatma', + lastName: 'Demir', + fullName: 'Fatma Demir', + title: 'Genel Müdür', + department: 'Yönetim', + email: 'fatma.demir@uretim.com', + phone: '+90 312 555 0202', + mobile: '+90 532 555 0202', isPrimary: true, isActive: true, creationTime: new Date(), @@ -399,50 +396,50 @@ export const mockBusinessParties: BusinessParty[] = [ }, contacts: [], address: { - street: "Sanayi Sitesi 5. Cadde No:25", - city: "Ankara", - state: "Ankara", - postalCode: "06000", - country: "Türkiye", + street: 'Sanayi Sitesi 5. Cadde No:25', + city: 'Ankara', + state: 'Ankara', + postalCode: '06000', + country: 'Türkiye', }, - taxNumber: "0987654321", - registrationNumber: "REG-002", + taxNumber: '0987654321', + registrationNumber: 'REG-002', creditLimit: 500000, paymentTerms: PaymentTerms.Net60, - currency: "TRY", + currency: 'TRY', status: BusinessPartyStatusEnum.Active, customerSegment: CustomerSegmentEnum.SMB, - assignedSalesRep: "REP-002", - teamId: "TEAM-001", + assignedSalesRep: 'REP-002', + teamId: 'TEAM-001', totalRevenue: 850000, - lastOrderDate: new Date("2024-01-10"), + lastOrderDate: new Date('2024-01-10'), averageOrderValue: 42500, lifetimeValue: 1700000, opportunities: [], orders: [], activities: [], isActive: true, - creationTime: new Date("2023-09-20"), - lastModificationTime: new Date("2024-01-18"), + creationTime: new Date('2023-09-20'), + lastModificationTime: new Date('2024-01-18'), partyType: PartyType.Customer, }, { - id: "6", - code: "CUST-001", - name: "Teknoloji A.Ş.", + id: '6', + code: 'CUST-001', + name: 'Teknoloji A.Ş.', customerType: CustomerTypeEnum.Company, - industry: "Teknoloji", - website: "www.teknoloji.com", + industry: 'Teknoloji', + website: 'www.teknoloji.com', primaryContact: { - id: "1", - firstName: "Ali", - lastName: "Yılmaz", - fullName: "Ali Yılmaz", - title: "Satınalma Müdürü", - department: "Satınalma", - email: "ali.yilmaz@teknoloji.com", - phone: "+90 212 555 0201", - mobile: "+90 532 555 0201", + id: '1', + firstName: 'Ali', + lastName: 'Yılmaz', + fullName: 'Ali Yılmaz', + title: 'Satınalma Müdürü', + department: 'Satınalma', + email: 'ali.yilmaz@teknoloji.com', + phone: '+90 212 555 0201', + mobile: '+90 532 555 0201', isPrimary: true, isActive: true, creationTime: new Date(), @@ -450,53 +447,53 @@ export const mockBusinessParties: BusinessParty[] = [ }, contacts: [], address: { - street: "Teknoloji Caddesi No:100", - city: "İstanbul", - state: "İstanbul", - postalCode: "34000", - country: "Türkiye", + street: 'Teknoloji Caddesi No:100', + city: 'İstanbul', + state: 'İstanbul', + postalCode: '34000', + country: 'Türkiye', }, - taxNumber: "1234567890", - registrationNumber: "REG-001", + taxNumber: '1234567890', + registrationNumber: 'REG-001', creditLimit: 1000000, paymentTerms: PaymentTerms.Net30, - currency: "TRY", + currency: 'TRY', status: BusinessPartyStatusEnum.Active, customerSegment: CustomerSegmentEnum.Enterprise, - assignedSalesRep: "REP-001", - teamId: "TEAM-001", + assignedSalesRep: 'REP-001', + teamId: 'TEAM-001', totalRevenue: 2500000, - lastOrderDate: new Date("2024-01-15"), + lastOrderDate: new Date('2024-01-15'), averageOrderValue: 125000, lifetimeValue: 5000000, opportunities: [], orders: [], activities: [], isActive: true, - creationTime: new Date("2023-06-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-06-15'), + lastModificationTime: new Date('2024-01-20'), partyType: PartyType.Customer, }, -]; +] export const mockBusinessPartyNew: BusinessParty = { - id: "", - code: "", - supplierType: SupplierTypeEnum.Both, - name: "", - email: "", - phone: "", + id: '', + code: '', + supplierType: SupplierTypeEnum.ServiceProvider, + name: '', + email: '', + phone: '', address: { - street: "", - city: "", - state: "", - postalCode: "", - country: "", + street: '', + city: '', + state: '', + postalCode: '', + country: '', }, - taxNumber: "", + taxNumber: '', paymentTerms: PaymentTerms.Cash, - currency: "TRY", - cardNumber: "", + currency: 'TRY', + cardNumber: '', cardType: SupplierCardTypeEnum.Standard, validTo: new Date(), validFrom: new Date(), @@ -521,4 +518,4 @@ export const mockBusinessPartyNew: BusinessParty = { creationTime: new Date(), lastModificationTime: new Date(), partyType: PartyType.Supplier, -}; +} diff --git a/ui/src/mocks/mockChecks.ts b/ui/src/mocks/mockChecks.ts index 7504736b..67e102ec 100644 --- a/ui/src/mocks/mockChecks.ts +++ b/ui/src/mocks/mockChecks.ts @@ -1,44 +1,44 @@ -import { FiCheck, CheckStatusEnum, CheckTypeEnum } from "../types/fi"; -import { mockCurrentAccounts } from "./mockCurrentAccounts"; +import { FiCheck, CheckStatusEnum, TypeEnum } from '../types/fi' +import { mockCurrentAccounts } from './mockCurrentAccounts' export const mockChecks: FiCheck[] = [ { - id: "1", - checkNumber: "CHK-001", - bankName: "İş Bankası", - branchName: "Levent Şubesi", - accountNumber: "1234567890", - type: CheckTypeEnum.Received, - drawerName: "XYZ Müşteri A.Ş.", - payeeName: "ABC Şirket", - issueDate: new Date("2024-01-15"), - dueDate: new Date("2024-02-15"), + id: '1', + checkNumber: 'CHK-001', + bankName: 'İş Bankası', + branchName: 'Levent Şubesi', + accountNumber: '1234567890', + type: TypeEnum.Received, + drawerName: 'XYZ Müşteri A.Ş.', + payeeName: 'ABC Şirket', + issueDate: new Date('2024-01-15'), + dueDate: new Date('2024-02-15'), amount: 25000, - currency: "TRY", + currency: 'TRY', status: CheckStatusEnum.InHand, - currentAccountId: "1", - currentAccount: mockCurrentAccounts.find((ca) => ca.id === "1"), - creationTime: new Date("2024-01-15"), - lastModificationTime: new Date("2024-01-15"), + currentAccountId: '1', + currentAccount: mockCurrentAccounts.find((ca) => ca.id === '1'), + creationTime: new Date('2024-01-15'), + lastModificationTime: new Date('2024-01-15'), }, { - id: "2", - checkNumber: "CHK-002", - bankName: "Garanti BBVA", - branchName: "Şişli Şubesi", - accountNumber: "9876543210", - type: CheckTypeEnum.Issued, - drawerName: "ABC Şirket", - payeeName: "Tedarikçi Ltd.", - issueDate: new Date("2024-01-10"), - dueDate: new Date("2024-02-10"), + id: '2', + checkNumber: 'CHK-002', + bankName: 'Garanti BBVA', + branchName: 'Şişli Şubesi', + accountNumber: '9876543210', + type: TypeEnum.Issued, + drawerName: 'ABC Şirket', + payeeName: 'Tedarikçi Ltd.', + issueDate: new Date('2024-01-10'), + dueDate: new Date('2024-02-10'), amount: 15000, - currency: "TRY", + currency: 'TRY', status: CheckStatusEnum.Deposited, - bankingDate: new Date("2024-01-20"), - currentAccountId: "2", - currentAccount: mockCurrentAccounts.find((ca) => ca.id === "2"), - creationTime: new Date("2024-01-10"), - lastModificationTime: new Date("2024-01-20"), + bankingDate: new Date('2024-01-20'), + currentAccountId: '2', + currentAccount: mockCurrentAccounts.find((ca) => ca.id === '2'), + creationTime: new Date('2024-01-10'), + lastModificationTime: new Date('2024-01-20'), }, -]; +] diff --git a/ui/src/mocks/mockProjectCostTracking.ts b/ui/src/mocks/mockProjectCostTracking.ts index cbaec6a8..af170ea2 100644 --- a/ui/src/mocks/mockProjectCostTracking.ts +++ b/ui/src/mocks/mockProjectCostTracking.ts @@ -1,80 +1,80 @@ -import { PsProjectCostTracking } from "../types/ps"; +import { ProjectCostTrackingStatus, PsProjectCostTracking } from '../types/ps' export const mockProjectCostTracking: PsProjectCostTracking[] = [ - { - id: "1", - projectId: "1", - projectName: "ERP Sistemi Geliştirme", - projectCode: "PRJ-2024-001", - plannedBudget: 500000, - actualCost: 325000, - remainingBudget: 175000, - plannedStartDate: new Date("2024-01-15"), - plannedEndDate: new Date("2024-12-31"), - actualStartDate: new Date("2024-01-20"), - actualEndDate: undefined, - plannedDuration: 351, - actualDuration: 300, - progress: 65, - status: "ON_TRACK", - currency: "TRY", - lastUpdated: new Date("2024-11-25"), - }, - { - id: "2", - projectId: "2", - projectName: "Mobil Uygulama Geliştirme", - projectCode: "PRJ-2024-002", - plannedBudget: 250000, - actualCost: 200000, - remainingBudget: 50000, - plannedStartDate: new Date("2024-03-01"), - plannedEndDate: new Date("2024-08-31"), - actualStartDate: new Date("2024-03-15"), - actualEndDate: undefined, - plannedDuration: 184, - actualDuration: 200, - progress: 80, - status: "AT_RISK", - currency: "TRY", - lastUpdated: new Date("2024-11-20"), - }, - { - id: "3", - projectId: "3", - projectName: "Web Sitesi Yenileme", - projectCode: "PRJ-2024-003", - plannedBudget: 150000, - actualCost: 180000, - remainingBudget: -30000, - plannedStartDate: new Date("2024-02-01"), - plannedEndDate: new Date("2024-06-30"), - actualStartDate: new Date("2024-02-10"), - actualEndDate: new Date("2024-07-15"), - plannedDuration: 150, - actualDuration: 156, - progress: 100, - status: "COMPLETED", - currency: "TRY", - lastUpdated: new Date("2024-07-15"), - }, - { - id: "4", - projectId: "4", - projectName: "Veri Analizi Platformu", - projectCode: "PRJ-2024-004", - plannedBudget: 400000, - actualCost: 120000, - remainingBudget: 280000, - plannedStartDate: new Date("2024-06-01"), - plannedEndDate: new Date("2024-12-31"), - actualStartDate: new Date("2024-06-15"), - actualEndDate: undefined, - plannedDuration: 214, - actualDuration: 163, - progress: 30, - status: "DELAYED", - currency: "TRY", - lastUpdated: new Date("2024-11-22"), - }, - ]; \ No newline at end of file + { + id: '1', + projectId: '1', + projectName: 'ERP Sistemi Geliştirme', + projectCode: 'PRJ-2024-001', + plannedBudget: 500000, + actualCost: 325000, + remainingBudget: 175000, + plannedStartDate: new Date('2024-01-15'), + plannedEndDate: new Date('2024-12-31'), + actualStartDate: new Date('2024-01-20'), + actualEndDate: undefined, + plannedDuration: 351, + actualDuration: 300, + progress: 65, + status: ProjectCostTrackingStatus.OnTrack, + currency: 'TRY', + lastUpdated: new Date('2024-11-25'), + }, + { + id: '2', + projectId: '2', + projectName: 'Mobil Uygulama Geliştirme', + projectCode: 'PRJ-2024-002', + plannedBudget: 250000, + actualCost: 200000, + remainingBudget: 50000, + plannedStartDate: new Date('2024-03-01'), + plannedEndDate: new Date('2024-08-31'), + actualStartDate: new Date('2024-03-15'), + actualEndDate: undefined, + plannedDuration: 184, + actualDuration: 200, + progress: 80, + status: ProjectCostTrackingStatus.AtRisk, + currency: 'TRY', + lastUpdated: new Date('2024-11-20'), + }, + { + id: '3', + projectId: '3', + projectName: 'Web Sitesi Yenileme', + projectCode: 'PRJ-2024-003', + plannedBudget: 150000, + actualCost: 180000, + remainingBudget: -30000, + plannedStartDate: new Date('2024-02-01'), + plannedEndDate: new Date('2024-06-30'), + actualStartDate: new Date('2024-02-10'), + actualEndDate: new Date('2024-07-15'), + plannedDuration: 150, + actualDuration: 156, + progress: 100, + status: ProjectCostTrackingStatus.Completed, + currency: 'TRY', + lastUpdated: new Date('2024-07-15'), + }, + { + id: '4', + projectId: '4', + projectName: 'Veri Analizi Platformu', + projectCode: 'PRJ-2024-004', + plannedBudget: 400000, + actualCost: 120000, + remainingBudget: 280000, + plannedStartDate: new Date('2024-06-01'), + plannedEndDate: new Date('2024-12-31'), + actualStartDate: new Date('2024-06-15'), + actualEndDate: undefined, + plannedDuration: 214, + actualDuration: 163, + progress: 30, + status: ProjectCostTrackingStatus.Delayed, + currency: 'TRY', + lastUpdated: new Date('2024-11-22'), + }, +] diff --git a/ui/src/mocks/mockProjectPhases.ts b/ui/src/mocks/mockProjectPhases.ts index e8285ea0..cf95a653 100644 --- a/ui/src/mocks/mockProjectPhases.ts +++ b/ui/src/mocks/mockProjectPhases.ts @@ -1,180 +1,164 @@ -import { PhaseStatusEnum, PsProjectPhase } from "../types/ps"; -import { mockMaintenanceTeams } from "./mockMaintenanceTeams"; -import { mockProjects } from "./mockProjects"; +import { PhaseCategoryEnum, PhaseStatusEnum, PsProjectPhase } from '../types/ps' +import { mockMaintenanceTeams } from './mockMaintenanceTeams' +import { mockProjects } from './mockProjects' export const mockProjectPhases: PsProjectPhase[] = [ { - id: "1", - code: "PH-001", - name: "Analiz ve Tasarım", - description: "Sistem analizi ve tasarım dokümantasyonu hazırlanması", - projectId: "1", - project: mockProjects.find((p) => p.id === "1")!, + id: '1', + code: 'PH-001', + name: 'Analiz ve Tasarım', + description: 'Sistem analizi ve tasarım dokümantasyonu hazırlanması', + projectId: '1', + project: mockProjects.find((p) => p.id === '1')!, status: PhaseStatusEnum.Completed, - startDate: new Date("2024-01-15"), - endDate: new Date("2024-02-28"), - actualStartDate: new Date("2024-01-15"), - actualEndDate: new Date("2024-02-25"), + startDate: new Date('2024-01-15'), + endDate: new Date('2024-02-28'), + actualStartDate: new Date('2024-01-15'), + actualEndDate: new Date('2024-02-25'), budget: 150000, actualCost: 145000, progress: 100, milestones: 4, completedMilestones: 4, assignedTeams: [ - mockMaintenanceTeams.find((t) => t.id === "1")!.name, - mockMaintenanceTeams.find((t) => t.id === "2")!.name, + mockMaintenanceTeams.find((t) => t.id === '1')!.name, + mockMaintenanceTeams.find((t) => t.id === '2')!.name, ], - deliverables: [ - "Sistem Analiz Raporu", - "Teknik Tasarım Dokümanı", - "UI/UX Tasarımları", - ], - risks: ["Gereksinim değişiklikleri"], - category: "Planning", + deliverables: ['Sistem Analiz Raporu', 'Teknik Tasarım Dokümanı', 'UI/UX Tasarımları'], + risks: ['Gereksinim değişiklikleri'], + category: PhaseCategoryEnum.Planning, sequence: 0, tasks: [], isActive: false, }, { - id: "2", - code: "PH-002", - name: "Geliştirme - Faz 1", - description: "Backend altyapısı ve temel modüllerin geliştirilmesi", - projectId: "1", - project: mockProjects.find((p) => p.id === "1")!, + id: '2', + code: 'PH-002', + name: 'Geliştirme - Faz 1', + description: 'Backend altyapısı ve temel modüllerin geliştirilmesi', + projectId: '1', + project: mockProjects.find((p) => p.id === '1')!, status: PhaseStatusEnum.Cancelled, - startDate: new Date("2024-03-01"), - endDate: new Date("2024-05-15"), - actualStartDate: new Date("2024-03-01"), - actualEndDate: new Date("2024-05-10"), + startDate: new Date('2024-03-01'), + endDate: new Date('2024-05-15'), + actualStartDate: new Date('2024-03-01'), + actualEndDate: new Date('2024-05-10'), budget: 400000, actualCost: 280000, progress: 70, milestones: 6, completedMilestones: 4, assignedTeams: [ - mockMaintenanceTeams.find((t) => t.id === "1")!.name, - mockMaintenanceTeams.find((t) => t.id === "2")!.name, + mockMaintenanceTeams.find((t) => t.id === '1')!.name, + mockMaintenanceTeams.find((t) => t.id === '2')!.name, ], - deliverables: ["API Framework", "Veritabanı Şeması", "Güvenlik Modülü"], - risks: ["Performans sorunları", "Üçüncü parti entegrasyon gecikmeleri"], - category: "Development", + deliverables: ['API Framework', 'Veritabanı Şeması', 'Güvenlik Modülü'], + risks: ['Performans sorunları', 'Üçüncü parti entegrasyon gecikmeleri'], + category: PhaseCategoryEnum.Development, sequence: 0, tasks: [], isActive: false, }, { - id: "3", - code: "PH-003", - name: "Geliştirme - Faz 2", - description: "Frontend geliştirme ve kullanıcı arayüzleri", - projectId: "1", - project: mockProjects.find((p) => p.id === "1")!, + id: '3', + code: 'PH-003', + name: 'Geliştirme - Faz 2', + description: 'Frontend geliştirme ve kullanıcı arayüzleri', + projectId: '1', + project: mockProjects.find((p) => p.id === '1')!, status: PhaseStatusEnum.NotStarted, - startDate: new Date("2024-04-15"), - endDate: new Date("2024-07-30"), + startDate: new Date('2024-04-15'), + endDate: new Date('2024-07-30'), budget: 350000, actualCost: 0, progress: 0, milestones: 5, completedMilestones: 0, assignedTeams: [ - mockMaintenanceTeams.find((t) => t.id === "1")!.name, - mockMaintenanceTeams.find((t) => t.id === "2")!.name, + mockMaintenanceTeams.find((t) => t.id === '1')!.name, + mockMaintenanceTeams.find((t) => t.id === '2')!.name, ], - deliverables: [ - "React Bileşenleri", - "Responsive Tasarım", - "Mobil Uyumluluk", - ], - risks: ["Tarayıcı uyumluluk sorunları", "Performans optimizasyonu"], - category: "Development", + deliverables: ['React Bileşenleri', 'Responsive Tasarım', 'Mobil Uyumluluk'], + risks: ['Tarayıcı uyumluluk sorunları', 'Performans optimizasyonu'], + category: PhaseCategoryEnum.Development, sequence: 0, tasks: [], isActive: false, }, { - id: "4", - code: "PH-004", - name: "Test ve Kalite Güvence", - description: "Kapsamlı test süreçleri ve kalite kontrolleri", - projectId: "2", - project: mockProjects.find((p) => p.id === "2")!, + id: '4', + code: 'PH-004', + name: 'Test ve Kalite Güvence', + description: 'Kapsamlı test süreçleri ve kalite kontrolleri', + projectId: '2', + project: mockProjects.find((p) => p.id === '2')!, status: PhaseStatusEnum.NotStarted, - startDate: new Date("2024-07-01"), - endDate: new Date("2024-09-15"), + startDate: new Date('2024-07-01'), + endDate: new Date('2024-09-15'), budget: 120000, actualCost: 0, progress: 0, milestones: 3, completedMilestones: 0, assignedTeams: [ - mockMaintenanceTeams.find((t) => t.id === "3")!.name, - mockMaintenanceTeams.find((t) => t.id === "4")!.name, + mockMaintenanceTeams.find((t) => t.id === '3')!.name, + mockMaintenanceTeams.find((t) => t.id === '4')!.name, ], - deliverables: [ - "Test Senaryoları", - "Otomatik Test Süitleri", - "Kalite Raporu", - ], - risks: ["Kritik hataların geç tespit edilmesi"], - category: "Testing", + deliverables: ['Test Senaryoları', 'Otomatik Test Süitleri', 'Kalite Raporu'], + risks: ['Kritik hataların geç tespit edilmesi'], + category: PhaseCategoryEnum.Testing, sequence: 0, tasks: [], isActive: false, }, { - id: "5", - code: "PH-005", - name: "Deployment ve Go-Live", - description: "Üretime alma ve kullanıcı eğitimleri", - projectId: "2", - project: mockProjects.find((p) => p.id === "2")!, + id: '5', + code: 'PH-005', + name: 'Deployment ve Go-Live', + description: 'Üretime alma ve kullanıcı eğitimleri', + projectId: '2', + project: mockProjects.find((p) => p.id === '2')!, status: PhaseStatusEnum.NotStarted, - startDate: new Date("2024-09-15"), - endDate: new Date("2024-10-31"), + startDate: new Date('2024-09-15'), + endDate: new Date('2024-10-31'), budget: 80000, actualCost: 0, progress: 0, milestones: 2, completedMilestones: 0, assignedTeams: [ - mockMaintenanceTeams.find((t) => t.id === "2")!.name, - mockMaintenanceTeams.find((t) => t.id === "4")!.name, + mockMaintenanceTeams.find((t) => t.id === '2')!.name, + mockMaintenanceTeams.find((t) => t.id === '4')!.name, ], - deliverables: [ - "Prodüksiyon Ortamı", - "Kullanıcı Eğitimleri", - "Dokümentasyon", - ], - risks: ["Sistem kesintileri", "Kullanıcı adaptasyon sorunları"], - category: "Deployment", + deliverables: ['Prodüksiyon Ortamı', 'Kullanıcı Eğitimleri', 'Dokümentasyon'], + risks: ['Sistem kesintileri', 'Kullanıcı adaptasyon sorunları'], + category: PhaseCategoryEnum.Deployment, sequence: 0, tasks: [], isActive: false, }, { - id: "6", - code: "PH-006", - name: "Mobil UI Tasarımı", - description: "Mobil uygulama kullanıcı arayüzü tasarımı", - projectId: "2", - project: mockProjects.find((p) => p.id === "2")!, + id: '6', + code: 'PH-006', + name: 'Mobil UI Tasarımı', + description: 'Mobil uygulama kullanıcı arayüzü tasarımı', + projectId: '2', + project: mockProjects.find((p) => p.id === '2')!, status: PhaseStatusEnum.OnHold, - startDate: new Date("2024-03-01"), - endDate: new Date("2024-04-15"), - actualStartDate: new Date("2024-03-05"), + startDate: new Date('2024-03-01'), + endDate: new Date('2024-04-15'), + actualStartDate: new Date('2024-03-05'), budget: 75000, actualCost: 25000, progress: 35, milestones: 3, completedMilestones: 1, - assignedTeams: [mockMaintenanceTeams.find((t) => t.id === "1")!.name], - deliverables: ["Wireframe'ler", "Mobil Tasarım Kılavuzu", "Prototype"], - risks: ["Platformlar arası tutarlılık sorunları"], - category: "Design", + assignedTeams: [mockMaintenanceTeams.find((t) => t.id === '1')!.name], + deliverables: ["Wireframe'ler", 'Mobil Tasarım Kılavuzu', 'Prototype'], + risks: ['Platformlar arası tutarlılık sorunları'], + category: PhaseCategoryEnum.Design, sequence: 0, tasks: [], isActive: false, }, -]; +] diff --git a/ui/src/mocks/mockPromissoryNotes.ts b/ui/src/mocks/mockPromissoryNotes.ts index 2a97a9f5..36a475eb 100644 --- a/ui/src/mocks/mockPromissoryNotes.ts +++ b/ui/src/mocks/mockPromissoryNotes.ts @@ -1,40 +1,40 @@ -import { NoteStatusEnum, NoteTypeEnum, PromissoryNote } from "../types/fi"; -import { mockCurrentAccounts } from "./mockCurrentAccounts"; +import { NoteStatusEnum, PromissoryNote, TypeEnum } from '../types/fi' +import { mockCurrentAccounts } from './mockCurrentAccounts' export const mockPromissoryNotes: PromissoryNote[] = [ { - id: "1", - noteNumber: "NOT-001", - type: NoteTypeEnum.Received, - drawerName: "Müşteri A.Ş.", - payeeName: "ABC Şirket", - issueDate: new Date("2024-01-20"), - dueDate: new Date("2024-03-20"), + id: '1', + noteNumber: 'NOT-001', + type: TypeEnum.Received, + drawerName: 'Müşteri A.Ş.', + payeeName: 'ABC Şirket', + issueDate: new Date('2024-01-20'), + dueDate: new Date('2024-03-20'), amount: 50000, - currency: "TRY", + currency: 'TRY', status: NoteStatusEnum.InHand, - location: "Ana Kasa", - currentAccountId: "1", - currentAccount: mockCurrentAccounts.find((acc) => acc.id === "1"), - creationTime: new Date("2024-01-20"), - lastModificationTime: new Date("2024-01-20"), + location: 'Ana Kasa', + currentAccountId: '1', + currentAccount: mockCurrentAccounts.find((acc) => acc.id === '1'), + creationTime: new Date('2024-01-20'), + lastModificationTime: new Date('2024-01-20'), }, { - id: "2", - noteNumber: "NOT-002", - type: NoteTypeEnum.Issued, - drawerName: "ABC Şirket", - payeeName: "Kefil A.Ş.", - issueDate: new Date("2024-01-05"), - dueDate: new Date("2024-03-05"), + id: '2', + noteNumber: 'NOT-002', + type: TypeEnum.Issued, + drawerName: 'ABC Şirket', + payeeName: 'Kefil A.Ş.', + issueDate: new Date('2024-01-05'), + dueDate: new Date('2024-03-05'), amount: 30000, - currency: "TRY", + currency: 'TRY', status: NoteStatusEnum.Collected, - location: "Banka", - collectionDate: new Date("2024-01-25"), - currentAccountId: "2", - currentAccount: mockCurrentAccounts.find((acc) => acc.id === "2"), - creationTime: new Date("2024-01-05"), - lastModificationTime: new Date("2024-01-25"), + location: 'Banka', + collectionDate: new Date('2024-01-25'), + currentAccountId: '2', + currentAccount: mockCurrentAccounts.find((acc) => acc.id === '2'), + creationTime: new Date('2024-01-05'), + lastModificationTime: new Date('2024-01-25'), }, -]; +] diff --git a/ui/src/mocks/mockWorkCenterMachineTypes.ts b/ui/src/mocks/mockWorkCenterMachineTypes.ts new file mode 100644 index 00000000..eed49a6d --- /dev/null +++ b/ui/src/mocks/mockWorkCenterMachineTypes.ts @@ -0,0 +1,28 @@ +import { PmMachineType } from '../types/pm' + +export const mockWorkCenterMachineTypes: PmMachineType[] = [ + { + id: '1', + code: 'CNC', + name: 'CNC Makineleri', + isActive: true, + }, + { + id: '2', + code: 'COMP', + name: 'Kompresörler', + isActive: true, + }, + { + id: '3', + code: 'CONV', + name: 'Konveyörler', + isActive: true, + }, + { + id: '4', + code: 'WELD', + name: 'Kaynak Makineleri', + isActive: true, + }, +] diff --git a/ui/src/mocks/mockWorkCenters.ts b/ui/src/mocks/mockWorkCenters.ts index b910a3fa..01cc63ca 100644 --- a/ui/src/mocks/mockWorkCenters.ts +++ b/ui/src/mocks/mockWorkCenters.ts @@ -1,42 +1,39 @@ -import { - CriticalityLevelEnum, - PmWorkCenter, - WorkCenterStatusEnum, -} from "../types/pm"; -import { mockWorkCenterTypes } from "./mockWorkCenterTypes"; +import { CriticalityLevelEnum, PmWorkCenter, WorkCenterStatusEnum } from '../types/pm' +import { mockWorkCenterMachineTypes } from './mockWorkCenterMachineTypes' +import { mockWorkCenterTypes } from './mockWorkCenterTypes' export const mockWorkCenters: PmWorkCenter[] = [ { - id: "1", - code: "CNC-001", - name: "CNC Torna Tezgahı", - description: "Yüksek hassasiyetli CNC torna tezgahı", - workCenterId: "1", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "1")!, - manufacturer: "HAAS Automation", - model: "ST-30", - serialNumber: "SN123456789", - installationDate: new Date("2022-03-15"), - warrantyExpiry: new Date("2025-03-15"), - location: "Atölye A - Hat 1", - departmentId: "1", + id: '1', + code: 'CNC-001', + name: 'CNC Torna Tezgahı', + description: 'Yüksek hassasiyetli CNC torna tezgahı', + workCenterId: '1', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '1')!, + manufacturer: 'HAAS Automation', + model: 'ST-30', + serialNumber: 'SN123456789', + installationDate: new Date('2022-03-15'), + warrantyExpiry: new Date('2025-03-15'), + location: 'Atölye A - Hat 1', + departmentId: '1', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC001", - workCenterId: "EQP001", - specificationName: "Max Çap", - specificationValue: "300", - unit: "mm", + id: 'SPEC001', + workCenterId: 'EQP001', + specificationName: 'Max Çap', + specificationValue: '300', + unit: 'mm', isRequired: true, }, { - id: "SPEC002", - workCenterId: "EQP001", - specificationName: "Motor Gücü", - specificationValue: "15", - unit: "kW", + id: 'SPEC002', + workCenterId: 'EQP001', + specificationName: 'Motor Gücü', + specificationValue: '15', + unit: 'kW', isRequired: true, }, ], @@ -44,44 +41,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2022-03-15"), - lastModificationTime: new Date("2024-01-15"), + creationTime: new Date('2022-03-15'), + lastModificationTime: new Date('2024-01-15'), capacity: 8, costPerHour: 75, setupTime: 15, - machineType: "CNC", + machineTypeId: '1', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '1')!, }, { - id: "2", - code: "COMP-001", - name: "Hava Kompresörü", - description: "Endüstriyel hava kompresörü sistemi", - workCenterId: "2", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "2")!, - manufacturer: "Atlas Copco", - model: "GA55VSD+", - serialNumber: "AC987654321", - installationDate: new Date("2021-08-20"), - warrantyExpiry: new Date("2024-08-20"), - location: "Kompresör Odası", - departmentId: "2", + id: '2', + code: 'COMP-001', + name: 'Hava Kompresörü', + description: 'Endüstriyel hava kompresörü sistemi', + workCenterId: '2', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '2')!, + manufacturer: 'Atlas Copco', + model: 'GA55VSD+', + serialNumber: 'AC987654321', + installationDate: new Date('2021-08-20'), + warrantyExpiry: new Date('2024-08-20'), + location: 'Kompresör Odası', + departmentId: '2', status: WorkCenterStatusEnum.UnderMaintenance, criticality: CriticalityLevelEnum.Critical, specifications: [ { - id: "SPEC003", - workCenterId: "EQP002", - specificationName: "Basınç", - specificationValue: "8.5", - unit: "bar", + id: 'SPEC003', + workCenterId: 'EQP002', + specificationName: 'Basınç', + specificationValue: '8.5', + unit: 'bar', isRequired: true, }, { - id: "SPEC004", - workCenterId: "EQP002", - specificationName: "Kapasite", - specificationValue: "55", - unit: "kW", + id: 'SPEC004', + workCenterId: 'EQP002', + specificationName: 'Kapasite', + specificationValue: '55', + unit: 'kW', isRequired: true, }, ], @@ -89,43 +87,44 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2021-08-20"), - lastModificationTime: new Date("2024-02-01"), + creationTime: new Date('2021-08-20'), + lastModificationTime: new Date('2024-02-01'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '2', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '2')!, capacity: 8, }, { - id: "3", - code: "CONV-001", - name: "Konveyör Sistemi", - description: "Ana hat konveyör sistemi", - workCenterId: "3", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "3")!, - manufacturer: "Siemens", - model: "SIMATIC S7-1500", - serialNumber: "SM112233445", - installationDate: new Date("2020-11-10"), - location: "Ana Üretim Hattı", - departmentId: "3", + id: '3', + code: 'CONV-001', + name: 'Konveyör Sistemi', + description: 'Ana hat konveyör sistemi', + workCenterId: '3', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '3')!, + manufacturer: 'Siemens', + model: 'SIMATIC S7-1500', + serialNumber: 'SM112233445', + installationDate: new Date('2020-11-10'), + location: 'Ana Üretim Hattı', + departmentId: '3', status: WorkCenterStatusEnum.OutOfOrder, criticality: CriticalityLevelEnum.Medium, specifications: [ { - id: "SPEC005", - workCenterId: "EQP003", - specificationName: "Hız", - specificationValue: "2.5", - unit: "m/s", + id: 'SPEC005', + workCenterId: 'EQP003', + specificationName: 'Hız', + specificationValue: '2.5', + unit: 'm/s', isRequired: true, }, { - id: "SPEC006", - workCenterId: "EQP003", - specificationName: "Yük Kapasitesi", - specificationValue: "500", - unit: "kg", + id: 'SPEC006', + workCenterId: 'EQP003', + specificationName: 'Yük Kapasitesi', + specificationValue: '500', + unit: 'kg', isRequired: true, }, ], @@ -133,44 +132,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2020-11-10"), - lastModificationTime: new Date("2024-02-05"), + creationTime: new Date('2020-11-10'), + lastModificationTime: new Date('2024-02-05'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '3', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '3')!, capacity: 8, }, { - id: "4", - code: "KELD-001", - name: "Kaynak Makinesi", - description: "Otomatik robot kaynak sistemi", - workCenterId: "4", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "4")!, - manufacturer: "KUKA", - model: "KR 60-3", - serialNumber: "KU556677889", - installationDate: new Date("2023-01-15"), - warrantyExpiry: new Date("2026-01-15"), - location: "Kaynak Atölyesi", - departmentId: "4", + id: '4', + code: 'KELD-001', + name: 'Kaynak Makinesi', + description: 'Otomatik robot kaynak sistemi', + workCenterId: '4', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, + manufacturer: 'KUKA', + model: 'KR 60-3', + serialNumber: 'KU556677889', + installationDate: new Date('2023-01-15'), + warrantyExpiry: new Date('2026-01-15'), + location: 'Kaynak Atölyesi', + departmentId: '4', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC007", - workCenterId: "EQP004", - specificationName: "Erişim Mesafesi", - specificationValue: "2033", - unit: "mm", + id: 'SPEC007', + workCenterId: 'EQP004', + specificationName: 'Erişim Mesafesi', + specificationValue: '2033', + unit: 'mm', isRequired: true, }, { - id: "SPEC008", - workCenterId: "EQP004", - specificationName: "Taşıma Kapasitesi", - specificationValue: "60", - unit: "kg", + id: 'SPEC008', + workCenterId: 'EQP004', + specificationName: 'Taşıma Kapasitesi', + specificationValue: '60', + unit: 'kg', isRequired: true, }, ], @@ -178,44 +178,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2023-01-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-01-15'), + lastModificationTime: new Date('2024-01-20'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '3', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '3')!, capacity: 8, }, { - id: "5", - code: "WELL-001", - name: "Yıkama Makinesi", - description: "Otomatik robot kaynak sistemi", - workCenterId: "4", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "4")!, - manufacturer: "KUKA", - model: "KR 60-3", - serialNumber: "KU556677889", - installationDate: new Date("2023-01-15"), - warrantyExpiry: new Date("2026-01-15"), - location: "Kaynak Atölyesi", - departmentId: "4", + id: '5', + code: 'WELL-001', + name: 'Yıkama Makinesi', + description: 'Otomatik robot kaynak sistemi', + workCenterId: '4', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, + manufacturer: 'KUKA', + model: 'KR 60-3', + serialNumber: 'KU556677889', + installationDate: new Date('2023-01-15'), + warrantyExpiry: new Date('2026-01-15'), + location: 'Kaynak Atölyesi', + departmentId: '4', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC007", - workCenterId: "EQP004", - specificationName: "Erişim Mesafesi", - specificationValue: "2033", - unit: "mm", + id: 'SPEC007', + workCenterId: 'EQP004', + specificationName: 'Erişim Mesafesi', + specificationValue: '2033', + unit: 'mm', isRequired: true, }, { - id: "SPEC008", - workCenterId: "EQP004", - specificationName: "Taşıma Kapasitesi", - specificationValue: "60", - unit: "kg", + id: 'SPEC008', + workCenterId: 'EQP004', + specificationName: 'Taşıma Kapasitesi', + specificationValue: '60', + unit: 'kg', isRequired: true, }, ], @@ -223,44 +224,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2023-01-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-01-15'), + lastModificationTime: new Date('2024-01-20'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '4', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '4')!, capacity: 8, }, { - id: "6", - code: "KELD-001", - name: "Ram Makinesi", - description: "Otomatik robot kaynak sistemi", - workCenterId: "4", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "4")!, - manufacturer: "KUKA", - model: "KR 60-3", - serialNumber: "KU556677889", - installationDate: new Date("2023-01-15"), - warrantyExpiry: new Date("2026-01-15"), - location: "Kaynak Atölyesi", - departmentId: "4", + id: '6', + code: 'KELD-001', + name: 'Ram Makinesi', + description: 'Otomatik robot kaynak sistemi', + workCenterId: '4', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, + manufacturer: 'KUKA', + model: 'KR 60-3', + serialNumber: 'KU556677889', + installationDate: new Date('2023-01-15'), + warrantyExpiry: new Date('2026-01-15'), + location: 'Kaynak Atölyesi', + departmentId: '4', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC007", - workCenterId: "EQP004", - specificationName: "Erişim Mesafesi", - specificationValue: "2033", - unit: "mm", + id: 'SPEC007', + workCenterId: 'EQP004', + specificationName: 'Erişim Mesafesi', + specificationValue: '2033', + unit: 'mm', isRequired: true, }, { - id: "SPEC008", - workCenterId: "EQP004", - specificationName: "Taşıma Kapasitesi", - specificationValue: "60", - unit: "kg", + id: 'SPEC008', + workCenterId: 'EQP004', + specificationName: 'Taşıma Kapasitesi', + specificationValue: '60', + unit: 'kg', isRequired: true, }, ], @@ -268,44 +270,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2023-01-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-01-15'), + lastModificationTime: new Date('2024-01-20'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '4', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '4')!, capacity: 8, }, { - id: "7", - code: "WEID-001", - name: "Sarma Makinesi", - description: "Otomatik robot kaynak sistemi", - workCenterId: "4", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "4")!, - manufacturer: "KUKA", - model: "KR 60-3", - serialNumber: "KU556677889", - installationDate: new Date("2023-01-15"), - warrantyExpiry: new Date("2026-01-15"), - location: "Kaynak Atölyesi", - departmentId: "4", + id: '7', + code: 'WEID-001', + name: 'Sarma Makinesi', + description: 'Otomatik robot kaynak sistemi', + workCenterId: '4', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, + manufacturer: 'KUKA', + model: 'KR 60-3', + serialNumber: 'KU556677889', + installationDate: new Date('2023-01-15'), + warrantyExpiry: new Date('2026-01-15'), + location: 'Kaynak Atölyesi', + departmentId: '4', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC007", - workCenterId: "EQP004", - specificationName: "Erişim Mesafesi", - specificationValue: "2033", - unit: "mm", + id: 'SPEC007', + workCenterId: 'EQP004', + specificationName: 'Erişim Mesafesi', + specificationValue: '2033', + unit: 'mm', isRequired: true, }, { - id: "SPEC008", - workCenterId: "EQP004", - specificationName: "Taşıma Kapasitesi", - specificationValue: "60", - unit: "kg", + id: 'SPEC008', + workCenterId: 'EQP004', + specificationName: 'Taşıma Kapasitesi', + specificationValue: '60', + unit: 'kg', isRequired: true, }, ], @@ -313,44 +316,45 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2023-01-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-01-15'), + lastModificationTime: new Date('2024-01-20'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '1', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '1')!, capacity: 8, }, { - id: "8", - code: "KEL-001", - name: "Robot Kaynak Makinesi", - description: "Otomatik robot kaynak sistemi", - workCenterId: "4", - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === "4")!, - manufacturer: "KUKA", - model: "KR 60-3", - serialNumber: "KU556677889", - installationDate: new Date("2023-01-15"), - warrantyExpiry: new Date("2026-01-15"), - location: "Kaynak Atölyesi", - departmentId: "4", + id: '8', + code: 'KEL-001', + name: 'Robot Kaynak Makinesi', + description: 'Otomatik robot kaynak sistemi', + workCenterId: '4', + workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, + manufacturer: 'KUKA', + model: 'KR 60-3', + serialNumber: 'KU556677889', + installationDate: new Date('2023-01-15'), + warrantyExpiry: new Date('2026-01-15'), + location: 'Kaynak Atölyesi', + departmentId: '4', status: WorkCenterStatusEnum.Operational, criticality: CriticalityLevelEnum.High, specifications: [ { - id: "SPEC007", - workCenterId: "EQP004", - specificationName: "Erişim Mesafesi", - specificationValue: "2033", - unit: "mm", + id: 'SPEC007', + workCenterId: 'EQP004', + specificationName: 'Erişim Mesafesi', + specificationValue: '2033', + unit: 'mm', isRequired: true, }, { - id: "SPEC008", - workCenterId: "EQP004", - specificationName: "Taşıma Kapasitesi", - specificationValue: "60", - unit: "kg", + id: 'SPEC008', + workCenterId: 'EQP004', + specificationName: 'Taşıma Kapasitesi', + specificationValue: '60', + unit: 'kg', isRequired: true, }, ], @@ -358,11 +362,12 @@ export const mockWorkCenters: PmWorkCenter[] = [ workOrders: [], downTimeHistory: [], isActive: true, - creationTime: new Date("2023-01-15"), - lastModificationTime: new Date("2024-01-20"), + creationTime: new Date('2023-01-15'), + lastModificationTime: new Date('2024-01-20'), costPerHour: 85, setupTime: 20, - machineType: "CNC", + machineTypeId: '1', + machineType: mockWorkCenterMachineTypes.find((mt) => mt.id === '1')!, capacity: 8, }, -]; +] diff --git a/ui/src/types/common.ts b/ui/src/types/common.ts index e0c18bbf..96f8791e 100644 --- a/ui/src/types/common.ts +++ b/ui/src/types/common.ts @@ -42,7 +42,7 @@ export interface BusinessParty { partyType: PartyType primaryContact?: Contact contacts?: Contact[] - industry?: string + industry?: BusinessPartyIndustryEnum email?: string phone?: string website?: string @@ -77,6 +77,21 @@ export interface BusinessParty { bankAccounts?: BankAccount[] } +export enum BusinessPartyIndustryEnum { + // İş Ortağı Endüstrisi + Technology = 'TECHNOLOGY', // Teknoloji + Healthcare = 'HEALTHCARE', // Sağlık + Finance = 'FINANCE', // Finans + Retail = 'RETAIL', // Perakende + Manufacturing = 'MANUFACTURING', // Üretim + Education = 'EDUCATION', // Eğitim + Construction = 'CONSTRUCTION', // İnşaat + Hospitality = 'HOSPITALITY', // Konaklama + Transportation = 'TRANSPORTATION', // Ulaşım + RealEstate = 'REAL_ESTATE', // Emlak + Other = 'OTHER', // Diğer +} + export enum BusinessPartyStatusEnum { // İş Ortağı Durumu Prospect = 'PROSPECT', // Potansiyel diff --git a/ui/src/types/fi.ts b/ui/src/types/fi.ts index f2058438..23fe04e9 100644 --- a/ui/src/types/fi.ts +++ b/ui/src/types/fi.ts @@ -205,7 +205,7 @@ export interface FiCheck { amount: number currency: string status: CheckStatusEnum - type: CheckTypeEnum + type: TypeEnum bankingDate?: Date collectionDate?: Date endorsedTo?: string @@ -227,7 +227,7 @@ export interface PromissoryNote { amount: number currency: string status: NoteStatusEnum - type: NoteTypeEnum // Received or Issued + type: TypeEnum // Received or Issued collectionDate?: Date endorsedTo?: string location?: string @@ -321,7 +321,7 @@ export enum CheckStatusEnum { Cancelled = 'CANCELLED', // İPTAL EDİLDİ } -export enum CheckTypeEnum { +export enum TypeEnum { Received = 'RECEIVED', // ALINAN Issued = 'ISSUED', // VERİLEN } @@ -334,11 +334,6 @@ export enum NoteStatusEnum { Cancelled = 'CANCELLED', // İPTAL EDİLDİ } -export enum NoteTypeEnum { - Received = 'RECEIVED', // Alınan - Issued = 'ISSUED', // Verilen -} - export enum WaybillTypeEnum { Outgoing = 'outgoing', // Çıkış İrsaliyesi Incoming = 'incoming', // Giriş İrsaliyesi diff --git a/ui/src/types/hr.ts b/ui/src/types/hr.ts index 14101d21..a0254ec0 100644 --- a/ui/src/types/hr.ts +++ b/ui/src/types/hr.ts @@ -758,3 +758,20 @@ export enum QuestionTypeEnum { YesNo = 'YES_NO', // Evet/Hayır Scale = 'SCALE', // Ölçek (1-10 gibi) } + +export const getQuestionTypeText = (type: QuestionTypeEnum) => { + switch (type) { + case QuestionTypeEnum.Rating: + return 'Puanlama' + case QuestionTypeEnum.MultipleChoice: + return 'Çoktan Seçmeli' + case QuestionTypeEnum.Text: + return 'Metin' + case QuestionTypeEnum.YesNo: + return 'Evet/Hayır' + case QuestionTypeEnum.Scale: + return 'Ölçek' + default: + return 'Bilinmeyen' + } +} diff --git a/ui/src/types/mm.ts b/ui/src/types/mm.ts index 165b37da..762ff5ec 100644 --- a/ui/src/types/mm.ts +++ b/ui/src/types/mm.ts @@ -559,9 +559,11 @@ export enum OrderStatusEnum { export enum SupplierTypeEnum { // Tedarikçi Türü - Material = 'MATERIAL', // Malzeme - Service = 'SERVICE', // Hizmet - Both = 'BOTH', // Her ikisi + Manufacturer = 'MANUFACTURER', // Üretici + Distributor = 'DISTRIBUTOR', // Distribütör + Wholesaler = 'WHOLESALER', // Toptancı + ServiceProvider = 'SERVICE_PROVIDER', // Hizmet Sağlayıcı + Other = 'OTHER', // Diğer } export enum RequisitionStatusEnum { diff --git a/ui/src/types/pm.ts b/ui/src/types/pm.ts index 1edfe444..6d9e7f2b 100644 --- a/ui/src/types/pm.ts +++ b/ui/src/types/pm.ts @@ -29,7 +29,8 @@ export interface PmWorkCenter { capacity: number costPerHour: number setupTime: number - machineType: string + machineTypeId: string + machineType?: PmMachineType isActive: boolean creationTime: Date lastModificationTime: Date @@ -45,6 +46,14 @@ export interface PmWorkCenterType { isActive: boolean } +export interface PmMachineType { + // Makina Türü + id: string + code: string + name: string + isActive: boolean +} + export interface PmWorkCenterSpecification { // İş Merkezi / Ekipman Özelliği id: string diff --git a/ui/src/types/ps.ts b/ui/src/types/ps.ts index 5cca43aa..bfe724c9 100644 --- a/ui/src/types/ps.ts +++ b/ui/src/types/ps.ts @@ -55,7 +55,7 @@ export interface PsProjectPhase { assignedTeams: string[] deliverables: string[] risks: string[] - category: string + category: PhaseCategoryEnum } export interface PsProjectTask { @@ -172,7 +172,7 @@ export interface PsProjectCostTracking { plannedDuration: number // days actualDuration?: number // days progress: number // percentage - status: 'ON_TRACK' | 'AT_RISK' | 'DELAYED' | 'COMPLETED' + status: ProjectCostTrackingStatus currency: string lastUpdated: Date } @@ -255,6 +255,15 @@ export enum ProjectStatusEnum { Cancelled = 'CANCELLED', // İptal Edildi } +export enum PhaseCategoryEnum { + // Category of Phase + Planning = 'PLANNING', // Planlama + Development = 'EXECUTION', // Yürütme + Testing = 'MONITORING', // İzleme + Deployment = 'CLOSURE', // Kapanış + Design = 'OTHER', // Diğer +} + export enum PhaseStatusEnum { // Faz Durumu NotStarted = 'NOT_STARTED', // Başlanmadı @@ -354,3 +363,11 @@ export enum PsDocumentTypeEnum { Manual = 'MANUAL', // Kılavuz Other = 'OTHER', // Diğer } + +export enum ProjectCostTrackingStatus { + // Proje Maliyet Takibi Durumu + OnTrack = 'ON_TRACK', // Planında + AtRisk = 'AT_RISK', // Riskte + Delayed = 'DELAYED', // Gecikmiş + Completed = 'COMPLETED', // Tamamlandı +} diff --git a/ui/src/utils/erp.tsx b/ui/src/utils/erp.tsx index 88723f0e..879f34c2 100644 --- a/ui/src/utils/erp.tsx +++ b/ui/src/utils/erp.tsx @@ -54,6 +54,7 @@ import { SerialStatusEnum, SupplierCardTypeEnum, SupplierTypeEnum, + ReceiptStatusEnum, } from '../types/mm' import { BOMTypeEnum, @@ -80,13 +81,20 @@ import { WarehouseTypeEnum, ZoneTypeEnum, } from '../types/wm' -import { BusinessPartyStatusEnum, PaymentTerms, PriorityEnum, TeamRoleEnum } from '../types/common' +import { + BusinessPartyIndustryEnum, + BusinessPartyStatusEnum, + PaymentTerms, + PriorityEnum, + TeamRoleEnum, +} from '../types/common' import { AccountTypeEnum, BankAccountTypeEnum, BankTransactionTypeEnum, CashMovementTypeEnum, CheckStatusEnum, + TypeEnum, FiDocumentTypeEnum, InvoiceStatusEnum, InvoiceTypeEnum, @@ -102,6 +110,7 @@ import { ActivityStatusEnum, CrmActivityTypeEnum, CustomerSegmentEnum, + CustomerTypeEnum, LostReasonCategoryEnum, OpportunityStageEnum, SaleOrderItemStatusEnum, @@ -113,9 +122,11 @@ import { CostCenterType, EmployeeStatusEnum, EmploymentTypeEnum, + GenderEnum, JobLevelEnum, LeaveStatusEnum, LeaveTypeEnum, + MaritalStatusEnum, ParticipantStatusEnum, PayrollStatusEnum, } from '../types/hr' @@ -131,7 +142,9 @@ import { } from '../types/pm' import { DailyUpdateStatusEnum, + PhaseCategoryEnum, PhaseStatusEnum, + ProjectCostTrackingStatus, ProjectStatusEnum, ProjectTypeEnum, PsActivityTypeEnum, @@ -146,6 +159,21 @@ import { WorkTypeEnum, } from '../types/ps' +export const getBOMTypeText = (type: BOMTypeEnum) => { + switch (type) { + case BOMTypeEnum.Production: + return 'Üretim' + case BOMTypeEnum.Engineering: + return 'Mühendislik' + case BOMTypeEnum.Planning: + return 'Planlama' + case BOMTypeEnum.Costing: + return 'Maliyetleme' + default: + return 'Bilinmiyor' + } +} + export const getBOMTypeColor = (type: BOMTypeEnum) => { switch (type) { case BOMTypeEnum.Production: @@ -161,65 +189,59 @@ export const getBOMTypeColor = (type: BOMTypeEnum) => { } } -export const getBOMTypeName = (type: BOMTypeEnum) => { - switch (type) { - case BOMTypeEnum.Production: - return 'Üretim' - case BOMTypeEnum.Engineering: - return 'Mühendislik' - case BOMTypeEnum.Planning: - return 'Planlama' - case BOMTypeEnum.Costing: - return 'Maliyetleme' - default: - return 'Bilinmiyor' - } -} - -export const getBOMexpeText = (type: BOMTypeEnum) => { - const types = { - [BOMTypeEnum.Production]: 'Üretim', - [BOMTypeEnum.Engineering]: 'Mühendislik', - [BOMTypeEnum.Planning]: 'Planlama', - [BOMTypeEnum.Costing]: 'Maliyetlendirme', - } - return types[type] -} - -export const getMovementTypeInfo = (type: MovementTypeEnum) => { +export const getMovementTypeText = (type: MovementTypeEnum) => { switch (type) { case MovementTypeEnum.GoodsReceipt: - return { - label: 'Mal Girişi', - icon: FaArrowUp, - color: 'text-green-600 bg-green-100', - sign: '+', - } + return 'Mal Girişi' case MovementTypeEnum.GoodsIssue: - return { - label: 'Mal Çıkışı', - icon: FaArrowDown, - color: 'text-red-600 bg-red-100', - sign: '-', - } + return 'Mal Çıkışı' case MovementTypeEnum.Transfer: - return { - label: 'Transfer', - icon: FaRepeat, - color: 'text-blue-600 bg-blue-100', - sign: '', - } + return 'Transfer' default: - return { - label: 'Bilinmeyen', - icon: FaArchive, - color: 'text-gray-600 bg-gray-100', - sign: '', - } + return 'Bilinmeyen' } } -export const getMaterialTypeDisplay = (code: MaterialTypeEnum) => { +export const getMovementTypeIcon = (type: MovementTypeEnum) => { + switch (type) { + case MovementTypeEnum.GoodsReceipt: + return FaArrowUp + case MovementTypeEnum.GoodsIssue: + return FaArrowDown + case MovementTypeEnum.Transfer: + return FaRepeat + default: + return FaArchive + } +} + +export const getMovementTypeColor = (type: MovementTypeEnum) => { + switch (type) { + case MovementTypeEnum.GoodsReceipt: + return 'text-green-600 bg-green-100' + case MovementTypeEnum.GoodsIssue: + return 'text-red-600 bg-red-100' + case MovementTypeEnum.Transfer: + return 'text-blue-600 bg-blue-100' + default: + return 'text-gray-600 bg-gray-100' + } +} + +export const getMovementTypeSign = (type: MovementTypeEnum) => { + switch (type) { + case MovementTypeEnum.GoodsReceipt: + return '+' + case MovementTypeEnum.GoodsIssue: + return '-' + case MovementTypeEnum.Transfer: + return '' + default: + return '' + } +} + +export const getMaterialTypeText = (code: MaterialTypeEnum) => { switch (code) { case MaterialTypeEnum.RawMaterial: return 'HAMMADDE' @@ -266,17 +288,6 @@ export const getOperationTypeColor = (type: OperationCategoryEnum) => { return colors[type] } -export const getOperationCategoryColor = (category: string) => { - const colors: { [key: string]: string } = { - Üretim: 'bg-blue-100 text-blue-800', - Montaj: 'bg-green-100 text-green-800', - Kalite: 'bg-purple-100 text-purple-800', - Paketleme: 'bg-orange-100 text-orange-800', - Bakım: 'bg-red-100 text-red-800', - } - return colors[category] || 'bg-gray-100 text-gray-800' -} - export const getSkillLevelText = (level: number) => { const levels = ['Başlangıç', 'Temel', 'Orta', 'İleri', 'Uzman'] return levels[level - 1] || 'Belirsiz' @@ -308,26 +319,6 @@ export const getWarehouseTypeColor = (type: WarehouseTypeEnum) => { return colors[type] } -export const getSecurityLevelText = (level: SecurityLevelEnum) => { - const levels = { - [SecurityLevelEnum.Low]: 'Düşük', - [SecurityLevelEnum.Medium]: 'Orta', - [SecurityLevelEnum.High]: 'Yüksek', - [SecurityLevelEnum.Restricted]: 'Kısıtlı', - } - return levels[level] -} - -export const getSecurityLevelColor = (level: SecurityLevelEnum) => { - const colors = { - [SecurityLevelEnum.Low]: 'text-green-600', - [SecurityLevelEnum.Medium]: 'text-yellow-600', - [SecurityLevelEnum.High]: 'text-orange-600', - [SecurityLevelEnum.Restricted]: 'text-red-600', - } - return colors[level] -} - export const getRoutingStatusText = (status: RoutingStatusEnum) => { const statuses = { [RoutingStatusEnum.Draft]: 'Taslak', @@ -427,21 +418,6 @@ export const getPriorityColor = (priority: PriorityEnum) => { return colors[priority] } -export const getWaybillStatusColor = (status: WaybillStatusEnum) => { - switch (status) { - case WaybillStatusEnum.Draft: - return 'bg-gray-100 text-gray-800' - case WaybillStatusEnum.Confirmed: - return 'bg-blue-100 text-blue-800' - case WaybillStatusEnum.Delivered: - return 'bg-green-100 text-green-800' - case WaybillStatusEnum.Cancelled: - return 'bg-red-100 text-red-800' - default: - return 'bg-gray-100 text-gray-800' - } -} - export const getWaybillStatusText = (status: WaybillStatusEnum) => { switch (status) { case WaybillStatusEnum.Draft: @@ -457,6 +433,21 @@ export const getWaybillStatusText = (status: WaybillStatusEnum) => { } } +export const getWaybillStatusColor = (status: WaybillStatusEnum) => { + switch (status) { + case WaybillStatusEnum.Draft: + return 'bg-gray-100 text-gray-800' + case WaybillStatusEnum.Confirmed: + return 'bg-blue-100 text-blue-800' + case WaybillStatusEnum.Delivered: + return 'bg-green-100 text-green-800' + case WaybillStatusEnum.Cancelled: + return 'bg-red-100 text-red-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + export const getWaybillTypeText = (type: WaybillTypeEnum) => { switch (type) { case WaybillTypeEnum.Outgoing: @@ -472,6 +463,21 @@ export const getWaybillTypeText = (type: WaybillTypeEnum) => { } } +export const getBusinessPartyStatusText = (status: BusinessPartyStatusEnum) => { + switch (status) { + case BusinessPartyStatusEnum.Prospect: + return 'Potansiyel' + case BusinessPartyStatusEnum.Active: + return 'Aktif' + case BusinessPartyStatusEnum.Inactive: + return 'Pasif' + case BusinessPartyStatusEnum.Blocked: + return 'Blokeli' + default: + return 'Bilinmiyor' + } +} + export const getBusinessPartyStatusColor = (status: BusinessPartyStatusEnum) => { switch (status) { case BusinessPartyStatusEnum.Prospect: @@ -487,21 +493,6 @@ export const getBusinessPartyStatusColor = (status: BusinessPartyStatusEnum) => } } -export const getBusinessPartyStatusName = (status: BusinessPartyStatusEnum) => { - switch (status) { - case BusinessPartyStatusEnum.Prospect: - return 'Potansiyel' - case BusinessPartyStatusEnum.Active: - return 'Aktif' - case BusinessPartyStatusEnum.Inactive: - return 'Pasif' - case BusinessPartyStatusEnum.Blocked: - return 'Blokeli' - default: - return 'Bilinmiyor' - } -} - export const getCustomerSegmentColor = (segment: CustomerSegmentEnum) => { switch (segment) { case CustomerSegmentEnum.Enterprise: @@ -517,7 +508,7 @@ export const getCustomerSegmentColor = (segment: CustomerSegmentEnum) => { } } -export const getCustomerSegmentName = (segment: CustomerSegmentEnum) => { +export const getCustomerSegmentText = (segment: CustomerSegmentEnum) => { switch (segment) { case CustomerSegmentEnum.Enterprise: return 'Kurumsal' @@ -746,16 +737,6 @@ export const getTransactionTypeText = (type: BankTransactionTypeEnum) => { return typeLabels[type] } -export const getTransactionStatusText = (status: TransactionStatusEnum) => { - const statusLabels = { - [TransactionStatusEnum.Pending]: 'Bekliyor', - [TransactionStatusEnum.Completed]: 'Tamamlandı', - [TransactionStatusEnum.Failed]: 'Başarısız', - [TransactionStatusEnum.Cancelled]: 'İptal', - } - return statusLabels[status] -} - export const getTransactionTypeColor = (type: BankTransactionTypeEnum) => { const typeColors = { [BankTransactionTypeEnum.Deposit]: 'bg-green-100 text-green-800', @@ -768,6 +749,16 @@ export const getTransactionTypeColor = (type: BankTransactionTypeEnum) => { return typeColors[type] } +export const getTransactionStatusText = (status: TransactionStatusEnum) => { + const statusLabels = { + [TransactionStatusEnum.Pending]: 'Bekliyor', + [TransactionStatusEnum.Completed]: 'Tamamlandı', + [TransactionStatusEnum.Failed]: 'Başarısız', + [TransactionStatusEnum.Cancelled]: 'İptal', + } + return statusLabels[status] +} + export const getTransactionStatusColor = (status: TransactionStatusEnum) => { const statusColors = { [TransactionStatusEnum.Pending]: 'bg-yellow-100 text-yellow-800', @@ -1098,23 +1089,6 @@ export const getParticipantStatusText = (status: ParticipantStatusEnum) => { } } -export const getEmployeeStatusColor = (status: EmployeeStatusEnum) => { - switch (status) { - case EmployeeStatusEnum.Active: - return 'bg-green-100 text-green-800' - case EmployeeStatusEnum.Inactive: - return 'bg-gray-100 text-gray-800' - case EmployeeStatusEnum.OnLeave: - return 'bg-yellow-100 text-yellow-800' - case EmployeeStatusEnum.Suspended: - return 'bg-red-100 text-red-800' - case EmployeeStatusEnum.Terminated: - return 'bg-red-100 text-red-800' - default: - return 'bg-gray-100 text-gray-800' - } -} - export const getEmployeeStatusText = (status: EmployeeStatusEnum) => { switch (status) { case EmployeeStatusEnum.Active: @@ -1132,6 +1106,23 @@ export const getEmployeeStatusText = (status: EmployeeStatusEnum) => { } } +export const getEmployeeStatusColor = (status: EmployeeStatusEnum) => { + switch (status) { + case EmployeeStatusEnum.Active: + return 'bg-green-100 text-green-800' + case EmployeeStatusEnum.Inactive: + return 'bg-gray-100 text-gray-800' + case EmployeeStatusEnum.OnLeave: + return 'bg-yellow-100 text-yellow-800' + case EmployeeStatusEnum.Suspended: + return 'bg-red-100 text-red-800' + case EmployeeStatusEnum.Terminated: + return 'bg-red-100 text-red-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + export const getEmployeeStatusIcon = (status: EmployeeStatusEnum) => { switch (status) { case EmployeeStatusEnum.Active: @@ -1423,6 +1414,16 @@ export const getFaultTypeColor = (type: FaultTypeEnum) => { return colors[type] } +export const getCriticalityLevelText = (criticality: CriticalityLevelEnum) => { + const levels = { + [CriticalityLevelEnum.Low]: 'Düşük', + [CriticalityLevelEnum.Medium]: 'Orta', + [CriticalityLevelEnum.High]: 'Yüksek', + [CriticalityLevelEnum.Critical]: 'Kritik', + } + return levels[criticality] +} + export const getCriticalityLevelColor = (severity: CriticalityLevelEnum) => { const colors = { [CriticalityLevelEnum.Low]: 'border-l-blue-500', @@ -1453,7 +1454,20 @@ export const getMaintenancePlanTypeColor = (type: MaintenancePlanTypeEnum) => { return colors[type] } -export const getFrequencyUnitText = (frequency: number, unit: FrequencyUnitEnum) => { +export const getFrequencyUnitText = (unit: FrequencyUnitEnum) => { + const units = { + [FrequencyUnitEnum.Days]: 'Günlük', + [FrequencyUnitEnum.Weeks]: 'Haftalık', + [FrequencyUnitEnum.Months]: 'Aylık', + [FrequencyUnitEnum.Years]: 'Yıllık', + [FrequencyUnitEnum.Hours]: 'Saatlik', + [FrequencyUnitEnum.Cycles]: 'Döngü', + } + + return units[unit] +} + +export const getFrequencyUnitTextByFrequency = (frequency: number, unit: FrequencyUnitEnum) => { const units = { [FrequencyUnitEnum.Days]: 'Günlük', [FrequencyUnitEnum.Weeks]: 'Haftalık', @@ -1553,16 +1567,6 @@ export const getWorkCenterStatusIcon = (status: WorkCenterStatusEnum) => { } } -export const getCriticalityLevelText = (criticality: CriticalityLevelEnum) => { - const levels = { - [CriticalityLevelEnum.Low]: 'Düşük', - [CriticalityLevelEnum.Medium]: 'Orta', - [CriticalityLevelEnum.High]: 'Yüksek', - [CriticalityLevelEnum.Critical]: 'Kritik', - } - return levels[criticality] -} - export const getRequirementSourceTypeText = (sourceType: RequirementSourceTypeEnum) => { const sourceLabels = { [RequirementSourceTypeEnum.SalesOrder]: 'Satış Siparişi', @@ -1583,40 +1587,6 @@ export const getRequirementSourceTypeColor = (sourceType: RequirementSourceTypeE return sourceColors[sourceType] } -export const getProductionOrderStatus = (status: ProductionOrderStatusEnum): ProjectStatusEnum => { - switch (status) { - case ProductionOrderStatusEnum.Created: - case ProductionOrderStatusEnum.Released: - return ProjectStatusEnum.Planning - case ProductionOrderStatusEnum.InProgress: - return ProjectStatusEnum.Active - case ProductionOrderStatusEnum.Completed: - return ProjectStatusEnum.Completed - case ProductionOrderStatusEnum.Cancelled: - return ProjectStatusEnum.Cancelled - case ProductionOrderStatusEnum.OnHold: - return ProjectStatusEnum.OnHold - default: - return ProjectStatusEnum.Planning - } -} - -export const getWorkOrderStatus = (status: WorkOrderStatusEnum): TaskStatusEnum => { - switch (status) { - case WorkOrderStatusEnum.Created: - case WorkOrderStatusEnum.Released: - return TaskStatusEnum.NotStarted - case WorkOrderStatusEnum.InProgress: - return TaskStatusEnum.InProgress - case WorkOrderStatusEnum.Completed: - return TaskStatusEnum.Completed - case WorkOrderStatusEnum.Cancelled: - return TaskStatusEnum.Cancelled - default: - return TaskStatusEnum.NotStarted - } -} - export const getProductionOrderStatusColor = (status: ProductionOrderStatusEnum) => { switch (status) { case ProductionOrderStatusEnum.Created: @@ -1687,7 +1657,7 @@ export const getProgressColor = (percentage: number) => { return 'bg-red-500' } -export const getProductionOrderTypeText = (type: ProductionOrderTypeEnum | undefined) => { +export const getProductionOrderTypeText = (type: ProductionOrderTypeEnum) => { switch (type) { case ProductionOrderTypeEnum.Standard: return 'Standart' @@ -1779,34 +1749,49 @@ export const getPsActivityTypeColor = (activityType: PsActivityTypeEnum): string return colors[activityType] || 'bg-gray-100 text-gray-800' } -export const getCostTimeTrackingStatusText = (status: string) => { - const labels = { - ON_TRACK: 'Planında', - AT_RISK: 'Risk Altında', - DELAYED: 'Gecikmiş', - COMPLETED: 'Tamamlandı', +export const getCostTimeTrackingStatusText = (status: ProjectCostTrackingStatus) => { + switch (status) { + case ProjectCostTrackingStatus.OnTrack: + return 'Planında' + case ProjectCostTrackingStatus.AtRisk: + return 'Risk Altında' + case ProjectCostTrackingStatus.Delayed: + return 'Gecikmiş' + case ProjectCostTrackingStatus.Completed: + return 'Tamamlandı' + default: + return 'Bilinmeyen' } - return labels[status as keyof typeof labels] || status } -export const getCostTimeTrackingStatusColor = (status: string) => { - const colors = { - ON_TRACK: 'bg-green-100 text-green-800', - AT_RISK: 'bg-yellow-100 text-yellow-800', - DELAYED: 'bg-red-100 text-red-800', - COMPLETED: 'bg-blue-100 text-blue-800', +export const getCostTimeTrackingStatusColor = (status: ProjectCostTrackingStatus) => { + switch (status) { + case ProjectCostTrackingStatus.OnTrack: + return 'bg-green-100 text-green-800' + case ProjectCostTrackingStatus.AtRisk: + return 'bg-yellow-100 text-yellow-800' + case ProjectCostTrackingStatus.Delayed: + return 'bg-red-100 text-red-800' + case ProjectCostTrackingStatus.Completed: + return 'bg-blue-100 text-blue-800' + default: + return 'bg-gray-100 text-gray-800' } - return colors[status as keyof typeof colors] || 'bg-gray-100 text-gray-800' } -export const getCostTimeTrackingStatusIcon = (status: string) => { - const icons = { - ON_TRACK: FaCheckCircle, - AT_RISK: FaExclamationCircle, - DELAYED: FaExclamationCircle, - COMPLETED: FaCheckCircle, +export const getCostTimeTrackingStatusIcon = (status: ProjectCostTrackingStatus) => { + switch (status) { + case ProjectCostTrackingStatus.OnTrack: + return FaCheckCircle + case ProjectCostTrackingStatus.AtRisk: + return FaExclamationCircle + case ProjectCostTrackingStatus.Delayed: + return FaExclamationCircle + case ProjectCostTrackingStatus.Completed: + return FaCheckCircle + default: + return FaExclamationCircle } - return icons[status as keyof typeof icons] || FaExclamationCircle } export const getPsDocumentTypeText = (type: PsDocumentTypeEnum): string => { @@ -1872,6 +1857,23 @@ export const getPhaseStatusIcon = (status: PhaseStatusEnum) => { } } +export const getProjectStatusText = (status: ProjectStatusEnum) => { + switch (status) { + case ProjectStatusEnum.Planning: + return 'Planlama' + case ProjectStatusEnum.Active: + return 'Aktif' + case ProjectStatusEnum.OnHold: + return 'Beklemede' + case ProjectStatusEnum.Completed: + return 'Tamamlandı' + case ProjectStatusEnum.Cancelled: + return 'İptal Edildi' + default: + return 'Bilinmiyor' + } +} + export const getProjectStatusColor = (status: ProjectStatusEnum) => { switch (status) { case ProjectStatusEnum.Planning: @@ -1906,20 +1908,18 @@ export const getProjectStatusIcon = (status: ProjectStatusEnum) => { } } -export const getProjectStatusText = (status: ProjectStatusEnum) => { - switch (status) { - case ProjectStatusEnum.Planning: - return 'Planlama' - case ProjectStatusEnum.Active: - return 'Aktif' - case ProjectStatusEnum.OnHold: - return 'Beklemede' - case ProjectStatusEnum.Completed: - return 'Tamamlandı' - case ProjectStatusEnum.Cancelled: - return 'İptal Edildi' +export const getProjectTypeText = (type: ProjectTypeEnum) => { + switch (type) { + case ProjectTypeEnum.Internal: + return 'İç Proje' + case ProjectTypeEnum.Customer: + return 'Müşteri Projesi' + case ProjectTypeEnum.Research: + return 'Ar-Ge Projesi' + case ProjectTypeEnum.Maintenance: + return 'Bakım Projesi' default: - return 'Bilinmiyor' + return 'Diğer' } } @@ -1938,63 +1938,74 @@ export const getProjectTypeColor = (type: ProjectTypeEnum) => { } } -export const getProjectTypeText = (type: ProjectTypeEnum) => { - switch (type) { - case ProjectTypeEnum.Internal: - return 'İç Proje' - case ProjectTypeEnum.Customer: - return 'Müşteri Projesi' - case ProjectTypeEnum.Research: - return 'Ar-Ge Projesi' - case ProjectTypeEnum.Maintenance: - return 'Bakım Projesi' - default: - return 'Diğer' - } -} - -export const getProjectPhaseTaskStatusColor = ( - status: TaskStatusEnum | ProjectStatusEnum | PhaseStatusEnum, -) => { - switch (status) { - case TaskStatusEnum.Completed: - case ProjectStatusEnum.Completed: - case PhaseStatusEnum.Completed: - return 'bg-gradient-to-r from-green-500 to-green-700' - case TaskStatusEnum.InProgress: - case ProjectStatusEnum.Active: - case PhaseStatusEnum.InProgress: - return 'bg-gradient-to-r from-blue-500 to-blue-700' - case TaskStatusEnum.OnHold: - case ProjectStatusEnum.OnHold: - case PhaseStatusEnum.OnHold: - return 'bg-gradient-to-r from-yellow-500 to-orange-600' - case TaskStatusEnum.Cancelled: - case ProjectStatusEnum.Cancelled: - case PhaseStatusEnum.Cancelled: - return 'bg-gradient-to-r from-red-500 to-red-700' - default: - return 'bg-gradient-to-r from-black-500 to-black-700' - } -} - -export const getPhaseCategoryColor = (category: string) => { +export const getPhaseCategoryText = (category: PhaseCategoryEnum) => { switch (category) { - case 'Planning': + case PhaseCategoryEnum.Planning: + return 'Planlama' + case PhaseCategoryEnum.Development: + return 'Yürütme' + case PhaseCategoryEnum.Testing: + return 'İzleme' + case PhaseCategoryEnum.Deployment: + return 'Kapanış' + case PhaseCategoryEnum.Design: + return 'Diğer' + default: + return 'Bilinmeyen' + } +} + +export const getPhaseCategoryColor = (category: PhaseCategoryEnum) => { + switch (category) { + case PhaseCategoryEnum.Planning: return 'bg-purple-100 text-purple-800' - case 'Development': + case PhaseCategoryEnum.Development: return 'bg-blue-100 text-blue-800' - case 'Testing': + case PhaseCategoryEnum.Testing: return 'bg-orange-100 text-orange-800' - case 'Deployment': + case PhaseCategoryEnum.Deployment: return 'bg-green-100 text-green-800' - case 'Design': + case PhaseCategoryEnum.Design: return 'bg-pink-100 text-pink-800' default: return 'bg-gray-100 text-gray-800' } } +export const getTaskStatusText = (status: TaskStatusEnum) => { + switch (status) { + case TaskStatusEnum.NotStarted: + return 'Başlanmadı' + case TaskStatusEnum.InProgress: + return 'Devam Ediyor' + case TaskStatusEnum.Completed: + return 'Tamamlandı' + case TaskStatusEnum.OnHold: + return 'Beklemede' + case TaskStatusEnum.Cancelled: + return 'İptal Edildi' + default: + return 'Bilinmiyor' + } +} + +export const getTaskStatusColor = (status: TaskStatusEnum) => { + switch (status) { + case TaskStatusEnum.NotStarted: + return 'bg-gray-100 text-gray-800' + case TaskStatusEnum.InProgress: + return 'bg-blue-100 text-blue-800' + case TaskStatusEnum.Completed: + return 'bg-green-100 text-green-800' + case TaskStatusEnum.OnHold: + return 'bg-yellow-100 text-yellow-800' + case TaskStatusEnum.Cancelled: + return 'bg-red-100 text-red-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + export const getTaskStatusIcon = (status: TaskStatusEnum) => { switch (status) { case TaskStatusEnum.NotStarted: @@ -2011,21 +2022,22 @@ export const getTaskStatusIcon = (status: TaskStatusEnum) => { return } } - -export const getTaskStatusColor = (status: TaskStatusEnum) => { - switch (status) { - case TaskStatusEnum.NotStarted: - return 'bg-gray-100 text-gray-800' - case TaskStatusEnum.InProgress: - return 'bg-blue-100 text-blue-800' - case TaskStatusEnum.Completed: - return 'bg-green-100 text-green-800' - case TaskStatusEnum.OnHold: - return 'bg-yellow-100 text-yellow-800' - case TaskStatusEnum.Cancelled: - return 'bg-red-100 text-red-800' +export const getTaskTypeText = (taskType: TaskTypeEnum) => { + switch (taskType) { + case TaskTypeEnum.Development: + return 'Geliştirme' + case TaskTypeEnum.Testing: + return 'Test' + case TaskTypeEnum.Documentation: + return 'Dokümantasyon' + case TaskTypeEnum.Review: + return 'İnceleme' + case TaskTypeEnum.Deployment: + return 'Dağıtım' + case TaskTypeEnum.Meeting: + return 'Toplantı' default: - return 'bg-gray-100 text-gray-800' + return 'Bilinmiyor' } } @@ -2092,6 +2104,16 @@ export const getRiskLevelText = (level: RiskLevelEnum): string => { return labels[level] || level } +export const getRiskLevelColor = (level: RiskLevelEnum): string => { + const colors = { + [RiskLevelEnum.Low]: 'bg-green-100 text-green-800', + [RiskLevelEnum.Medium]: 'bg-yellow-100 text-yellow-800', + [RiskLevelEnum.High]: 'bg-orange-100 text-orange-800', + [RiskLevelEnum.Critical]: 'bg-red-100 text-red-800', + } + return colors[level] || 'bg-gray-100 text-gray-800' +} + export const getRiskStatusText = (status: RiskStatusEnum): string => { const labels = { [RiskStatusEnum.Identified]: 'Tespit Edildi', @@ -2103,16 +2125,6 @@ export const getRiskStatusText = (status: RiskStatusEnum): string => { return labels[status] || status } -export const getRiskLevelColor = (level: RiskLevelEnum): string => { - const colors = { - [RiskLevelEnum.Low]: 'bg-green-100 text-green-800', - [RiskLevelEnum.Medium]: 'bg-yellow-100 text-yellow-800', - [RiskLevelEnum.High]: 'bg-orange-100 text-orange-800', - [RiskLevelEnum.Critical]: 'bg-red-100 text-red-800', - } - return colors[level] || 'bg-gray-100 text-gray-800' -} - export const getDailyUpdateStatusColor = (status: DailyUpdateStatusEnum) => { switch (status) { case DailyUpdateStatusEnum.Draft: @@ -2291,27 +2303,6 @@ export const getApprovalStatusIcon = (status: ApprovalStatusEnum) => { } } -export const getRequisitionStatusColor = (status: RequisitionStatusEnum) => { - switch (status) { - case RequisitionStatusEnum.Draft: - return 'bg-gray-100 text-gray-800' - case RequisitionStatusEnum.Submitted: - return 'bg-blue-100 text-blue-800' - case RequisitionStatusEnum.InApproval: - return 'bg-yellow-100 text-yellow-800' - case RequisitionStatusEnum.Approved: - return 'bg-green-100 text-green-800' - case RequisitionStatusEnum.Rejected: - return 'bg-red-100 text-red-800' - case RequisitionStatusEnum.Cancelled: - return 'bg-gray-100 text-gray-800' - case RequisitionStatusEnum.Converted: - return 'bg-purple-100 text-purple-800' - default: - return 'bg-gray-100 text-gray-800' - } -} - export const getRequisitionStatusText = (status: RequisitionStatusEnum) => { switch (status) { case RequisitionStatusEnum.Draft: @@ -2333,6 +2324,27 @@ export const getRequisitionStatusText = (status: RequisitionStatusEnum) => { } } +export const getRequisitionStatusColor = (status: RequisitionStatusEnum) => { + switch (status) { + case RequisitionStatusEnum.Draft: + return 'bg-gray-100 text-gray-800' + case RequisitionStatusEnum.Submitted: + return 'bg-blue-100 text-blue-800' + case RequisitionStatusEnum.InApproval: + return 'bg-yellow-100 text-yellow-800' + case RequisitionStatusEnum.Approved: + return 'bg-green-100 text-green-800' + case RequisitionStatusEnum.Rejected: + return 'bg-red-100 text-red-800' + case RequisitionStatusEnum.Cancelled: + return 'bg-gray-100 text-gray-800' + case RequisitionStatusEnum.Converted: + return 'bg-purple-100 text-purple-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + export const getRequisitionStatusIcon = (status: RequisitionStatusEnum) => { switch (status) { case RequisitionStatusEnum.Draft: @@ -2427,29 +2439,33 @@ export const getPaymentTermsText = (terms: PaymentTerms) => { return termsMap[terms] || terms } -export const getSupplierTypeColor = (type: SupplierTypeEnum) => { +export const getSupplierTypeText = (type: SupplierTypeEnum) => { switch (type) { - case SupplierTypeEnum.Material: - return 'bg-blue-100 text-blue-800' - case SupplierTypeEnum.Service: - return 'bg-green-100 text-green-800' - case SupplierTypeEnum.Both: - return 'bg-purple-100 text-purple-800' + case SupplierTypeEnum.Wholesaler: + return 'Toptancı' + case SupplierTypeEnum.Distributor: + return 'Distribütör' + case SupplierTypeEnum.ServiceProvider: + return 'Hizmet Sağlayıcı' + case SupplierTypeEnum.Other: + return 'Diğer' default: - return 'bg-gray-100 text-gray-800' + return 'Bilinmiyor' } } -export const getSupplierTypeText = (type: SupplierTypeEnum) => { +export const getSupplierTypeColor = (type: SupplierTypeEnum) => { switch (type) { - case SupplierTypeEnum.Material: - return 'Malzeme' - case SupplierTypeEnum.Service: - return 'Hizmet' - case SupplierTypeEnum.Both: - return 'Karma' + case SupplierTypeEnum.Wholesaler: + return 'bg-blue-100 text-blue-800' + case SupplierTypeEnum.Distributor: + return 'bg-green-100 text-green-800' + case SupplierTypeEnum.ServiceProvider: + return 'bg-purple-100 text-purple-800' + case SupplierTypeEnum.Other: + return 'bg-gray-100 text-gray-800' default: - return 'Bilinmiyor' + return 'bg-gray-100 text-gray-800' } } @@ -2483,33 +2499,97 @@ export const getZoneTypeText = (type: ZoneTypeEnum) => { return labels[type] } -export const getQualityStatusInfo = (status: QualityStatusEnum) => { +export const getQualityStatusText = (status: QualityStatusEnum) => { switch (status) { case QualityStatusEnum.Approved: - return { label: 'Onaylandı', color: 'bg-green-100 text-green-800' } + return 'Onaylandı' case QualityStatusEnum.Rejected: - return { label: 'Reddedildi', color: 'bg-red-100 text-red-800' } + return 'Reddedildi' case QualityStatusEnum.Quarantine: - return { label: 'Karantina', color: 'bg-yellow-100 text-yellow-800' } + return 'Karantina' case QualityStatusEnum.Pending: - return { label: 'Beklemede', color: 'bg-blue-100 text-blue-800' } + return 'Beklemede' + case QualityStatusEnum.Conditional: + return 'Koşullu Onay' default: - return { label: 'Bilinmeyen', color: 'bg-gray-100 text-gray-800' } + return 'Bilinmeyen' } } -export const getSerialStatusInfo = (status: SerialStatusEnum) => { +export const getQualityStatusColor = (status: QualityStatusEnum) => { + switch (status) { + case QualityStatusEnum.Approved: + return 'bg-green-100 text-green-800' + case QualityStatusEnum.Rejected: + return 'bg-red-100 text-red-800' + case QualityStatusEnum.Quarantine: + return 'bg-yellow-100 text-yellow-800' + case QualityStatusEnum.Pending: + return 'bg-blue-100 text-blue-800' + case QualityStatusEnum.Conditional: + return 'bg-purple-100 text-purple-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + +export const getReceiptStatusText = (status: ReceiptStatusEnum) => { + switch (status) { + case ReceiptStatusEnum.Pending: + return 'Beklemede' + case ReceiptStatusEnum.InProgress: + return 'İşlemde' + case ReceiptStatusEnum.Completed: + return 'Tamamlandı' + case ReceiptStatusEnum.OnHold: + return 'Bekletildi' + default: + return 'Bilinmeyen' + } +} + +export const getReceiptStatusColor = (status: ReceiptStatusEnum) => { + switch (status) { + case ReceiptStatusEnum.Pending: + return 'bg-blue-100 text-blue-800' + case ReceiptStatusEnum.InProgress: + return 'bg-yellow-100 text-yellow-800' + case ReceiptStatusEnum.Completed: + return 'bg-green-100 text-green-800' + case ReceiptStatusEnum.OnHold: + return 'bg-red-100 text-red-800' + default: + return 'bg-gray-100 text-gray-800' + } +} + +export const getSerialStatusText = (status: SerialStatusEnum) => { switch (status) { case SerialStatusEnum.Available: - return { label: 'Müsait', color: 'bg-green-100 text-green-800' } + return 'Müsait' case SerialStatusEnum.InUse: - return { label: 'Kullanımda', color: 'bg-blue-100 text-blue-800' } + return 'Kullanımda' case SerialStatusEnum.Maintenance: - return { label: 'Bakımda', color: 'bg-yellow-100 text-yellow-800' } + return 'Bakımda' case SerialStatusEnum.Disposed: - return { label: 'İmha Edildi', color: 'bg-red-100 text-red-800' } + return 'İmha Edildi' default: - return { label: 'Bilinmeyen', color: 'bg-gray-100 text-gray-800' } + return 'Bilinmeyen' + } +} + +export const getSerialStatusColor = (status: SerialStatusEnum) => { + switch (status) { + case SerialStatusEnum.Available: + return 'bg-green-100 text-green-800' + case SerialStatusEnum.InUse: + return 'bg-blue-100 text-blue-800' + case SerialStatusEnum.Maintenance: + return 'bg-yellow-100 text-yellow-800' + case SerialStatusEnum.Disposed: + return 'bg-red-100 text-red-800' + default: + return 'bg-gray-100 text-gray-800' } } @@ -2699,3 +2779,101 @@ export const getNoteStatusColor = (status: NoteStatusEnum) => { } return statusColors[status] } + +export const getTypeText = (status: TypeEnum) => { + const statusLabels = { + [TypeEnum.Received]: 'Alınan', + [TypeEnum.Issued]: 'Verilen', + } + return statusLabels[status] +} + +export const getGanttStatusColor = ( + status: TaskStatusEnum | ProjectStatusEnum | PhaseStatusEnum, +) => { + switch (status) { + case TaskStatusEnum.Completed: + case ProjectStatusEnum.Completed: + case PhaseStatusEnum.Completed: + return 'bg-gradient-to-r from-green-500 to-green-700' + case TaskStatusEnum.InProgress: + case ProjectStatusEnum.Active: + case PhaseStatusEnum.InProgress: + return 'bg-gradient-to-r from-blue-500 to-blue-700' + case TaskStatusEnum.OnHold: + case ProjectStatusEnum.OnHold: + case PhaseStatusEnum.OnHold: + return 'bg-gradient-to-r from-yellow-500 to-orange-600' + case TaskStatusEnum.Cancelled: + case ProjectStatusEnum.Cancelled: + case PhaseStatusEnum.Cancelled: + return 'bg-gradient-to-r from-red-500 to-red-700' + default: + return 'bg-gradient-to-r from-black-500 to-black-700' + } +} + +export const getGenderText = (status: GenderEnum) => { + const genderLabels = { + [GenderEnum.Male]: 'Erkek', + [GenderEnum.Female]: 'Kadın', + [GenderEnum.Other]: 'Diğer', + } + return genderLabels[status] +} + +export const getMaritalStatusText = (status: MaritalStatusEnum) => { + const statusLabels = { + [MaritalStatusEnum.Single]: 'Bekar', + [MaritalStatusEnum.Married]: 'Evli', + [MaritalStatusEnum.Divorced]: 'Boşanmış', + [MaritalStatusEnum.Widowed]: 'Dul', + } + return statusLabels[status] +} + +export const getCustomerTypeText = (type: CustomerTypeEnum) => { + switch (type) { + case CustomerTypeEnum.Individual: + return 'Bireysel' + case CustomerTypeEnum.Company: + return 'Şirket' + case CustomerTypeEnum.Government: + return 'Devlet' + case CustomerTypeEnum.NonProfit: + return 'Kar Amacı Gütmeyen' + default: + return 'Bilinmeyen' + } +} + +export const getBusinessPartyIndustryText = (industry: BusinessPartyIndustryEnum | string) => { + switch (industry) { + case BusinessPartyIndustryEnum.Technology: + return 'Teknoloji' + case BusinessPartyIndustryEnum.Healthcare: + return 'Sağlık' + case BusinessPartyIndustryEnum.Finance: + return 'Finans' + case BusinessPartyIndustryEnum.Retail: + return 'Perakende' + case BusinessPartyIndustryEnum.Manufacturing: + return 'İmalat' + case BusinessPartyIndustryEnum.Education: + return 'Eğitim' + case BusinessPartyIndustryEnum.Construction: + return 'İnşaat' + case BusinessPartyIndustryEnum.Hospitality: + return 'Konaklama' + case BusinessPartyIndustryEnum.Transportation: + return 'Ulaşım' + case BusinessPartyIndustryEnum.RealEstate: + return 'Emlak' + case BusinessPartyIndustryEnum.Other: + return 'Diğer' + case 'AUTOMOTIVE': // Optionlarda var, enumda yok + return 'Otomotiv' + default: + return 'Bilinmeyen' + } +} diff --git a/ui/src/views/accounting/components/BankAccountForm.tsx b/ui/src/views/accounting/components/BankAccountForm.tsx index ac765e82..d4a4d9a9 100644 --- a/ui/src/views/accounting/components/BankAccountForm.tsx +++ b/ui/src/views/accounting/components/BankAccountForm.tsx @@ -1,159 +1,151 @@ -import React, { useState, useEffect } from "react"; -import { FaSave, FaTimes, FaBuilding } from "react-icons/fa"; -import { BankAccountTypeEnum } from "../../../types/fi"; -import { BankAccount } from "../../../types/common"; +import React, { useState, useEffect } from 'react' +import { FaSave, FaTimes, FaBuilding } from 'react-icons/fa' +import { BankAccountTypeEnum } from '../../../types/fi' +import { BankAccount } from '../../../types/common' +import { getBankAccountTypeText } from '@/utils/erp' +import { mockCurrencies } from '@/mocks/mockCurrencies' interface BankAccountFormProps { - account?: BankAccount; - isOpen: boolean; - onClose: () => void; - onSave: (account: Partial) => void; + account?: BankAccount + isOpen: boolean + onClose: () => void + onSave: (account: Partial) => void } -const BankAccountForm: React.FC = ({ - account, - isOpen, - onClose, - onSave, -}) => { +const BankAccountForm: React.FC = ({ account, isOpen, onClose, onSave }) => { const [formData, setFormData] = useState>({ - accountCode: "", - bankName: "", - branchName: "", - accountNumber: "", - iban: "", + accountCode: '', + bankName: '', + branchName: '', + accountNumber: '', + iban: '', accountType: BankAccountTypeEnum.Current, - currency: "TRY", + currency: 'TRY', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, - contactPerson: "", - phone: "", + contactPerson: '', + phone: '', isActive: true, - }); + }) - const [errors, setErrors] = useState>({}); + const [errors, setErrors] = useState>({}) useEffect(() => { if (account) { - setFormData(account); + setFormData(account) } else { setFormData({ - accountCode: "", - bankName: "", - branchName: "", - accountNumber: "", - iban: "", + accountCode: '', + bankName: '', + branchName: '', + accountNumber: '', + iban: '', accountType: BankAccountTypeEnum.Current, - currency: "TRY", + currency: 'TRY', balance: 0, overdraftLimit: 0, dailyTransferLimit: 0, - contactPerson: "", - phone: "", + contactPerson: '', + phone: '', isActive: true, - }); + }) } - setErrors({}); - }, [account, isOpen]); + setErrors({}) + }, [account, isOpen]) const validateForm = () => { - const newErrors: Record = {}; + const newErrors: Record = {} if (!formData.accountCode?.trim()) { - newErrors.accountCode = "Hesap kodu gereklidir"; + newErrors.accountCode = 'Hesap kodu gereklidir' } if (!formData.bankName?.trim()) { - newErrors.bankName = "Banka adı gereklidir"; + newErrors.bankName = 'Banka adı gereklidir' } if (!formData.branchName?.trim()) { - newErrors.branchName = "Şube adı gereklidir"; + newErrors.branchName = 'Şube adı gereklidir' } if (!formData.accountNumber?.trim()) { - newErrors.accountNumber = "Hesap numarası gereklidir"; + newErrors.accountNumber = 'Hesap numarası gereklidir' } if (!formData.iban?.trim()) { - newErrors.iban = "IBAN gereklidir"; + newErrors.iban = 'IBAN gereklidir' } else if (formData.iban.length < 26) { - newErrors.iban = "IBAN geçerli formatta olmalıdır"; + newErrors.iban = 'IBAN geçerli formatta olmalıdır' } if (!formData.currency?.trim()) { - newErrors.currency = "Para birimi gereklidir"; + newErrors.currency = 'Para birimi gereklidir' } - if ( - formData.dailyTransferLimit !== undefined && - formData.dailyTransferLimit < 0 - ) { - newErrors.dailyTransferLimit = "Günlük transfer limiti negatif olamaz"; + if (formData.dailyTransferLimit !== undefined && formData.dailyTransferLimit < 0) { + newErrors.dailyTransferLimit = 'Günlük transfer limiti negatif olamaz' } if (formData.overdraftLimit !== undefined && formData.overdraftLimit < 0) { - newErrors.overdraftLimit = "Kredi limiti negatif olamaz"; + newErrors.overdraftLimit = 'Kredi limiti negatif olamaz' } - setErrors(newErrors); - return Object.keys(newErrors).length === 0; - }; + setErrors(newErrors) + return Object.keys(newErrors).length === 0 + } const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); + e.preventDefault() if (validateForm()) { - onSave(formData); + onSave(formData) } - }; + } const handleInputChange = ( - e: React.ChangeEvent< - HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement - > + e: React.ChangeEvent, ) => { - const { name, value, type } = e.target; - const parsedValue = type === "number" ? parseFloat(value) || 0 : value; + const { name, value, type } = e.target + const parsedValue = type === 'number' ? parseFloat(value) || 0 : value setFormData((prev) => ({ ...prev, [name]: parsedValue, - })); + })) // Clear error when user starts typing if (errors[name]) { setErrors((prev) => ({ ...prev, - [name]: "", - })); + [name]: '', + })) } - }; + } const handleCheckboxChange = (e: React.ChangeEvent) => { - const { name, checked } = e.target; + const { name, checked } = e.target setFormData((prev) => ({ ...prev, [name]: checked, - })); - }; + })) + } const handleIbanChange = (e: React.ChangeEvent) => { - let value = e.target.value; + let value = e.target.value // Sadece harf ve rakam kalsın - value = value.replace(/[^A-Za-z0-9]/g, ""); + value = value.replace(/[^A-Za-z0-9]/g, '') // 4 karakterde bir boşluk ekle - value = value.replace(/(.{4})/g, "$1 ").trim(); + value = value.replace(/(.{4})/g, '$1 ').trim() setFormData({ ...formData, iban: value, - }); - }; + }) + } - if (!isOpen) return null; + if (!isOpen) return null return (
@@ -162,7 +154,7 @@ const BankAccountForm: React.FC = ({

- {account ? "Banka Hesabını Düzenle" : "Yeni Banka Hesabı"} + {account ? 'Banka Hesabını Düzenle' : 'Yeni Banka Hesabı'}

@@ -295,38 +273,32 @@ const BankAccountForm: React.FC = ({ {errors.accountNumber && ( -

- {errors.accountNumber} -

+

{errors.accountNumber}

)}
- + - {errors.iban && ( -

{errors.iban}

- )} + {errors.iban &&

{errors.iban}

}
@@ -344,24 +316,20 @@ const BankAccountForm: React.FC = ({
- + {errors.overdraftLimit && ( -

- {errors.overdraftLimit} -

+

{errors.overdraftLimit}

)}
@@ -375,17 +343,13 @@ const BankAccountForm: React.FC = ({ value={formData.dailyTransferLimit || 0} onChange={handleInputChange} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.dailyTransferLimit - ? "border-red-500" - : "border-gray-300" + errors.dailyTransferLimit ? 'border-red-500' : 'border-gray-300' }`} step="0.01" min="0" /> {errors.dailyTransferLimit && ( -

- {errors.dailyTransferLimit} -

+

{errors.dailyTransferLimit}

)} @@ -404,7 +368,7 @@ const BankAccountForm: React.FC = ({ = ({
- + = ({ onChange={handleCheckboxChange} className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" /> - +
@@ -455,13 +415,13 @@ const BankAccountForm: React.FC = ({ className="flex items-center gap-2 px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors" > - {account ? "Güncelle" : "Kaydet"} + {account ? 'Güncelle' : 'Kaydet'} - ); -}; + ) +} -export default BankAccountForm; +export default BankAccountForm diff --git a/ui/src/views/accounting/components/CheckForm.tsx b/ui/src/views/accounting/components/CheckForm.tsx index a6c9c85a..f96c2d94 100644 --- a/ui/src/views/accounting/components/CheckForm.tsx +++ b/ui/src/views/accounting/components/CheckForm.tsx @@ -1,20 +1,15 @@ -import React, { useState, useEffect } from "react"; -import { FaCreditCard, FaSave, FaTimes } from "react-icons/fa"; -import { - FiCheck, - CheckTypeEnum, - CheckStatusEnum, - FiCurrentAccount, -} from "../../../types/fi"; +import React, { useState, useEffect } from 'react' +import { FaCreditCard, FaSave, FaTimes } from 'react-icons/fa' +import { FiCheck, TypeEnum, CheckStatusEnum, FiCurrentAccount } from '../../../types/fi' +import { getCheckStatusText, getTypeText } from '@/utils/erp' +import { mockCurrencies } from '@/mocks/mockCurrencies' interface CheckFormProps { - check?: FiCheck; - currentAccounts: FiCurrentAccount[]; - onSave: ( - check: Omit - ) => void; - onCancel: () => void; - isOpen: boolean; + check?: FiCheck + currentAccounts: FiCurrentAccount[] + onSave: (check: Omit) => void + onCancel: () => void + isOpen: boolean } const CheckForm: React.FC = ({ @@ -25,23 +20,23 @@ const CheckForm: React.FC = ({ isOpen, }) => { const [formData, setFormData] = useState({ - checkNumber: "", - bankName: "", - branchName: "", - accountNumber: "", - drawerName: "", - payeeName: "", - currentAccountId: "", - issueDate: new Date().toISOString().split("T")[0], - dueDate: new Date().toISOString().split("T")[0], + checkNumber: '', + bankName: '', + branchName: '', + accountNumber: '', + drawerName: '', + payeeName: '', + currentAccountId: '', + issueDate: new Date().toISOString().split('T')[0], + dueDate: new Date().toISOString().split('T')[0], amount: 0, - currency: "TRY", + currency: 'TRY', status: CheckStatusEnum.InHand, - type: CheckTypeEnum.Received, - notes: "", - }); + type: TypeEnum.Received, + notes: '', + }) - const [errors, setErrors] = useState>({}); + const [errors, setErrors] = useState>({}) useEffect(() => { if (check) { @@ -52,64 +47,64 @@ const CheckForm: React.FC = ({ accountNumber: check.accountNumber, drawerName: check.drawerName, payeeName: check.payeeName, - currentAccountId: check.currentAccountId || "", - issueDate: new Date(check.issueDate).toISOString().split("T")[0], - dueDate: new Date(check.dueDate).toISOString().split("T")[0], + currentAccountId: check.currentAccountId || '', + issueDate: new Date(check.issueDate).toISOString().split('T')[0], + dueDate: new Date(check.dueDate).toISOString().split('T')[0], amount: check.amount, currency: check.currency, status: check.status, type: check.type, - notes: check.notes || "", - }); + notes: check.notes || '', + }) } else { setFormData({ - checkNumber: "", - bankName: "", - branchName: "", - accountNumber: "", - drawerName: "", - payeeName: "", - currentAccountId: "", - issueDate: new Date().toISOString().split("T")[0], - dueDate: new Date().toISOString().split("T")[0], + checkNumber: '', + bankName: '', + branchName: '', + accountNumber: '', + drawerName: '', + payeeName: '', + currentAccountId: '', + issueDate: new Date().toISOString().split('T')[0], + dueDate: new Date().toISOString().split('T')[0], amount: 0, - currency: "TRY", + currency: 'TRY', status: CheckStatusEnum.InHand, - type: CheckTypeEnum.Received, - notes: "", - }); + type: TypeEnum.Received, + notes: '', + }) } - setErrors({}); - }, [check, isOpen]); + setErrors({}) + }, [check, isOpen]) const validateForm = () => { - const newErrors: Record = {}; + const newErrors: Record = {} if (!formData.checkNumber.trim()) { - newErrors.checkNumber = "Çek numarası gereklidir"; + newErrors.checkNumber = 'Çek numarası gereklidir' } if (!formData.bankName.trim()) { - newErrors.bankName = "Banka adı gereklidir"; + newErrors.bankName = 'Banka adı gereklidir' } if (!formData.drawerName.trim()) { - newErrors.drawerName = "Keşideci adı gereklidir"; + newErrors.drawerName = 'Keşideci adı gereklidir' } if (!formData.payeeName.trim()) { - newErrors.payeeName = "Lehtar adı gereklidir"; + newErrors.payeeName = 'Lehtar adı gereklidir' } if (formData.amount <= 0) { - newErrors.amount = "Tutar 0'dan büyük olmalıdır"; + newErrors.amount = "Tutar 0'dan büyük olmalıdır" } if (new Date(formData.dueDate) < new Date(formData.issueDate)) { - newErrors.dueDate = "Vade tarihi düzenleme tarihinden sonra olmalıdır"; + newErrors.dueDate = 'Vade tarihi düzenleme tarihinden sonra olmalıdır' } - setErrors(newErrors); - return Object.keys(newErrors).length === 0; - }; + setErrors(newErrors) + return Object.keys(newErrors).length === 0 + } const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); + e.preventDefault() if (validateForm()) { const checkData = { ...formData, @@ -118,22 +113,22 @@ const CheckForm: React.FC = ({ currentAccount: formData.currentAccountId ? currentAccounts.find((acc) => acc.id === formData.currentAccountId) : undefined, - }; - onSave(checkData); + } + onSave(checkData) } - }; + } const handleInputChange = ( field: string, - value: string | number | CheckTypeEnum | CheckStatusEnum + value: string | number | TypeEnum | CheckStatusEnum, ) => { - setFormData((prev) => ({ ...prev, [field]: value })); + setFormData((prev) => ({ ...prev, [field]: value })) if (errors[field]) { - setErrors((prev) => ({ ...prev, [field]: "" })); + setErrors((prev) => ({ ...prev, [field]: '' })) } - }; + } - if (!isOpen) return null; + if (!isOpen) return null return (
@@ -142,13 +137,10 @@ const CheckForm: React.FC = ({

- {check ? "Çek Düzenle" : "Yeni Çek"} + {check ? 'Çek Düzenle' : 'Yeni Çek'}

-
@@ -157,102 +149,76 @@ const CheckForm: React.FC = ({ {/* Çek Bilgileri */}
- + - handleInputChange("checkNumber", e.target.value) - } + onChange={(e) => handleInputChange('checkNumber', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.checkNumber ? "border-red-500" : "border-gray-300" + errors.checkNumber ? 'border-red-500' : 'border-gray-300' }`} placeholder="Çek numarasını giriniz" /> {errors.checkNumber && ( -

- {errors.checkNumber} -

+

{errors.checkNumber}

)}
- +
- +
{/* Banka Bilgileri */}
-

- Banka Bilgileri -

+

Banka Bilgileri

- + - handleInputChange("bankName", e.target.value) - } + onChange={(e) => handleInputChange('bankName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.bankName ? "border-red-500" : "border-gray-300" + errors.bankName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Banka adını giriniz" /> - {errors.bankName && ( -

{errors.bankName}

- )} + {errors.bankName &&

{errors.bankName}

}
- + - handleInputChange("branchName", e.target.value) - } + onChange={(e) => handleInputChange('branchName', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Şube adını giriniz" /> @@ -265,9 +231,7 @@ const CheckForm: React.FC = ({ - handleInputChange("accountNumber", e.target.value) - } + onChange={(e) => handleInputChange('accountNumber', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Hesap numarasını giriniz" /> @@ -277,63 +241,45 @@ const CheckForm: React.FC = ({ {/* Taraf Bilgileri */}
-

- Taraf Bilgileri -

+

Taraf Bilgileri

- + - handleInputChange("drawerName", e.target.value) - } + onChange={(e) => handleInputChange('drawerName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.drawerName ? "border-red-500" : "border-gray-300" + errors.drawerName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Keşideci adını giriniz" /> {errors.drawerName && ( -

- {errors.drawerName} -

+

{errors.drawerName}

)}
- + - handleInputChange("payeeName", e.target.value) - } + onChange={(e) => handleInputChange('payeeName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.payeeName ? "border-red-500" : "border-gray-300" + errors.payeeName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Lehtar adını giriniz" /> {errors.payeeName && ( -

- {errors.payeeName} -

+

{errors.payeeName}

)}
- + - handleInputChange("amount", parseFloat(e.target.value) || 0) - } + onChange={(e) => handleInputChange('amount', parseFloat(e.target.value) || 0)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.amount ? "border-red-500" : "border-gray-300" + errors.amount ? 'border-red-500' : 'border-gray-300' }`} placeholder="0.00" /> - {errors.amount && ( -

{errors.amount}

- )} + {errors.amount &&

{errors.amount}

}
- +
@@ -393,37 +333,31 @@ const CheckForm: React.FC = ({ handleInputChange("issueDate", e.target.value)} + onChange={(e) => handleInputChange('issueDate', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" />
- + handleInputChange("dueDate", e.target.value)} + onChange={(e) => handleInputChange('dueDate', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.dueDate ? "border-red-500" : "border-gray-300" + errors.dueDate ? 'border-red-500' : 'border-gray-300' }`} /> - {errors.dueDate && ( -

{errors.dueDate}

- )} + {errors.dueDate &&

{errors.dueDate}

}
{/* Notlar */}
- +