-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfix_venta_editar.cjs
More file actions
58 lines (45 loc) 路 3.94 KB
/
Copy pathfix_venta_editar.cjs
File metadata and controls
58 lines (45 loc) 路 3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const fs = require('fs');
const path = require('path');
const filePath = "c:\\Users\\hp\\Documents\\Onwheels-SB\\src\\feactures\\dashboards\\admin\\pages\\ventas\\ventas\\VentaEditar.jsx";
let content = fs.readFileSync(filePath, 'utf-8');
// 1. Import ProductSelectorView
if (!content.includes('ProductSelectorView')) {
content = content.replace(
'import { configUi } from "../../configuracion/configUi";',
'import { configUi } from "../../configuracion/configUi";\nimport ProductSelectorView from "../../compras/compras/ProductSelectorView";'
);
}
// 2. State replacements
content = content.replace(
/const \[modal, setModal\] = useState\(null\);[\s\S]*?const \[searchTerm, setSearchTerm\] = useState\(""\);/,
'const [showProductSelector, setShowProductSelector] = useState(false);'
);
// 3. Remove product modal functions
content = content.replace(
/const openProductModal = \(\) => \{[\s\S]*?(?=const handleSubmit = async \(e\) => \{)/,
''
);
// 4. Remove filteredProducts
content = content.replace(
/const filteredProducts = useMemo\(\(\) =>[\s\S]*?\[productos, searchTerm\]\);/,
''
);
// 5. Handle UI insertion
content = content.replace('openProductModal', '() => setShowProductSelector(true)');
const returnStart = content.indexOf('return (\n <div className={cn(configUi.pageShell, "pb-24")}>');
const firstDivIdx = content.indexOf('<div className={cn(configUi.headerRow, "sticky top-4', returnStart);
const beforeForm = content.slice(0, firstDivIdx);
const afterForm = content.slice(firstDivIdx);
const wrapperStart = ` <AnimatePresence mode="wait">\n {showProductSelector ? (\n <ProductSelectorView\n key="product-selector"\n allProducts={productos}\n onAdd={(data) => {\n const { product, variant, cantidad, precio_unitario } = data;\n const variantData = product.variantes?.find(v => v.id_variante === variant.id_variante) || variant;\n const newItem = {\n id_producto: product.id_producto,\n nombre_producto: product.nombre_producto,\n id_variante: variantData.id_variante,\n id_color: variantData.id_color,\n nombre_color: variantData.nombre_color,\n id_talla: variantData.id_talla,\n nombre_talla: variantData.nombre_talla,\n qty: cantidad,\n price: precio_unitario,\n stockMax: variantData.stock\n };\n setForm(prev => ({ ...prev, items: [...prev.items, newItem] }));\n showNotification("Producto a帽adido", "success");\n setShowProductSelector(false);\n }}\n onClose={() => setShowProductSelector(false)}\n />\n ) : (\n <motion.div key="venta-form" initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} exit={{ opacity: 0, x: 20 }}>\n `;
const notificationDivIdx = afterForm.indexOf('{/* NOTIFICATION */}');
const formContent = afterForm.slice(0, notificationDivIdx);
const restContent = afterForm.slice(notificationDivIdx);
const wrapperEnd = `\n </motion.div>\n )}\n </AnimatePresence>\n\n `;
let finalContent = beforeForm + wrapperStart + formContent.trimEnd() + wrapperEnd + restContent;
// Finally delete the old modal from finalContent
finalContent = finalContent.replace(
/\{\/\* CATALOG MODAL \*\/\}.*?(?=<\/div>\n \);\n\})/gs,
''
);
fs.writeFileSync(filePath, finalContent, 'utf-8');
console.log('File rewritten successfully');