krona-front/dist/assets/SalesModule-Cf0nSO8B.js

1 line
No EOL
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{f as e,h as t,i as n,r,s as i,t as a}from"./useToast-CS8pZhce.js";import{t as o}from"./truck-D5o8mTsH.js";import{D as s,H as c,R as l,T as ee,V as te,W as u,_ as d,b as f,lt as ne,n as re,r as p,t as m,x as h}from"./index-CrJKtV0u.js";import{t as ie}from"./useOrders-TRZWcao8.js";import{t as g}from"./currency-DdDs82F5.js";import{t as ae}from"./useInventory-C7Fo8GE1.js";var _=t(e(),1),v=i(),y=()=>{let{showToast:e}=a(),{orders:t,products:i,payments:y,shipments:b,createOrder:x,confirmOrder:S,cancelOrder:C,createPayment:w,createShipment:T,processReturn:E}=ie(),{warehouses:D}=ae(),[O,oe]=(0,_.useState)(``),[k,se]=(0,_.useState)(`all`),[A,j]=(0,_.useState)(null),[M,N]=(0,_.useState)(!1),[P,F]=(0,_.useState)(!1),[I,L]=(0,_.useState)(!1),[R,z]=(0,_.useState)(!1),[B,V]=(0,_.useState)(``),[H,U]=(0,_.useState)(``),[W,G]=(0,_.useState)(1),[K,ce]=(0,_.useState)(`bank_transfer`),[q,J]=(0,_.useState)(`wh_main`),[Y,le]=(0,_.useState)(`Не подошел размер / брак`),X=(0,_.useMemo)(()=>A?t.find(e=>e.id===A.id)||A:null,[t,A]),Z=(0,_.useMemo)(()=>t.filter(e=>{let t=k===`all`||e.status===k,n=!O||e.orderNumber.toLowerCase().includes(O.toLowerCase())||e.customerName.toLowerCase().includes(O.toLowerCase());return t&&n}),[t,k,O]),Q=async t=>{try{await S(t,q),e(`Заказ подтвержден! Зарезервирован остаток на складе.`,`success`)}catch(t){e(`Ошибка: ${t instanceof Error?t.message:String(t)}`,`error`)}},ue=async()=>{if(X)try{await w(X.id,X.total,K,!0),F(!1),e(`Оплата успешно принята! Поступление отражено в ДДС Финансов.`,`success`)}catch(t){e(`Ошибка оплаты: ${t instanceof Error?t.message:String(t)}`,`error`)}},de=async()=>{if(X)try{await T(X.id,q),L(!1),e(`Отгрузка сформирована! Товар списан со склада.`,`success`)}catch(t){e(`Ошибка отгрузки: ${t instanceof Error?t.message:String(t)}`,`error`)}},fe=async t=>{try{await C(t),e(`Заказ отменен. Резервы на складе освобождены.`,`info`)}catch(t){e(`Ошибка отмены: ${t instanceof Error?t.message:String(t)}`,`error`)}},pe=async()=>{if(X)try{let t=X.items.map(e=>({productId:e.productId,sku:e.sku,name:e.name,quantity:e.quantity,refundAmount:e.totalPrice}));await E(X.id,Y,t,q,!0),z(!1),e(`Возврат оформлен! Товар возвращен на склад, расход отражен в ДДС.`,`success`)}catch(t){e(`Ошибка возврата: ${t instanceof Error?t.message:String(t)}`,`error`)}},me=async t=>{t.preventDefault();let n=i.find(e=>e.id===H)||i[0];if(!n)return;let r=n.price.minor,a=r*W,o=`ORD-${Date.now().toString().slice(-5)}`;await x({orderNumber:o,customerType:`contact`,customerId:`cnt_custom`,customerName:B||`Розничный покупатель`,status:`draft`,paymentStatus:`pending`,fulfillmentStatus:`unfulfilled`,items:[{id:`item_${Date.now()}`,productId:n.id,sku:n.sku,name:n.name,quantity:W,unitPrice:{minor:r,currency:`RUB`},discountMinor:0,totalPrice:{minor:a,currency:`RUB`}}],subtotal:{minor:a,currency:`RUB`},discountMinor:0,taxMinor:Math.round(a*.2),shippingMinor:0,total:{minor:a,currency:`RUB`},channel:`b2b`}),N(!1),V(``),G(1),e(`Заказ ${o} успешно создан`,`success`)},$=e=>{switch(e){case`confirmed`:return(0,v.jsx)(r,{variant:`gold`,size:`sm`,children:`Подтвержден (Резерв)`});case`shipped`:return(0,v.jsx)(r,{variant:`blue`,size:`sm`,children:`Отгружен со склада`});case`delivered`:return(0,v.jsx)(r,{variant:`green`,size:`sm`,children:`Доставлен`});case`cancelled`:return(0,v.jsx)(r,{variant:`danger`,size:`sm`,children:`Отменен`});default:return(0,v.jsx)(r,{variant:`gray`,size:`sm`,children:`Черновик`})}};return(0,v.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`h1`,{className:`text-sm font-bold text-krona-primary`,children:`Коммерция & Продажи: Управление Заказами`}),(0,v.jsx)(m,{level:`pilot1`,size:`sm`})]}),(0,v.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Жизненный цикл заказа: Черновик → Подтверждение (резерв) → Оплата (ДДС) → Отгрузка (списание со склада) → Доставка / Возврат`})]}),(0,v.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,v.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>N(!0),children:[(0,v.jsx)(ee,{className:`w-3.5 h-3.5 mr-1`}),` Новый заказ`]})})]}),(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,v.jsx)(`div`,{className:`flex items-center gap-1 overflow-x-auto text-xs`,children:[{key:`all`,label:`Все заказы`},{key:`draft`,label:`Черновики`},{key:`confirmed`,label:`Подтвержденные`},{key:`shipped`,label:`Отгруженные`},{key:`delivered`,label:`Доставленные`},{key:`cancelled`,label:`Отмененные`}].map(e=>(0,v.jsx)(`button`,{onClick:()=>se(e.key),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${k===e.key?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e.label},e.key))}),(0,v.jsxs)(`div`,{className:`relative w-64`,children:[(0,v.jsx)(f,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,v.jsx)(`input`,{type:`text`,value:O,onChange:e=>oe(e.target.value),placeholder:`Поиск по номеру или клиенту...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]}),(0,v.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,v.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,v.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер заказа`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Клиент`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Позиций`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Сумма заказа`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статус заказа`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Оплата`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold`,children:`Складской статус`}),(0,v.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,v.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[Z.map(e=>(0,v.jsxs)(`tr`,{"data-testid":`order-row-${e.id}`,onClick:()=>j(e),className:`hover:bg-krona-workspace/50 cursor-pointer transition-colors`,children:[(0,v.jsx)(`td`,{className:`p-3 font-mono font-bold text-krona-primary`,children:e.orderNumber}),(0,v.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.customerName}),(0,v.jsxs)(`td`,{className:`p-3 text-krona-secondary`,children:[e.items.length,` поз.`]}),(0,v.jsx)(`td`,{className:`p-3 font-bold text-krona-green`,children:g(e.total.minor)}),(0,v.jsx)(`td`,{className:`p-3`,children:$(e.status)}),(0,v.jsx)(`td`,{className:`p-3`,children:(0,v.jsx)(r,{variant:e.paymentStatus===`paid`?`green`:e.paymentStatus===`refunded`?`danger`:`warning`,size:`sm`,children:e.paymentStatus===`paid`?`Оплачен`:e.paymentStatus===`refunded`?`Возврат`:`Ожидает оплаты`})}),(0,v.jsx)(`td`,{className:`p-3`,children:(0,v.jsx)(r,{variant:e.fulfillmentStatus===`fulfilled`?`green`:e.fulfillmentStatus===`returned`?`danger`:`gray`,size:`sm`,children:e.fulfillmentStatus===`fulfilled`?`Отгружен`:e.fulfillmentStatus===`returned`?`Возвращен`:`Не отгружен`})}),(0,v.jsx)(`td`,{className:`p-3 text-right`,children:(0,v.jsxs)(n,{variant:`ghost`,size:`sm`,children:[`Управление `,(0,v.jsx)(u,{className:`w-3.5 h-3.5 ml-1`})]})})]},e.id)),Z.length===0&&(0,v.jsx)(`tr`,{children:(0,v.jsx)(`td`,{colSpan:8,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Заказы не найдены`})})]})]})}),(0,v.jsx)(re,{isOpen:!!X,onClose:()=>j(null),title:X?`Заказ ${X.orderNumber}`:``,size:`lg`,children:X&&(0,v.jsxs)(`div`,{className:`space-y-5 text-xs`,children:[(0,v.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-xl border border-krona-border space-y-3`,children:[(0,v.jsx)(`div`,{className:`text-[11px] font-bold uppercase text-krona-secondary tracking-wider`,children:`Управление жизненным циклом заказа:`}),(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[X.status===`draft`&&(0,v.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`confirm-order-btn`,onClick:()=>Q(X.id),children:[(0,v.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Подтвердить заказ (Резерв на складе)`]}),X.paymentStatus===`pending`&&X.status!==`cancelled`&&(0,v.jsxs)(n,{variant:`gold`,size:`sm`,"data-testid":`record-payment-btn`,onClick:()=>F(!0),children:[(0,v.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Зафиксировать оплату (ДДС)`]}),(X.status===`confirmed`||X.paymentStatus===`paid`)&&X.fulfillmentStatus===`unfulfilled`&&X.status!==`cancelled`&&(0,v.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`create-shipment-btn`,onClick:()=>L(!0),children:[(0,v.jsx)(o,{className:`w-3.5 h-3.5 mr-1`}),` Сформировать отгрузку (Списать со склада)`]}),X.status===`shipped`&&(0,v.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>Q(X.id),children:[(0,v.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Доставлен покупателю`]}),X.fulfillmentStatus===`fulfilled`&&(0,v.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>z(!0),children:[(0,v.jsx)(h,{className:`w-3.5 h-3.5 mr-1 text-rose-500`}),` Оформить возврат (Возврат на склад & ДДС)`]}),X.status!==`cancelled`&&X.status!==`shipped`&&X.fulfillmentStatus!==`fulfilled`&&(0,v.jsxs)(n,{variant:`ghost`,size:`sm`,className:`text-rose-600 hover:text-rose-700 hover:bg-rose-500/10 ml-auto`,onClick:()=>fe(X.id),children:[(0,v.jsx)(te,{className:`w-3.5 h-3.5 mr-1`}),` Отменить заказ (Снять резерв)`]})]})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`span`,{className:`text-krona-secondary`,children:`Клиент:`}),(0,v.jsx)(`div`,{className:`font-bold text-krona-primary mt-0.5`,children:X.customerName})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`span`,{className:`text-krona-secondary`,children:`Сумма:`}),(0,v.jsx)(`div`,{className:`font-bold text-krona-green mt-0.5`,children:g(X.total.minor)})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`span`,{className:`text-krona-secondary`,children:`Статус заказа:`}),(0,v.jsx)(`div`,{className:`mt-0.5`,children:$(X.status)})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`span`,{className:`text-krona-secondary`,children:`Оплата:`}),(0,v.jsx)(`div`,{className:`mt-0.5`,children:(0,v.jsx)(r,{variant:X.paymentStatus===`paid`?`green`:`warning`,size:`sm`,children:X.paymentStatus})})]})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsxs)(`div`,{className:`font-bold text-krona-primary mb-2 flex items-center gap-1.5`,children:[(0,v.jsx)(s,{className:`w-4 h-4 text-krona-secondary`}),` Состав заказа:`]}),(0,v.jsx)(`div`,{className:`border border-krona-border rounded-lg overflow-hidden`,children:(0,v.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,v.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Артикул`}),(0,v.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Наименование`}),(0,v.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Кол-во`}),(0,v.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Цена за ед.`}),(0,v.jsx)(`th`,{className:`p-2.5 font-semibold text-right`,children:`Сумма`})]})}),(0,v.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:X.items.map(e=>(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`td`,{className:`p-2.5 font-mono text-krona-secondary`,children:e.sku}),(0,v.jsx)(`td`,{className:`p-2.5 font-medium text-krona-primary`,children:e.name}),(0,v.jsxs)(`td`,{className:`p-2.5 font-bold`,children:[e.quantity,` шт.`]}),(0,v.jsx)(`td`,{className:`p-2.5 text-krona-secondary`,children:g(e.unitPrice.minor)}),(0,v.jsx)(`td`,{className:`p-2.5 font-bold text-krona-primary text-right`,children:g(e.totalPrice.minor)})]},e.id))})]})})]}),(0,v.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-1.5`,children:[(0,v.jsxs)(`div`,{className:`flex justify-between text-krona-secondary`,children:[(0,v.jsx)(`span`,{children:`Промежуточный итог:`}),(0,v.jsx)(`span`,{children:g(X.subtotal.minor)})]}),(0,v.jsxs)(`div`,{className:`flex justify-between text-krona-secondary`,children:[(0,v.jsx)(`span`,{children:`НДС (20%):`}),(0,v.jsx)(`span`,{children:g(X.taxMinor)})]}),(0,v.jsxs)(`div`,{className:`flex justify-between font-bold text-sm text-krona-primary border-t border-krona-border pt-1`,children:[(0,v.jsx)(`span`,{children:`Итого к оплате:`}),(0,v.jsx)(`span`,{className:`text-krona-green`,children:g(X.total.minor)})]})]}),(0,v.jsxs)(`div`,{className:`space-y-2`,children:[(0,v.jsx)(`div`,{className:`font-bold text-krona-primary`,children:`Связанные документы:`}),(0,v.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 text-[11px]`,children:[y.filter(e=>e.orderId===X.id).map(e=>(0,v.jsxs)(`div`,{className:`p-2.5 rounded-lg border border-krona-border bg-emerald-500/5 flex items-center justify-between`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsxs)(`div`,{className:`font-bold text-emerald-700 dark:text-emerald-300`,children:[`Оплата `,e.transactionId]}),(0,v.jsxs)(`div`,{className:`text-krona-secondary`,children:[e.method,` • `,ne(e.paidAt)]})]}),(0,v.jsx)(`span`,{className:`font-bold text-krona-green`,children:g(e.amount.minor)})]},e.id)),b.filter(e=>e.orderId===X.id).map(e=>(0,v.jsxs)(`div`,{className:`p-2.5 rounded-lg border border-krona-border bg-blue-500/5 flex items-center justify-between`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsxs)(`div`,{className:`font-bold text-blue-700 dark:text-blue-300`,children:[`Отгрузка `,e.trackingNumber]}),(0,v.jsxs)(`div`,{className:`text-krona-secondary`,children:[e.carrier,` • `,e.items.length,` поз.`]})]}),(0,v.jsx)(r,{variant:`blue`,size:`sm`,children:e.status})]},e.id))]})]})]})}),(0,v.jsx)(p,{isOpen:P,onClose:()=>F(!1),title:`Зафиксировать оплату по заказу`,size:`md`,children:X&&(0,v.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,v.jsxs)(`p`,{className:`text-krona-secondary`,children:[`Оплата заказа `,(0,v.jsx)(`strong`,{className:`text-krona-primary`,children:X.orderNumber}),` на сумму`,` `,(0,v.jsx)(`strong`,{className:`text-krona-green`,children:g(X.total.minor)}),`. Поступление денежных средств будет мгновенно отражено в модуле Финансы (ДДС) и увеличит остаток расчетного счета.`]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Способ оплаты:`}),(0,v.jsxs)(`select`,{value:K,onChange:e=>ce(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:[(0,v.jsx)(`option`,{value:`bank_transfer`,children:`Безналичный расчет (Счет)`}),(0,v.jsx)(`option`,{value:`card`,children:`Банковская карта (Эквайринг)`}),(0,v.jsx)(`option`,{value:`online`,children:`СБП / Онлайн`}),(0,v.jsx)(`option`,{value:`cash`,children:`Наличные в кассу`})]})]}),(0,v.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,v.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>F(!1),children:`Отмена`}),(0,v.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`submit-payment-btn`,onClick:ue,children:[(0,v.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Провести платеж`]})]})]})}),(0,v.jsx)(p,{isOpen:I,onClose:()=>L(!1),title:`Формирование складской отгрузки`,size:`md`,children:X&&(0,v.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,v.jsxs)(`p`,{className:`text-krona-secondary`,children:[`Формирование накладной на отгрузку для заказа `,(0,v.jsx)(`strong`,{className:`text-krona-primary`,children:X.orderNumber}),`. При отгрузке зарезервированные товары будут списаны с физического складского остатка.`]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад списания:`}),(0,v.jsx)(`select`,{value:q,onChange:e=>J(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:D.map(e=>(0,v.jsxs)(`option`,{value:e.id,children:[e.name,` (`,e.address,`)`]},e.id))})]}),(0,v.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,v.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>L(!1),children:`Отмена`}),(0,v.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`submit-shipment-btn`,onClick:de,children:[(0,v.jsx)(o,{className:`w-3.5 h-3.5 mr-1`}),` Сформировать отгрузку`]})]})]})}),(0,v.jsx)(p,{isOpen:R,onClose:()=>z(!1),title:`Оформление возврата товара`,size:`md`,children:X&&(0,v.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,v.jsxs)(`div`,{className:`p-3 bg-rose-500/10 border border-rose-500/30 rounded-lg text-rose-800 dark:text-rose-300`,children:[`При возврате товара остаток на складе будет автоматически восстановлен, а в модуле Финансы (ДДС) сформируется выплата возврата клиенту на сумму `,(0,v.jsx)(`strong`,{className:`font-bold`,children:g(X.total.minor)}),`.`]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Причина возврата:`}),(0,v.jsx)(`input`,{type:`text`,value:Y,onChange:e=>le(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад возврата:`}),(0,v.jsx)(`select`,{value:q,onChange:e=>J(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:D.map(e=>(0,v.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,v.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,v.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>z(!1),children:`Отмена`}),(0,v.jsxs)(n,{variant:`danger`,size:`sm`,onClick:pe,children:[(0,v.jsx)(h,{className:`w-3.5 h-3.5 mr-1`}),` Провести возврат`]})]})]})}),(0,v.jsx)(p,{isOpen:M,onClose:()=>N(!1),title:`Создание нового коммерческого заказа`,size:`md`,children:(0,v.jsxs)(`form`,{onSubmit:me,className:`space-y-4 text-xs`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Клиент (ФИО или название компании):`}),(0,v.jsx)(`input`,{type:`text`,required:!0,placeholder:`Например: ООО «СеверТорг» или Иванов Иван`,value:B,onChange:e=>V(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Товарная позиция:`}),(0,v.jsx)(`select`,{value:H,onChange:e=>U(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:i.map(e=>(0,v.jsxs)(`option`,{value:e.id,children:[e.name,` — `,g(e.price.minor)]},e.id))})]}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Количество (шт.):`}),(0,v.jsx)(`input`,{type:`number`,min:1,value:W,onChange:e=>G(Number(e.target.value)||1),className:`w-32 px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,v.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,v.jsx)(n,{variant:`secondary`,size:`sm`,type:`button`,onClick:()=>N(!1),children:`Отмена`}),(0,v.jsxs)(n,{variant:`primary`,size:`sm`,type:`submit`,children:[(0,v.jsx)(d,{className:`w-3.5 h-3.5 mr-1`}),` Создать заказ`]})]})]})})]})};export{y as SalesModule};