Add extended product fields: dimensions, weight, tax codes, brand, inventory, pricing, SEO
This commit is contained in:
parent
95a7591c39
commit
446dee26b6
6 changed files with 281 additions and 282 deletions
|
|
@ -0,0 +1,84 @@
|
||||||
|
-- Rollback extended product fields
|
||||||
|
|
||||||
|
-- Remove variant indexes
|
||||||
|
DROP INDEX IF EXISTS idx_product_variants_global_trade_number;
|
||||||
|
|
||||||
|
-- Remove variant fields
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS global_trade_number;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS net_weight;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS gross_weight;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS width;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS height;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS length;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS color;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS size;
|
||||||
|
ALTER TABLE product_variants DROP COLUMN IF EXISTS images;
|
||||||
|
|
||||||
|
-- Remove product indexes
|
||||||
|
DROP INDEX IF EXISTS idx_products_tax_code;
|
||||||
|
DROP INDEX IF EXISTS idx_products_global_trade_number;
|
||||||
|
DROP INDEX IF EXISTS idx_products_brand;
|
||||||
|
DROP INDEX IF EXISTS idx_products_slug;
|
||||||
|
DROP INDEX IF EXISTS idx_products_expiration;
|
||||||
|
DROP INDEX IF EXISTS idx_products_external_id;
|
||||||
|
|
||||||
|
-- Remove SEO and search
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS slug;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS meta_title;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS meta_description;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS tags;
|
||||||
|
|
||||||
|
-- Remove payment gateway integration
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS external_id;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS external_category_id;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS external_metadata;
|
||||||
|
|
||||||
|
-- Remove detailed pricing
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS sale_price;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS sale_start;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS sale_end;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS shipping_cost;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS profit_margin;
|
||||||
|
|
||||||
|
-- Remove advanced inventory control
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS warehouse_location;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS batch_number;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS expiration_date;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS manufacture_date;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS min_stock;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS max_stock;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS reorder_point;
|
||||||
|
|
||||||
|
-- Remove marketplace and e-commerce fields
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS brand;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS model;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS color;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS size;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS material;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS gender;
|
||||||
|
|
||||||
|
-- Remove tax rates by type
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS sales_tax_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS sales_tax_rate;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS excise_tax_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS excise_tax_rate;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS vat_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS vat_rate;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS service_tax_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS service_tax_rate;
|
||||||
|
|
||||||
|
-- Remove detailed dimensions
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS net_weight;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS gross_weight;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS width;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS height;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS length;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS package_count;
|
||||||
|
|
||||||
|
-- Remove tax and fiscal identification fields
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS tax_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS tax_class;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS fiscal_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS origin_code;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS global_trade_number;
|
||||||
|
ALTER TABLE products DROP COLUMN IF EXISTS tax_unit_code;
|
||||||
83
migrations/20250114000001_add_product_extended_fields/up.sql
Normal file
83
migrations/20250114000001_add_product_extended_fields/up.sql
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
-- Extended product fields for e-commerce and payment integrations
|
||||||
|
|
||||||
|
-- Tax and fiscal identification fields
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS tax_code VARCHAR(10);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS tax_class VARCHAR(50);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS fiscal_code VARCHAR(10);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS origin_code INTEGER DEFAULT 0;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS global_trade_number VARCHAR(14);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS tax_unit_code VARCHAR(14);
|
||||||
|
|
||||||
|
-- Detailed dimensions (for shipping calculation)
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS net_weight DECIMAL(10,3);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS gross_weight DECIMAL(10,3);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS width DECIMAL(10,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS height DECIMAL(10,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS length DECIMAL(10,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS package_count INTEGER DEFAULT 1;
|
||||||
|
|
||||||
|
-- Tax rates by type
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS sales_tax_code VARCHAR(3);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS sales_tax_rate DECIMAL(5,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS excise_tax_code VARCHAR(2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS excise_tax_rate DECIMAL(5,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS vat_code VARCHAR(2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS vat_rate DECIMAL(5,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS service_tax_code VARCHAR(2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS service_tax_rate DECIMAL(5,2);
|
||||||
|
|
||||||
|
-- Marketplace and e-commerce fields
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS brand VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS model VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS color VARCHAR(50);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS size VARCHAR(20);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS material VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS gender VARCHAR(20);
|
||||||
|
|
||||||
|
-- Advanced inventory control
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS warehouse_location VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS batch_number VARCHAR(50);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS expiration_date DATE;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS manufacture_date DATE;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS min_stock INTEGER DEFAULT 0;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS max_stock INTEGER;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS reorder_point INTEGER;
|
||||||
|
|
||||||
|
-- Detailed pricing
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS sale_price DECIMAL(15,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS sale_start TIMESTAMPTZ;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS sale_end TIMESTAMPTZ;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS shipping_cost DECIMAL(15,2);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS profit_margin DECIMAL(5,2);
|
||||||
|
|
||||||
|
-- Payment gateway integration
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS external_id VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS external_category_id VARCHAR(100);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS external_metadata JSONB DEFAULT '{}';
|
||||||
|
|
||||||
|
-- SEO and search
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS slug VARCHAR(255);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS meta_title VARCHAR(255);
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS meta_description TEXT;
|
||||||
|
ALTER TABLE products ADD COLUMN IF NOT EXISTS tags TEXT[];
|
||||||
|
|
||||||
|
-- Indexes for new fields
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_tax_code ON products(tax_code);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_global_trade_number ON products(global_trade_number);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_brand ON products(brand);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_slug ON products(slug);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_expiration ON products(expiration_date);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_products_external_id ON products(external_id);
|
||||||
|
|
||||||
|
-- Add similar fields to product variants
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS global_trade_number VARCHAR(14);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS net_weight DECIMAL(10,3);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS gross_weight DECIMAL(10,3);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS width DECIMAL(10,2);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS height DECIMAL(10,2);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS length DECIMAL(10,2);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS color VARCHAR(50);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS size VARCHAR(20);
|
||||||
|
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS images JSONB DEFAULT '[]';
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_product_variants_global_trade_number ON product_variants(global_trade_number);
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
-- Rollback Stone Pagamentos fields from products table
|
|
||||||
|
|
||||||
-- Remove índices das variantes
|
|
||||||
DROP INDEX IF EXISTS idx_product_variants_gtin;
|
|
||||||
|
|
||||||
-- Remove campos das variantes
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS gtin;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS peso_liquido;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS peso_bruto;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS largura;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS altura;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS comprimento;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS cor;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS tamanho;
|
|
||||||
ALTER TABLE product_variants DROP COLUMN IF EXISTS images;
|
|
||||||
|
|
||||||
-- Remove índices dos produtos
|
|
||||||
DROP INDEX IF EXISTS idx_products_ncm;
|
|
||||||
DROP INDEX IF EXISTS idx_products_gtin;
|
|
||||||
DROP INDEX IF EXISTS idx_products_marca;
|
|
||||||
DROP INDEX IF EXISTS idx_products_slug;
|
|
||||||
DROP INDEX IF EXISTS idx_products_validade;
|
|
||||||
DROP INDEX IF EXISTS idx_products_stone_item;
|
|
||||||
|
|
||||||
-- Remove campos SEO e busca
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS slug;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS meta_title;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS meta_description;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS tags;
|
|
||||||
|
|
||||||
-- Remove campos Stone específicos
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS stone_item_id;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS stone_category_id;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS stone_metadata;
|
|
||||||
|
|
||||||
-- Remove preços e custos detalhados
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS preco_promocional;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS promocao_inicio;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS promocao_fim;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS custo_frete;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS margem_lucro;
|
|
||||||
|
|
||||||
-- Remove controle de estoque avançado
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS localizacao_estoque;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS lote;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS data_validade;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS data_fabricacao;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS estoque_minimo;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS estoque_maximo;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS ponto_reposicao;
|
|
||||||
|
|
||||||
-- Remove campos para marketplace e e-commerce
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS marca;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS modelo;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS cor;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS tamanho;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS material;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS genero;
|
|
||||||
|
|
||||||
-- Remove informações tributárias
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS icms_cst;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS icms_aliquota;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS ipi_cst;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS ipi_aliquota;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS pis_cst;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS pis_aliquota;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS cofins_cst;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS cofins_aliquota;
|
|
||||||
|
|
||||||
-- Remove dimensões detalhadas
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS peso_liquido;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS peso_bruto;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS largura;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS altura;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS comprimento;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS volumes;
|
|
||||||
|
|
||||||
-- Remove campos de identificação fiscal e tributária
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS ncm;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS cest;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS cfop;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS origem;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS gtin;
|
|
||||||
ALTER TABLE products DROP COLUMN IF EXISTS gtin_tributavel;
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
-- Stone Pagamentos compatible fields for products
|
|
||||||
-- Adiciona campos para integração com Stone e outros gateways de pagamento brasileiros
|
|
||||||
|
|
||||||
-- Campos de identificação fiscal e tributária
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS ncm VARCHAR(10); -- Nomenclatura Comum do Mercosul
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS cest VARCHAR(9); -- Código Especificador da Substituição Tributária
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS cfop VARCHAR(4); -- Código Fiscal de Operações e Prestações
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS origem INTEGER DEFAULT 0; -- Origem da mercadoria (0=Nacional, 1-8=Importado)
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS gtin VARCHAR(14); -- Global Trade Item Number (EAN/UPC)
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS gtin_tributavel VARCHAR(14); -- GTIN da unidade tributável
|
|
||||||
|
|
||||||
-- Dimensões detalhadas (para cálculo de frete)
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS peso_liquido DECIMAL(10,3); -- Peso líquido em kg
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS peso_bruto DECIMAL(10,3); -- Peso bruto em kg
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS largura DECIMAL(10,2); -- Largura em cm
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS altura DECIMAL(10,2); -- Altura em cm
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS comprimento DECIMAL(10,2); -- Comprimento/Profundidade em cm
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS volumes INTEGER DEFAULT 1; -- Quantidade de volumes
|
|
||||||
|
|
||||||
-- Informações tributárias
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS icms_cst VARCHAR(3); -- Código de Situação Tributária ICMS
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS icms_aliquota DECIMAL(5,2); -- Alíquota ICMS
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS ipi_cst VARCHAR(2); -- CST do IPI
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS ipi_aliquota DECIMAL(5,2); -- Alíquota IPI
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS pis_cst VARCHAR(2); -- CST do PIS
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS pis_aliquota DECIMAL(5,2); -- Alíquota PIS
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS cofins_cst VARCHAR(2); -- CST do COFINS
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS cofins_aliquota DECIMAL(5,2); -- Alíquota COFINS
|
|
||||||
|
|
||||||
-- Campos para marketplace e e-commerce
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS marca VARCHAR(100); -- Marca/Fabricante
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS modelo VARCHAR(100); -- Modelo
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS cor VARCHAR(50); -- Cor principal
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS tamanho VARCHAR(20); -- Tamanho (P, M, G, 38, 40, etc)
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS material VARCHAR(100); -- Material principal
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS genero VARCHAR(20); -- Masculino, Feminino, Unissex
|
|
||||||
|
|
||||||
-- Controle de estoque avançado
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS localizacao_estoque VARCHAR(100); -- Localização no armazém
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS lote VARCHAR(50); -- Número do lote
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS data_validade DATE; -- Data de validade
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS data_fabricacao DATE; -- Data de fabricação
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS estoque_minimo INTEGER DEFAULT 0; -- Estoque mínimo para alerta
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS estoque_maximo INTEGER; -- Estoque máximo
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS ponto_reposicao INTEGER; -- Ponto de reposição
|
|
||||||
|
|
||||||
-- Preços e custos detalhados
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS preco_promocional DECIMAL(15,2); -- Preço promocional
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS promocao_inicio TIMESTAMPTZ; -- Início da promoção
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS promocao_fim TIMESTAMPTZ; -- Fim da promoção
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS custo_frete DECIMAL(15,2); -- Custo médio de frete
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS margem_lucro DECIMAL(5,2); -- Margem de lucro %
|
|
||||||
|
|
||||||
-- Campos Stone específicos
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS stone_item_id VARCHAR(100); -- ID do item na Stone
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS stone_category_id VARCHAR(100); -- ID da categoria na Stone
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS stone_metadata JSONB DEFAULT '{}'; -- Metadados Stone
|
|
||||||
|
|
||||||
-- SEO e busca
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS slug VARCHAR(255); -- URL amigável
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS meta_title VARCHAR(255); -- Título para SEO
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS meta_description TEXT; -- Descrição para SEO
|
|
||||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS tags TEXT[]; -- Tags para busca
|
|
||||||
|
|
||||||
-- Índices para novos campos
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_ncm ON products(ncm);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_gtin ON products(gtin);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_marca ON products(marca);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_slug ON products(slug);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_validade ON products(data_validade);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_products_stone_item ON products(stone_item_id);
|
|
||||||
|
|
||||||
-- Também adicionar campos similares nas variantes
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS gtin VARCHAR(14);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS peso_liquido DECIMAL(10,3);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS peso_bruto DECIMAL(10,3);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS largura DECIMAL(10,2);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS altura DECIMAL(10,2);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS comprimento DECIMAL(10,2);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS cor VARCHAR(50);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS tamanho VARCHAR(20);
|
|
||||||
ALTER TABLE product_variants ADD COLUMN IF NOT EXISTS images JSONB DEFAULT '[]';
|
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_product_variants_gtin ON product_variants(gtin);
|
|
||||||
|
|
@ -983,55 +983,55 @@ diesel::table! {
|
||||||
barcode -> Nullable<Varchar>,
|
barcode -> Nullable<Varchar>,
|
||||||
created_at -> Timestamptz,
|
created_at -> Timestamptz,
|
||||||
updated_at -> Timestamptz,
|
updated_at -> Timestamptz,
|
||||||
// Campos fiscais e tributários (Stone/Brasil)
|
// Tax and fiscal identification
|
||||||
ncm -> Nullable<Varchar>,
|
tax_code -> Nullable<Varchar>,
|
||||||
cest -> Nullable<Varchar>,
|
tax_class -> Nullable<Varchar>,
|
||||||
cfop -> Nullable<Varchar>,
|
fiscal_code -> Nullable<Varchar>,
|
||||||
origem -> Nullable<Int4>,
|
origin_code -> Nullable<Int4>,
|
||||||
gtin -> Nullable<Varchar>,
|
global_trade_number -> Nullable<Varchar>,
|
||||||
gtin_tributavel -> Nullable<Varchar>,
|
tax_unit_code -> Nullable<Varchar>,
|
||||||
// Dimensões detalhadas (frete)
|
// Detailed dimensions (shipping)
|
||||||
peso_liquido -> Nullable<Numeric>,
|
net_weight -> Nullable<Numeric>,
|
||||||
peso_bruto -> Nullable<Numeric>,
|
gross_weight -> Nullable<Numeric>,
|
||||||
largura -> Nullable<Numeric>,
|
width -> Nullable<Numeric>,
|
||||||
altura -> Nullable<Numeric>,
|
height -> Nullable<Numeric>,
|
||||||
comprimento -> Nullable<Numeric>,
|
length -> Nullable<Numeric>,
|
||||||
volumes -> Nullable<Int4>,
|
package_count -> Nullable<Int4>,
|
||||||
// Informações tributárias
|
// Tax rates by type
|
||||||
icms_cst -> Nullable<Varchar>,
|
sales_tax_code -> Nullable<Varchar>,
|
||||||
icms_aliquota -> Nullable<Numeric>,
|
sales_tax_rate -> Nullable<Numeric>,
|
||||||
ipi_cst -> Nullable<Varchar>,
|
excise_tax_code -> Nullable<Varchar>,
|
||||||
ipi_aliquota -> Nullable<Numeric>,
|
excise_tax_rate -> Nullable<Numeric>,
|
||||||
pis_cst -> Nullable<Varchar>,
|
vat_code -> Nullable<Varchar>,
|
||||||
pis_aliquota -> Nullable<Numeric>,
|
vat_rate -> Nullable<Numeric>,
|
||||||
cofins_cst -> Nullable<Varchar>,
|
service_tax_code -> Nullable<Varchar>,
|
||||||
cofins_aliquota -> Nullable<Numeric>,
|
service_tax_rate -> Nullable<Numeric>,
|
||||||
// Marketplace e e-commerce
|
// Marketplace and e-commerce
|
||||||
marca -> Nullable<Varchar>,
|
brand -> Nullable<Varchar>,
|
||||||
modelo -> Nullable<Varchar>,
|
model -> Nullable<Varchar>,
|
||||||
cor -> Nullable<Varchar>,
|
color -> Nullable<Varchar>,
|
||||||
tamanho -> Nullable<Varchar>,
|
size -> Nullable<Varchar>,
|
||||||
material -> Nullable<Varchar>,
|
material -> Nullable<Varchar>,
|
||||||
genero -> Nullable<Varchar>,
|
gender -> Nullable<Varchar>,
|
||||||
// Controle de estoque avançado
|
// Advanced inventory control
|
||||||
localizacao_estoque -> Nullable<Varchar>,
|
warehouse_location -> Nullable<Varchar>,
|
||||||
lote -> Nullable<Varchar>,
|
batch_number -> Nullable<Varchar>,
|
||||||
data_validade -> Nullable<Date>,
|
expiration_date -> Nullable<Date>,
|
||||||
data_fabricacao -> Nullable<Date>,
|
manufacture_date -> Nullable<Date>,
|
||||||
estoque_minimo -> Nullable<Int4>,
|
min_stock -> Nullable<Int4>,
|
||||||
estoque_maximo -> Nullable<Int4>,
|
max_stock -> Nullable<Int4>,
|
||||||
ponto_reposicao -> Nullable<Int4>,
|
reorder_point -> Nullable<Int4>,
|
||||||
// Preços e custos detalhados
|
// Detailed pricing
|
||||||
preco_promocional -> Nullable<Numeric>,
|
sale_price -> Nullable<Numeric>,
|
||||||
promocao_inicio -> Nullable<Timestamptz>,
|
sale_start -> Nullable<Timestamptz>,
|
||||||
promocao_fim -> Nullable<Timestamptz>,
|
sale_end -> Nullable<Timestamptz>,
|
||||||
custo_frete -> Nullable<Numeric>,
|
shipping_cost -> Nullable<Numeric>,
|
||||||
margem_lucro -> Nullable<Numeric>,
|
profit_margin -> Nullable<Numeric>,
|
||||||
// Campos Stone específicos
|
// Payment gateway integration
|
||||||
stone_item_id -> Nullable<Varchar>,
|
external_id -> Nullable<Varchar>,
|
||||||
stone_category_id -> Nullable<Varchar>,
|
external_category_id -> Nullable<Varchar>,
|
||||||
stone_metadata -> Nullable<Jsonb>,
|
external_metadata -> Nullable<Jsonb>,
|
||||||
// SEO e busca
|
// SEO and search
|
||||||
slug -> Nullable<Varchar>,
|
slug -> Nullable<Varchar>,
|
||||||
meta_title -> Nullable<Varchar>,
|
meta_title -> Nullable<Varchar>,
|
||||||
meta_description -> Nullable<Text>,
|
meta_description -> Nullable<Text>,
|
||||||
|
|
@ -1133,15 +1133,15 @@ diesel::table! {
|
||||||
attributes -> Jsonb,
|
attributes -> Jsonb,
|
||||||
is_active -> Bool,
|
is_active -> Bool,
|
||||||
created_at -> Timestamptz,
|
created_at -> Timestamptz,
|
||||||
// Stone/Brasil fields
|
// Extended variant fields
|
||||||
gtin -> Nullable<Varchar>,
|
global_trade_number -> Nullable<Varchar>,
|
||||||
peso_liquido -> Nullable<Numeric>,
|
net_weight -> Nullable<Numeric>,
|
||||||
peso_bruto -> Nullable<Numeric>,
|
gross_weight -> Nullable<Numeric>,
|
||||||
largura -> Nullable<Numeric>,
|
width -> Nullable<Numeric>,
|
||||||
altura -> Nullable<Numeric>,
|
height -> Nullable<Numeric>,
|
||||||
comprimento -> Nullable<Numeric>,
|
length -> Nullable<Numeric>,
|
||||||
cor -> Nullable<Varchar>,
|
color -> Nullable<Varchar>,
|
||||||
tamanho -> Nullable<Varchar>,
|
size -> Nullable<Varchar>,
|
||||||
images -> Nullable<Jsonb>,
|
images -> Nullable<Jsonb>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,55 +48,55 @@ pub struct Product {
|
||||||
pub barcode: Option<String>,
|
pub barcode: Option<String>,
|
||||||
pub created_at: DateTime<Utc>,
|
pub created_at: DateTime<Utc>,
|
||||||
pub updated_at: DateTime<Utc>,
|
pub updated_at: DateTime<Utc>,
|
||||||
// Campos fiscais e tributários (Stone/Brasil)
|
// Tax and fiscal identification
|
||||||
pub ncm: Option<String>,
|
pub tax_code: Option<String>,
|
||||||
pub cest: Option<String>,
|
pub tax_class: Option<String>,
|
||||||
pub cfop: Option<String>,
|
pub fiscal_code: Option<String>,
|
||||||
pub origem: Option<i32>,
|
pub origin_code: Option<i32>,
|
||||||
pub gtin: Option<String>,
|
pub global_trade_number: Option<String>,
|
||||||
pub gtin_tributavel: Option<String>,
|
pub tax_unit_code: Option<String>,
|
||||||
// Dimensões detalhadas (frete)
|
// Detailed dimensions (shipping)
|
||||||
pub peso_liquido: Option<BigDecimal>,
|
pub net_weight: Option<BigDecimal>,
|
||||||
pub peso_bruto: Option<BigDecimal>,
|
pub gross_weight: Option<BigDecimal>,
|
||||||
pub largura: Option<BigDecimal>,
|
pub width: Option<BigDecimal>,
|
||||||
pub altura: Option<BigDecimal>,
|
pub height: Option<BigDecimal>,
|
||||||
pub comprimento: Option<BigDecimal>,
|
pub length: Option<BigDecimal>,
|
||||||
pub volumes: Option<i32>,
|
pub package_count: Option<i32>,
|
||||||
// Informações tributárias
|
// Tax rates by type
|
||||||
pub icms_cst: Option<String>,
|
pub sales_tax_code: Option<String>,
|
||||||
pub icms_aliquota: Option<BigDecimal>,
|
pub sales_tax_rate: Option<BigDecimal>,
|
||||||
pub ipi_cst: Option<String>,
|
pub excise_tax_code: Option<String>,
|
||||||
pub ipi_aliquota: Option<BigDecimal>,
|
pub excise_tax_rate: Option<BigDecimal>,
|
||||||
pub pis_cst: Option<String>,
|
pub vat_code: Option<String>,
|
||||||
pub pis_aliquota: Option<BigDecimal>,
|
pub vat_rate: Option<BigDecimal>,
|
||||||
pub cofins_cst: Option<String>,
|
pub service_tax_code: Option<String>,
|
||||||
pub cofins_aliquota: Option<BigDecimal>,
|
pub service_tax_rate: Option<BigDecimal>,
|
||||||
// Marketplace e e-commerce
|
// Marketplace and e-commerce
|
||||||
pub marca: Option<String>,
|
pub brand: Option<String>,
|
||||||
pub modelo: Option<String>,
|
pub model: Option<String>,
|
||||||
pub cor: Option<String>,
|
pub color: Option<String>,
|
||||||
pub tamanho: Option<String>,
|
pub size: Option<String>,
|
||||||
pub material: Option<String>,
|
pub material: Option<String>,
|
||||||
pub genero: Option<String>,
|
pub gender: Option<String>,
|
||||||
// Controle de estoque avançado
|
// Advanced inventory control
|
||||||
pub localizacao_estoque: Option<String>,
|
pub warehouse_location: Option<String>,
|
||||||
pub lote: Option<String>,
|
pub batch_number: Option<String>,
|
||||||
pub data_validade: Option<chrono::NaiveDate>,
|
pub expiration_date: Option<chrono::NaiveDate>,
|
||||||
pub data_fabricacao: Option<chrono::NaiveDate>,
|
pub manufacture_date: Option<chrono::NaiveDate>,
|
||||||
pub estoque_minimo: Option<i32>,
|
pub min_stock: Option<i32>,
|
||||||
pub estoque_maximo: Option<i32>,
|
pub max_stock: Option<i32>,
|
||||||
pub ponto_reposicao: Option<i32>,
|
pub reorder_point: Option<i32>,
|
||||||
// Preços e custos detalhados
|
// Detailed pricing
|
||||||
pub preco_promocional: Option<BigDecimal>,
|
pub sale_price: Option<BigDecimal>,
|
||||||
pub promocao_inicio: Option<DateTime<Utc>>,
|
pub sale_start: Option<DateTime<Utc>>,
|
||||||
pub promocao_fim: Option<DateTime<Utc>>,
|
pub sale_end: Option<DateTime<Utc>>,
|
||||||
pub custo_frete: Option<BigDecimal>,
|
pub shipping_cost: Option<BigDecimal>,
|
||||||
pub margem_lucro: Option<BigDecimal>,
|
pub profit_margin: Option<BigDecimal>,
|
||||||
// Campos Stone específicos
|
// Payment gateway integration
|
||||||
pub stone_item_id: Option<String>,
|
pub external_id: Option<String>,
|
||||||
pub stone_category_id: Option<String>,
|
pub external_category_id: Option<String>,
|
||||||
pub stone_metadata: Option<serde_json::Value>,
|
pub external_metadata: Option<serde_json::Value>,
|
||||||
// SEO e busca
|
// SEO and search
|
||||||
pub slug: Option<String>,
|
pub slug: Option<String>,
|
||||||
pub meta_title: Option<String>,
|
pub meta_title: Option<String>,
|
||||||
pub meta_description: Option<String>,
|
pub meta_description: Option<String>,
|
||||||
|
|
@ -198,15 +198,15 @@ pub struct ProductVariant {
|
||||||
pub attributes: serde_json::Value,
|
pub attributes: serde_json::Value,
|
||||||
pub is_active: bool,
|
pub is_active: bool,
|
||||||
pub created_at: DateTime<Utc>,
|
pub created_at: DateTime<Utc>,
|
||||||
// Stone/Brasil fields
|
// Extended variant fields
|
||||||
pub gtin: Option<String>,
|
pub global_trade_number: Option<String>,
|
||||||
pub peso_liquido: Option<BigDecimal>,
|
pub net_weight: Option<BigDecimal>,
|
||||||
pub peso_bruto: Option<BigDecimal>,
|
pub gross_weight: Option<BigDecimal>,
|
||||||
pub largura: Option<BigDecimal>,
|
pub width: Option<BigDecimal>,
|
||||||
pub altura: Option<BigDecimal>,
|
pub height: Option<BigDecimal>,
|
||||||
pub comprimento: Option<BigDecimal>,
|
pub length: Option<BigDecimal>,
|
||||||
pub cor: Option<String>,
|
pub color: Option<String>,
|
||||||
pub tamanho: Option<String>,
|
pub size: Option<String>,
|
||||||
pub images: Option<serde_json::Value>,
|
pub images: Option<serde_json::Value>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue