fix: normalizacao de marca_componente para restricao check_marca_componente_range
This commit is contained in:
@@ -626,8 +626,17 @@
|
|||||||
|
|
||||||
if (isSubComp) {
|
if (isSubComp) {
|
||||||
currentAssembly.isComposed = 'SIM';
|
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({
|
currentAssembly.components.push({
|
||||||
marca: itemMark,
|
marca: cleanCompMark,
|
||||||
quantidade: itemQuant,
|
quantidade: itemQuant,
|
||||||
perfil: itemDesc || currentAssembly.descricao,
|
perfil: itemDesc || currentAssembly.descricao,
|
||||||
material: detectedMaterial || 'A36',
|
material: detectedMaterial || 'A36',
|
||||||
|
|||||||
@@ -626,8 +626,17 @@
|
|||||||
|
|
||||||
if (isSubComp) {
|
if (isSubComp) {
|
||||||
currentAssembly.isComposed = 'SIM';
|
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({
|
currentAssembly.components.push({
|
||||||
marca: itemMark,
|
marca: cleanCompMark,
|
||||||
quantidade: itemQuant,
|
quantidade: itemQuant,
|
||||||
perfil: itemDesc || currentAssembly.descricao,
|
perfil: itemDesc || currentAssembly.descricao,
|
||||||
material: detectedMaterial || 'A36',
|
material: detectedMaterial || 'A36',
|
||||||
|
|||||||
@@ -500,8 +500,17 @@ const AdvanceSteelConverterContent: React.FC = () => {
|
|||||||
|
|
||||||
if (isSubComp) {
|
if (isSubComp) {
|
||||||
currentAssembly.isComposed = 'SIM';
|
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({
|
currentAssembly.components.push({
|
||||||
marca: itemMark,
|
marca: cleanCompMark,
|
||||||
quantidade: itemQuant,
|
quantidade: itemQuant,
|
||||||
perfil: itemDesc || currentAssembly.descricao,
|
perfil: itemDesc || currentAssembly.descricao,
|
||||||
material: detectedMaterial || 'A36',
|
material: detectedMaterial || 'A36',
|
||||||
|
|||||||
+27
-5
@@ -442,13 +442,35 @@ export function usePecas() {
|
|||||||
pecasMap.set(pecaKey, pecaData);
|
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 = {
|
const componenteData = {
|
||||||
marca_componente: item.marca_componente.trim(),
|
marca_componente: cleanMarca,
|
||||||
descricao: item.descricao_componente || '',
|
descricao: item.descricao_componente || item.descricao || '',
|
||||||
perfil: item.perfil_componente || '',
|
perfil: item.perfil_componente || item.perfil_principal || '',
|
||||||
peso_unitario: Number(item.peso_unitario_componente) || 0,
|
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
|
user_id: user.id
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user