chore: add and Edit Products

This commit is contained in:
Rodolfo Ruiz 2025-09-01 14:24:24 -06:00
parent e55d9a8cf4
commit b2488ba7d9
2 changed files with 39 additions and 3 deletions

View File

@ -4,6 +4,8 @@ import { Box, Button, TextField, MenuItem, Grid } from '@mui/material';
import FurnitureVariantApi from '../../api/furnitureVariantApi';
import { useAuth } from '../../context/AuthContext';
const DEFAULT_MODEL_ID = '8a23117b-acaf-4d87-b64f-a98e9b414796';
export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCancel }) {
const { user } = useAuth();
const token = user?.thalosToken || localStorage.getItem('thalosToken');
@ -11,6 +13,7 @@ export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCa
const [form, setForm] = useState({
_Id: '',
id: '',
modelId: '',
name: '',
color: '',
@ -28,6 +31,7 @@ export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCa
if (initialData) {
setForm({
_Id: initialData._id || initialData._Id || '',
id: initialData.id || initialData.Id || initialData._id || initialData._Id || '',
modelId: initialData.modelId ?? '',
name: initialData.name ?? '',
color: initialData.color ?? '',
@ -47,7 +51,8 @@ export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCa
} else {
setForm({
_Id: '',
modelId: '',
id: '',
modelId: DEFAULT_MODEL_ID,
name: '',
color: '',
line: '',
@ -70,6 +75,7 @@ export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCa
if (form._Id) {
// UPDATE
const payload = {
Id: form.id || form._Id, // backend requires Id
_Id: form._Id,
modelId: form.modelId,
name: form.name,
@ -119,8 +125,37 @@ export default function AddOrEditFurnitureVariantForm({ initialData, onAdd, onCa
<Box sx={{ py: 2 }}>
<Grid container spacing={2}>
<Grid item xs={12} md={6}>
<TextField fullWidth label="Model Id" value={form.modelId} onChange={(e) => setVal('modelId', e.target.value)} />
<TextField
fullWidth
label="Model Id"
value={form.modelId}
onChange={(e) => setVal('modelId', e.target.value)}
disabled={!initialData}
helperText={!initialData ? 'Preset for new variant' : ''}
/>
</Grid>
{form.id && (
<Grid item xs={12} md={6}>
<TextField
fullWidth
label="Id"
value={form.id}
disabled
helperText="Record identifier (read-only)"
/>
</Grid>
)}
{form._Id && (
<Grid item xs={12} md={6}>
<TextField
fullWidth
label="_Id"
value={form._Id}
disabled
helperText="Mongo identifier (read-only)"
/>
</Grid>
)}
<Grid item xs={12} md={6}>
<TextField fullWidth label="Name" value={form.name} onChange={(e) => setVal('name', e.target.value)} />
</Grid>

View File

@ -99,6 +99,7 @@ export default function FurnitureVariantManagement() {
const r = params.row;
const normalized = {
_id: r._id || r._Id || '',
_Id: r._id || r._Id || '',
id: r.id || r.Id || '',
modelId: r.modelId ?? '',
name: r.name ?? '',
@ -127,7 +128,7 @@ export default function FurnitureVariantManagement() {
const handleConfirmDelete = async () => {
try {
if (!apiRef.current || !rowToDelete?._id) throw new Error('Missing API or id');
if (!apiRef.current || !(rowToDelete?._id || rowToDelete?._Id)) throw new Error('Missing API or id');
// If your inventory BFF uses soft delete via Update (status=Inactive), do this:
const payload = {
_Id: rowToDelete._id || rowToDelete._Id,