Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-02-20 08:49:31 +03:00
parent 1ced1b1649
commit f6b9793c41
11 changed files with 292 additions and 58 deletions

View File

@@ -439,6 +439,8 @@ func InitRoutes(pgDB *sql.DB, mssql *sql.DB, ml *mailer.GraphMailer) *mux.Router
{"/api/order/update", "POST", "update", http.HandlerFunc(routes.UpdateOrderHandler)}, {"/api/order/update", "POST", "update", http.HandlerFunc(routes.UpdateOrderHandler)},
{"/api/order/get/{id}", "GET", "view", routes.GetOrderByIDHandler(mssql)}, {"/api/order/get/{id}", "GET", "view", routes.GetOrderByIDHandler(mssql)},
{"/api/orders/list", "GET", "view", routes.OrderListRoute(mssql)}, {"/api/orders/list", "GET", "view", routes.OrderListRoute(mssql)},
{"/api/orders/production-list", "GET", "update", routes.OrderProductionListRoute(mssql)},
{"/api/orders/production-items/{id}", "GET", "view", routes.OrderProductionItemsRoute(mssql)},
{"/api/orders/close-ready", "GET", "update", routes.OrderCloseReadyListRoute(mssql)}, {"/api/orders/close-ready", "GET", "update", routes.OrderCloseReadyListRoute(mssql)},
{"/api/orders/bulk-close", "POST", "update", routes.OrderBulkCloseRoute(mssql)}, {"/api/orders/bulk-close", "POST", "update", routes.OrderBulkCloseRoute(mssql)},
{"/api/orders/export", "GET", "export", routes.OrderListExcelRoute(mssql)}, {"/api/orders/export", "GET", "export", routes.OrderListExcelRoute(mssql)},

View File

@@ -21,6 +21,7 @@ type OrderList struct {
// Sipariş Durumu // Sipariş Durumu
CreditableConfirmedDate string `json:"CreditableConfirmedDate"` CreditableConfirmedDate string `json:"CreditableConfirmedDate"`
IsCreditableConfirmed bool `json:"IsCreditableConfirmed"` IsCreditableConfirmed bool `json:"IsCreditableConfirmed"`
HasUretimUrunu bool `json:"HasUretimUrunu"`
// 💱 Para Birimi // 💱 Para Birimi
DocCurrencyCode string `json:"DocCurrencyCode"` DocCurrencyCode string `json:"DocCurrencyCode"`

View File

@@ -1114,8 +1114,9 @@ func UpdateOrder(header models.OrderHeader, lines []models.OrderDetail, user *mo
DELETE FROM BAGGI_V3.dbo.trOrderLine DELETE FROM BAGGI_V3.dbo.trOrderLine
WHERE OrderHeaderID=@p1 AND OrderLineID=@p2 AND ISNULL(IsClosed,0)=0 WHERE OrderHeaderID=@p1 AND OrderLineID=@p2 AND ISNULL(IsClosed,0)=0
`, header.OrderHeaderID, lineID); err != nil { `, header.OrderHeaderID, lineID); err != nil {
fmt.Printf("[ORDER_UPDATE] hard delete failed, trying soft-close line_id=%s err=%v\n", lineID, err) fmt.Printf("[ORDER_UPDATE] hard delete failed, trying qty-zero soft-close line_id=%s err=%v\n", lineID, err)
// IsClosed computed olabilir; sadece miktarları sıfırla.
if _, err2 := tx.Exec(` if _, err2 := tx.Exec(`
UPDATE BAGGI_V3.dbo.trOrderLine UPDATE BAGGI_V3.dbo.trOrderLine
SET SET
@@ -1123,12 +1124,11 @@ SET
Qty2 = 0, Qty2 = 0,
CancelQty1 = 0, CancelQty1 = 0,
CancelQty2 = 0, CancelQty2 = 0,
IsClosed = 1,
LastUpdatedUserName = @p1, LastUpdatedUserName = @p1,
LastUpdatedDate = @p2 LastUpdatedDate = @p2
WHERE OrderHeaderID=@p3 AND OrderLineID=@p4 AND ISNULL(IsClosed,0)=0 WHERE OrderHeaderID=@p3 AND OrderLineID=@p4 AND ISNULL(IsClosed,0)=0
`, v3User, now, header.OrderHeaderID, lineID); err2 != nil { `, v3User, now, header.OrderHeaderID, lineID); err2 != nil {
return fmt.Errorf("line delete failed line_id=%s: %v; soft-close failed: %w", lineID, err, err2) return fmt.Errorf("line delete failed line_id=%s: %v; qty-zero soft-close failed: %w", lineID, err, err2)
} }
} }

View File

@@ -112,6 +112,16 @@ SELECT
END AS PackedRatePct, END AS PackedRatePct,
ISNULL(h.IsCreditableConfirmed,0) AS IsCreditableConfirmed, ISNULL(h.IsCreditableConfirmed,0) AS IsCreditableConfirmed,
CASE
WHEN EXISTS (
SELECT 1
FROM dbo.trOrderLine l2
WHERE l2.OrderHeaderID = h.OrderHeaderID
AND ISNULL(l2.ItemCode,'') LIKE 'U%%'
)
THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END AS HasUretimUrunu,
ISNULL(h.Description,'') AS Description, ISNULL(h.Description,'') AS Description,
usd.Rate AS ExchangeRateUSD usd.Rate AS ExchangeRateUSD

View File

@@ -58,7 +58,7 @@ func OrderListRoute(mssql *sql.DB) http.Handler {
count := 0 count := 0
// ================================================== // ==================================================
// 🧠 SCAN — SQL SELECT ile BİRE BİR (17 kolon) // 🧠 SCAN — SQL SELECT ile BİRE BİR (18 kolon)
// ================================================== // ==================================================
for rows.Next() { for rows.Next() {
@@ -85,9 +85,10 @@ func OrderListRoute(mssql *sql.DB) http.Handler {
&o.PackedRatePct, // 14 &o.PackedRatePct, // 14
&o.IsCreditableConfirmed, // 15 &o.IsCreditableConfirmed, // 15
&o.Description, // 16 &o.HasUretimUrunu, // 16
&o.Description, // 17
&o.ExchangeRateUSD, // 17 &o.ExchangeRateUSD, // 18
) )
if err != nil { if err != nil {

View File

@@ -21,7 +21,7 @@
} }
.q-page { .q-page {
margin-top: 5px; margin-top: 0;
} }
@media (max-width: 768px) { @media (max-width: 768px) {
@@ -288,6 +288,11 @@ body {
overflow-y: auto; overflow-y: auto;
overflow-x: visible; overflow-x: visible;
background: #fff; background: #fff;
padding-top: 0 !important;
}
/* Quasar header offsetunu sadece order sayfasında sıfırla */
.q-page-container .order-page {
margin-top: calc(-1 * var(--header-h) - 58px);
} }
.body--drawer-left-open .q-page-container { .body--drawer-left-open .q-page-container {
@@ -344,16 +349,33 @@ body {
.filter-bar { .filter-bar {
background: #fafafa; background: #fafafa;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
padding: 12px 24px; padding: 8px 12px;
margin-top:0 !important; margin-top:0 !important;
} }
.filter-bar .q-field__label {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.1;
font-size: 12px;
}
.filter-bar .q-field__control,
.filter-bar .q-field__native,
.filter-bar .q-field__marginal {
min-height: 36px;
}
.filter-bar-desc {
padding: 0 12px 6px;
background: #fafafa;
border-bottom: 1px solid #ddd;
}
/* 🔹 Save toolbar */ /* 🔹 Save toolbar */
.save-toolbar { .save-toolbar {
background: var(--baggi-gold-pale); background: var(--baggi-gold-pale);
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
padding: 10px 16px; padding: 6px 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -454,8 +476,9 @@ body {
.order-grid-header .total-row { .order-grid-header .total-row {
display: flex; display: flex;
align-items: stretch; align-items: stretch;
justify-content: space-between; justify-content: flex-start;
background: #fff59d; background: #fff59d;
grid-column: 7 / -1;
} }
.order-grid-header .total-cell { .order-grid-header .total-cell {
width: var(--col-adet); width: var(--col-adet);
@@ -469,6 +492,9 @@ body {
font-weight: 700; font-weight: 700;
font-size: 12px; font-size: 12px;
} }
.order-grid-header .total-cell:last-child {
width: var(--col-termin);
}
/* =========================================================== /* ===========================================================
6⃣ SUB-HEADER (ÜRÜN GRUBU BAR) — TAM HİZALANMIŞ 6⃣ SUB-HEADER (ÜRÜN GRUBU BAR) — TAM HİZALANMIŞ
=========================================================== */ =========================================================== */
@@ -614,6 +640,108 @@ body {
padding-top: var(--sub-header-h); padding-top: var(--sub-header-h);
z-index: 100; z-index: 100;
} }
.order-scroll-y.compact-grid-header {
--grid-header-h: var(--beden-h);
}
.order-scroll-y.compact-grid-header .order-grid-header .col-fixed {
writing-mode: horizontal-tb;
transform: none;
height: var(--grid-header-h);
font-size: 10px;
line-height: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 4px;
}
.order-scroll-y.compact-grid-header .order-grid-header .total-cell {
writing-mode: horizontal-tb;
transform: none;
height: var(--grid-header-h);
font-size: 10px;
line-height: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 4px;
}
.order-grid-header.compact {
height: var(--beden-h);
}
.order-grid-header.compact .beden-block {
height: var(--beden-h);
}
.order-grid-header.compact .col-fixed,
.order-grid-header.compact .total-cell {
writing-mode: horizontal-tb;
transform: none;
height: var(--beden-h);
font-size: 10px;
line-height: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 4px;
}
.order-grid-header.compact .total-cell {
width: var(--col-adet);
}
.order-grid-header.compact .total-cell:nth-child(2) {
width: var(--col-fiyat);
}
.order-grid-header.compact .total-cell:nth-child(3) {
width: var(--col-pb);
}
.order-grid-header.compact .total-cell:nth-child(4) {
width: var(--col-tutar);
}
.order-grid-header.compact .total-cell:nth-child(5) {
width: var(--col-termin);
}
.order-grid-header.compact .grp-row {
height: var(--beden-h);
}
.order-grid-header.compact .grp-row:not(:first-child) {
display: none;
}
.order-grid-header.compact .grp-title {
display: none;
}
.order-grid-header.compact .grp-row:first-child .grp-title {
display: block;
font-size: 10px;
line-height: 1;
white-space: nowrap;
padding-right: 4px;
}
.order-grid-header.compact .grp-body {
height: var(--beden-h);
align-items: center;
}
.order-grid-header.compact .grp-cell.hdr {
height: var(--beden-h);
font-size: 10px;
}
.order-scroll-y.compact-grid-header .order-grid-header .grp-title {
display: none;
}
.order-scroll-y.compact-grid-header .order-grid-header .grp-row {
align-items: center;
height: var(--beden-h);
}
.order-scroll-y.compact-grid-header .order-grid-header .grp-body {
grid-template-rows: var(--beden-h);
align-items: center;
}
.order-scroll-y.compact-grid-header .order-grid-header .grp-cell.hdr {
height: var(--beden-h);
}
.order-scroll-y.compact-grid-header .order-grid-header .total-row {
align-items: center;
}
.order-scroll-y.compact-grid-header .order-grid-body {
padding-top: var(--sub-header-h);
}
.summary-row { .summary-row {
display: grid; display: grid;
@@ -1086,7 +1214,7 @@ body {
z-index: 600; z-index: 600;
background: #fff; background: #fff;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
padding: 10px 16px; padding: 6px 10px;
box-shadow: 0 1px 2px rgba(0,0,0,0.06); box-shadow: 0 1px 2px rgba(0,0,0,0.06);
min-height: var(--ol-filter-h); min-height: var(--ol-filter-h);
display: flex; display: flex;
@@ -1309,7 +1437,7 @@ body {
z-index: 620; z-index: 620;
background: #fff; background: #fff;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
padding: 10px 16px; padding: 6px 10px;
box-shadow: 0 1px 2px rgba(0,0,0,0.06); box-shadow: 0 1px 2px rgba(0,0,0,0.06);
} }
@@ -1530,3 +1658,21 @@ body {
gap: 2px; gap: 2px;
} }
/* ===========================================================
ORDER ENTRY POPUP EDITOR
=========================================================== */
.order-editor-card {
width: 98vw;
max-width: 1900px;
}
.order-editor-card .editor {
max-height: 76vh;
overflow: auto;
}
.order-editor-dialog .q-dialog__inner--minimized {
max-width: 98vw;
}
.order-editor-dialog .q-dialog__inner > div {
width: 98vw;
max-width: 1900px;
}

View File

@@ -209,6 +209,11 @@ const menuItems = [
to: '/app/order-gateway', to: '/app/order-gateway',
permission: 'order:view' permission: 'order:view'
}, },
{
label: 'Üretime Verilen Siparişleri Güncelle',
to: '/app/orderproductionupdate',
permission: 'order:update'
},
{ {
label: 'Tamamlanan Siparişleri Toplu Kapatma', label: 'Tamamlanan Siparişleri Toplu Kapatma',
to: '/app/order-bulk-close', to: '/app/order-bulk-close',

View File

@@ -1,4 +1,4 @@
<template> <template>
<!-- =========================================================== <!-- ===========================================================
🧾 ORDER ENTRY PAGE (BSSApp) 🧾 ORDER ENTRY PAGE (BSSApp)
v23 Sticky-stack + Drawer uyumlu yapı v23 Sticky-stack + Drawer uyumlu yapı
@@ -8,14 +8,15 @@
class="order-page" class="order-page"
> >
<!-- 🔄 SAYFA LOADERI --> <!-- 🔄 SAYFA LOADERI -->
<q-inner-loading :showing="loadingHeader || loadingCari || loadingModels" color="primary"> <q-inner-loading :showing="isPageBlocking" color="primary">
<q-spinner size="50px" /> <q-spinner size="50px" />
</q-inner-loading> </q-inner-loading>
<!-- ======================================================= <template v-if="!isPageBlocking">
🔹 STICKY STACK (Filter + Save + Header) <!-- =======================================================
======================================================== --> 🔹 STICKY STACK (Filter + Save + Header)
<div class="sticky-stack"> ======================================================== -->
<div class="sticky-stack">
<!-- 🔸 1. Satır: Filtre Bar --> <!-- 🔸 1. Satır: Filtre Bar -->
<div class="filter-bar row q-col-gutter-md q-mb-sm"> <div class="filter-bar row q-col-gutter-md q-mb-sm">
@@ -168,8 +169,22 @@
</template> </template>
</div> </div>
</div>
<!-- 📝 Sipariş Genel Açıklaması (filter bar altında) -->
<div class="filter-bar-desc q-mt-sm">
<q-input
v-model="form.Description"
type="textarea"
label="Sipariş Genel ıklaması"
filled
dense
autogrow
maxlength="1500"
counter
placeholder="Siparişe genel ıklama giriniz (örn. teslimat, üretim notu, müşteri isteği...)"
:disable="isClosedRow"
:readonly="isViewOnly"
/>
</div> </div>
<!-- 🔹 Cari Bilgi Barı --> <!-- 🔹 Cari Bilgi Barı -->
<q-slide-transition> <q-slide-transition>
@@ -212,6 +227,14 @@
<div class="save-toolbar"> <div class="save-toolbar">
<div class="text-subtitle2 text-weight-bold">Sipariş Formu</div> <div class="text-subtitle2 text-weight-bold">Sipariş Formu</div>
<div> <div>
<q-btn
flat
color="grey-7"
class="q-ml-sm"
:label="compactGridHeader ? 'BAŞLIK GENİŞLET' : 'BAŞLIK DARALT'"
:icon="compactGridHeader ? 'unfold_more' : 'unfold_less'"
@click="compactGridHeader = !compactGridHeader"
/>
<q-btn <q-btn
v-if="isViewOnly && canExportOrder" v-if="isViewOnly && canExportOrder"
label="🖨 SİPARİŞİ YAZDIR" label="🖨 SİPARİŞİ YAZDIR"
@@ -222,7 +245,16 @@
/> />
<q-btn <q-btn
v-else-if="canSubmitOrder" v-if="canMutateRows"
label="SATIR EKLE"
color="secondary"
icon="add"
class="q-ml-sm"
@click="openNewRowEditor"
:disable="isClosedRow || isViewOnly || !canMutateRows"
/>
<q-btn
v-if="canSubmitOrder"
:label="isEditMode ? 'TÜMÜNÜ GÜNCELLE' : 'TÜMÜNÜ KAYDET'" :label="isEditMode ? 'TÜMÜNÜ GÜNCELLE' : 'TÜMÜNÜ KAYDET'"
color="primary" color="primary"
icon="save" icon="save"
@@ -231,24 +263,15 @@
:disable="!canSubmitOrder" :disable="!canSubmitOrder"
@click="confirmAndSubmit" @click="confirmAndSubmit"
/> />
<q-btn
label="YENİ SİPARİŞ"
v-if="canWriteOrder"
color="secondary"
icon="add_circle"
class="q-ml-sm"
@click="onResetEditorClick"
:disable="isClosedRow || !canWriteOrder"
/>
</div> </div>
</div> </div>
<!-- 🔹 Grid Header --> <!-- 🔹 Grid Header -->
<div class="order-grid-header"> <div class="order-grid-header" :class="{ compact: compactGridHeader }">
<div class="col-fixed model">MODEL</div> <div class="col-fixed model">MODEL</div>
<div class="col-fixed renk">RENK</div> <div class="col-fixed renk">RENK</div>
<div class="col-fixed ana">ÜRÜN ANA<br />GRUBU</div> <div class="col-fixed ana">ÜRÜN ANA GRUBU</div>
<div class="col-fixed alt">ÜRÜN ALT<br />GRUBU</div> <div class="col-fixed alt">ÜRÜN ALT GRUBU</div>
<div class="col-fixed aciklama-col">AÇIKLAMA</div> <div class="col-fixed aciklama-col">AÇIKLAMA</div>
<div class="beden-block"> <div class="beden-block">
@@ -289,7 +312,7 @@
<!-- ======================================================= <!-- =======================================================
🔹 GRID BODY (Final Stabil) + EDITOR aynı scrollda 🔹 GRID BODY (Final Stabil) + EDITOR aynı scrollda
======================================================== --> ======================================================== -->
<div class="order-scroll-y"> <!-- ✅ YENİ: Grid + Editor ortak dikey scroll --> <div class="order-scroll-y" :class="{ 'compact-grid-header': compactGridHeader }"> <!-- ✅ YENİ: Grid + Editor ortak dikey scroll -->
<div class="order-grid-body"> <div class="order-grid-body">
<template v-for="grp in groupedRows" :key="grp.name"> <template v-for="grp in groupedRows" :key="grp.name">
<div :class="['summary-group', grp.open ? 'open' : 'closed']"> <div :class="['summary-group', grp.open ? 'open' : 'closed']">
@@ -424,7 +447,24 @@
<!-- ======================================================= <!-- =======================================================
🔹 SATIR DÜZENLEYİCİ FORM (EDITOR) 🔹 SATIR DÜZENLEYİCİ FORM (EDITOR)
======================================================== --> ======================================================== -->
<div class="editor q-mt-lg q-pa-sm"> <q-dialog
v-model="showEditor"
class="order-editor-dialog"
:maximized="$q.screen.lt.md"
full-width
transition-show="jump-down"
transition-hide="jump-up"
persistent
>
<q-card class="order-editor-card">
<q-card-section class="row items-center justify-between">
<div class="text-subtitle1 text-weight-bold">
{{ isEditing ? 'Satır Düzenle' : 'Yeni Satır' }}
</div>
<q-btn flat round icon="close" @click="showEditor = false" />
</q-card-section>
<q-separator />
<q-card-section class="editor q-pa-sm">
<!-- 🔸 1. Satır: Model ve Ürün Bilgileri --> <!-- 🔸 1. Satır: Model ve Ürün Bilgileri -->
<div class="row q-col-gutter-sm q-mb-sm"> <div class="row q-col-gutter-sm q-mb-sm">
@@ -717,28 +757,11 @@
butonuna basarak işlemleri kaydedebilirsiniz. butonuna basarak işlemleri kaydedebilirsiniz.
</div> </div>
<!-- ======================================================= </q-card-section>
🔹 SİPARİŞ GENEL AÇIKLAMASI </q-card>
======================================================== --> </q-dialog>
<div class="row q-mt-md"> </div> <!-- ✅ order-scroll-y -->
<div class="col-12"> </template>
<q-input
v-model="form.Description"
type="textarea"
label="Sipariş Genel ıklaması"
filled
dense
autogrow
maxlength="1500"
counter
placeholder="Siparişe genel ıklama giriniz (örn. teslimat, üretim notu, müşteri isteği...)"
:disable="isClosedRow"
/>
</div>
</div>
</div> <!-- editor -->
</div> <!-- ✅ order-scroll-y -->
</q-page> </q-page>
<q-page <q-page
@@ -777,6 +800,8 @@ const canExportOrder = canExport('order')
const formatDate = formatDateDisplay const formatDate = formatDateDisplay
const showEditor = ref(false)
const compactGridHeader = ref(false)
@@ -1094,6 +1119,16 @@ const seriMultiplier = ref(1)
const loadingHeader = ref(true) const loadingHeader = ref(true)
const loadingCari = ref(true) const loadingCari = ref(true)
const loadingModels = ref(true) const loadingModels = ref(true)
const isPageBlocking = computed(() => {
if (!isEditMode.value) return false
const headerReady = !!orderStore.header
return (
loadingHeader.value ||
loadingCari.value ||
loadingModels.value ||
!headerReady
)
})
/* =========================================================== /* ===========================================================
🔹 CARİ INFO STATE 🔹 CARİ INFO STATE
=========================================================== */ =========================================================== */
@@ -2346,11 +2381,22 @@ const editRow = async (row) => {
notify: true, notify: true,
loadSizes: true loadSizes: true
}) })
showEditor.value = true
} catch (err) { } catch (err) {
console.error('❌ editRow hata:', err) console.error('❌ editRow hata:', err)
} }
} }
const openNewRowEditor = async () => {
if (!hasRowMutationPermission()) {
notifyNoPermission('Siparis satiri ekleme/guncelleme yetkiniz yok')
return
}
await resetEditor(true)
showEditor.value = true
}
@@ -2765,6 +2811,7 @@ const onSaveOrUpdateRow = async () => {
stockMap, stockMap,
$q $q
}) })
showEditor.value = false
} }

View File

@@ -126,6 +126,13 @@
</q-icon> </q-icon>
</q-td> </q-td>
</template> </template>
<template #body-cell-HasUretimUrunu="props">
<q-td :props="props" class="text-left">
<span v-if="props.row.HasUretimUrunu" class="text-weight-bold text-negative">
ÜRETİME VERİLECEK ÜRÜNÜ VAR
</span>
</q-td>
</template>
<template #body-cell-OrderDate="props"> <template #body-cell-OrderDate="props">
<q-td :props="props" class="text-center"> <q-td :props="props" class="text-center">
@@ -366,6 +373,7 @@ const columns = [
format: val => Number(val || 0).toLocaleString('tr-TR', { minimumFractionDigits: 2 }) + ' %' format: val => Number(val || 0).toLocaleString('tr-TR', { minimumFractionDigits: 2 }) + ' %'
}, },
{ name: 'IsCreditableConfirmed', label: 'Durum', field: 'IsCreditableConfirmed', align: 'center', sortable: true }, { name: 'IsCreditableConfirmed', label: 'Durum', field: 'IsCreditableConfirmed', align: 'center', sortable: true },
{ name: 'HasUretimUrunu', label: 'Üretim', field: 'HasUretimUrunu', align: 'left', sortable: true, style: 'min-width:190px;white-space:nowrap', headerStyle: 'min-width:190px;white-space:nowrap' },
{ name: 'Description', label: 'Açıklama', field: 'Description', align: 'left', sortable: false, classes: 'ol-col-desc', headerClasses: 'ol-col-desc', style: 'width:160px;max-width:160px', headerStyle: 'width:160px;max-width:160px' }, { name: 'Description', label: 'Açıklama', field: 'Description', align: 'left', sortable: false, classes: 'ol-col-desc', headerClasses: 'ol-col-desc', style: 'width:160px;max-width:160px', headerStyle: 'width:160px;max-width:160px' },
{ name: 'pdf', label: 'PDF', field: 'pdf', align: 'center', sortable: false } { name: 'pdf', label: 'PDF', field: 'pdf', align: 'center', sortable: false }
] ]

