fix: normalizacao de marca_componente para restricao check_marca_componente_range
This commit is contained in:
@@ -626,8 +626,17 @@
|
||||
|
||||
if (isSubComp) {
|
||||
currentAssembly.isComposed = 'SIM';
|
||||
|
||||
let cleanCompMark = itemMark;
|
||||
const subMatch = itemMark.match(/-?(\d{4,})$/) || itemMark.match(/(\d{4,})/);
|
||||
if (subMatch) {
|
||||
cleanCompMark = subMatch[1];
|
||||
} else if (itemMark === '-' || !/^\d{4}$/.test(itemMark)) {
|
||||
cleanCompMark = String(1000 + currentAssembly.components.length);
|
||||
}
|
||||
|
||||
currentAssembly.components.push({
|
||||
marca: itemMark,
|
||||
marca: cleanCompMark,
|
||||
quantidade: itemQuant,
|
||||
perfil: itemDesc || currentAssembly.descricao,
|
||||
material: detectedMaterial || 'A36',
|
||||
|
||||
@@ -626,8 +626,17 @@
|
||||
|
||||
if (isSubComp) {
|
||||
currentAssembly.isComposed = 'SIM';
|
||||
|
||||
let cleanCompMark = itemMark;
|
||||
const subMatch = itemMark.match(/-?(\d{4,})$/) || itemMark.match(/(\d{4,})/);
|
||||
if (subMatch) {
|
||||
cleanCompMark = subMatch[1];
|
||||
} else if (itemMark === '-' || !/^\d{4}$/.test(itemMark)) {
|
||||
cleanCompMark = String(1000 + currentAssembly.components.length);
|
||||
}
|
||||
|
||||
currentAssembly.components.push({
|
||||
marca: itemMark,
|
||||
marca: cleanCompMark,
|
||||
quantidade: itemQuant,
|
||||
perfil: itemDesc || currentAssembly.descricao,
|
||||
material: detectedMaterial || 'A36',
|
||||
|
||||
@@ -500,8 +500,17 @@ const AdvanceSteelConverterContent: React.FC = () => {
|
||||
|
||||
if (isSubComp) {
|
||||
currentAssembly.isComposed = 'SIM';
|
||||
|
||||
let cleanCompMark = itemMark;
|
||||
const subMatch = itemMark.match(/-?(\d{4,})$/) || itemMark.match(/(\d{4,})/);
|
||||
if (subMatch) {
|
||||
cleanCompMark = subMatch[1];
|
||||
} else if (itemMark === '-' || !/^\d{4}$/.test(itemMark)) {
|
||||
cleanCompMark = String((labels.faixaComponenteMin || 1000) + currentAssembly.components.length);
|
||||
}
|
||||
|
||||
currentAssembly.components.push({
|
||||
marca: itemMark,
|
||||
marca: cleanCompMark,
|
||||
quantidade: itemQuant,
|
||||
perfil: itemDesc || currentAssembly.descricao,
|
||||
material: detectedMaterial || 'A36',
|
||||
|
||||
+27
-5
@@ -442,13 +442,35 @@ export function usePecas() {
|
||||
pecasMap.set(pecaKey, pecaData);
|
||||
}
|
||||
|
||||
if (item.marca_componente && item.marca_componente.trim()) {
|
||||
if (item.marca_componente && String(item.marca_componente).trim()) {
|
||||
const rawMarca = String(item.marca_componente).trim();
|
||||
let cleanMarca = rawMarca;
|
||||
|
||||
// Extrair a marca numérica pura entre 1000 e 9999 (requisito do banco PostgreSQL)
|
||||
const matchSuffix = rawMarca.match(/-?(\d{4,})$/) || rawMarca.match(/(\d{4,})/);
|
||||
if (matchSuffix) {
|
||||
cleanMarca = matchSuffix[1];
|
||||
} else {
|
||||
const digits = rawMarca.replace(/\D/g, '');
|
||||
if (digits.length >= 4) {
|
||||
cleanMarca = digits.slice(-4);
|
||||
} else {
|
||||
cleanMarca = String(1000 + (componentesMap.get(pecaKey)?.length || 0));
|
||||
}
|
||||
}
|
||||
|
||||
let numVal = parseInt(cleanMarca, 10);
|
||||
if (isNaN(numVal) || numVal < 1000 || numVal > 9999) {
|
||||
numVal = 1000 + (componentesMap.get(pecaKey)?.length || 0);
|
||||
}
|
||||
cleanMarca = String(numVal);
|
||||
|
||||
const componenteData = {
|
||||
marca_componente: item.marca_componente.trim(),
|
||||
descricao: item.descricao_componente || '',
|
||||
perfil: item.perfil_componente || '',
|
||||
marca_componente: cleanMarca,
|
||||
descricao: item.descricao_componente || item.descricao || '',
|
||||
perfil: item.perfil_componente || item.perfil_principal || '',
|
||||
peso_unitario: Number(item.peso_unitario_componente) || 0,
|
||||
quantidade_por_peca: Number(item.quantidade_por_peca) || 1,
|
||||
quantidade_por_peca: Math.max(1, Math.round(Number(item.quantidade_por_peca) || 1)),
|
||||
user_id: user.id
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user