View File

@@ -242,6 +242,20 @@ const routes = [
meta: { permission: 'order:view' } meta: { permission: 'order:view' }
}, },
{
path: 'orderproductionupdate',
name: 'orderproductionupdate-list',
component: () => import('pages/OrderProductionUpdateList.vue'),
meta: { permission: 'order:update' }
},
{
path: 'orderproductionupdate/:orderHeaderID',
name: 'orderproductionupdate',
component: () => import('pages/OrderProductionUpdate.vue'),
props: true,
meta: { permission: 'order:update' }
},
{ {
path: 'order-bulk-close', path: 'order-bulk-close',
name: 'order-bulk-close', name: 'order-bulk-close',

View File

@@ -43,11 +43,11 @@ export function buildComboKey(row, beden) {
export const BEDEN_SCHEMA = [ export const BEDEN_SCHEMA = [
{ key: 'tak', title: 'TAKIM ELBISE', values: ['44','46','48','50','52','54','56','58','60','62','64','66','68','70','72','74'] },
{ key: 'ayk', title: 'AYAKKABI', values: ['39','40','41','42','43','44','45'] }, { key: 'ayk', title: 'AYAKKABI', values: ['39','40','41','42','43','44','45'] },
{ key: 'yas', title: 'YAS', values: ['2','4','6','8','10','12','14'] }, { key: 'yas', title: 'YAS', values: ['2','4','6','8','10','12','14'] },
{ key: 'pan', title: 'PANTOLON', values: ['38','40','42','44','46','48','50','52','54','56','58','60','62','64','66','68'] }, { key: 'pan', title: 'PANTOLON', values: ['38','40','42','44','46','48','50','52','54','56','58','60','62','64','66','68'] },
{ key: 'gom', title: 'GOMLEK', values: ['XS','S','M','L','XL','2XL','3XL','4XL','5XL','6XL','7XL'] }, { key: 'gom', title: 'GOMLEK', values: ['XS','S','M','L','XL','2XL','3XL','4XL','5XL','6XL','7XL'] },
{ key: 'tak', title: 'TAKIM ELBISE', values: ['44','46','48','50','52','54','56','58','60','62','64','66','68','70','72','74'] },
{ key: 'aksbir', title: 'AKSESUAR', values: [' ', '44', 'STD', '110', '115', '120', '125', '130', '135'] } { key: 'aksbir', title: 'AKSESUAR', values: [' ', '44', 'STD', '110', '115', '120', '125', '130', '135'] }
] ]