<?php
//
// Scripts SQL das respectivas versões
//
$sVersao_Minima_SQL  = "18.05.29";
//
$aScriptsSQL_Versoes = [
   '18.06.04' =>
     [ "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('TICKET_CONFERENCIA_LOCAL','0');"
     ]
   , //
   '18.06.28' =>
     [ "ALTER TABLE fat_item ADD COLUMN FAT_TOT_CORTESIA DECIMAL(13,2) NOT NULL COMMENT 'Total do Produto + Opcionais + Combo, antes de aplicar a cortesia';"
     ,
       "ALTER TABLE fat_item ADD COLUMN FAT_E_CORTESIA TINYINT(1) NOT NULL COMMENT 'Marca se o produto é um produto aplicado cortesia';"
     ,
       "ALTER TABLE fat_item ADD COLUMN FAT_COD_OPE_CORTESIA varchar(10) NOT NULL COMMENT 'Operador que aplicou a Cortesia para este produto';"
     ,
       "ALTER TABLE fat_item ADD COLUMN FAT_DAT_HOR_CORTESIA DATETIME NOT NULL COMMENT 'Data Hora que aplicou a Cortesia para este produto';"
     ]
   , //
   '18.07.26' =>
     [ "ALTER TABLE fat_geral ".
         "CHANGE FAT_STATUS  FAT_STATUS  INT(2) DEFAULT '1' NOT NULL COMMENT 'Status da Order no Delivery Express - Status do pedido. 0 = Novo Pedido, 1 = Confirmado, 2 = Entregue, 3 = Cancelado (restaurante), 4 = Enviado, 5 = Cancelado Automaticamente (sistema), 6 = Cancelado, com Pagamento Estornado (restaurante), 7 = Cancelado Automaticamente, com Pagamento Estornado (sistema)',".
         "CHANGE FAT_PREVENT FAT_PREVENT TIME   NOT NULL  COMMENT 'Previsao de entrega, Horario previsto para entrega do delivery, campo nao obrigatorio',".
         "CHANGE FAT_TIPOORI FAT_TIPOORI INT(1) NOT NULL  COMMENT 'Tipo original da venda, confirmacao que antes era um consignado';"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('NOME_CONSIGNADOS','Consignado');"
     ,
       "ALTER TABLE cad_produto ADD COLUMN ITE_IMP_UNIT TINYINT NOT NULL DEFAULT 0 COMMENT 'Imprime Ticket de produção unitario? 1=SIM  0=Não';"
     ,
       "ALTER TABLE cad_produto ADD COLUMN ITE_IMP_CNFR TINYINT NOT NULL DEFAULT 0 COMMENT 'Imprime Ticket de conferência? 1=SIM  0=Não';"
     ,
       "DELETE FROM config WHERE VAR_NOME='TICKET_PRODUCAO_DESAGRU_ITENS';"
     ]
   , //
   '18.08.03' =>
     [ "ALTER TABLE cad_produto ".
         "ADD COLUMN ITE_ANP_DESCRI CHAR(50)     NOT NULL COMMENT 'Descrição conforme a ANP' AFTER ITE_COD_NCM,".
         "ADD COLUMN ITE_ANP_PRCGLP DECIMAL(6,2) NOT NULL COMMENT 'Percentual do GLP derivado do petróleo' AFTER ITE_ANP_DESCRI,".
         "ADD COLUMN ITE_ANP_V_PART DECIMAL(8,2) NOT NULL COMMENT 'Valor de partida: deve ser informado neste campo o valor por quilograma sem ICMS' AFTER ITE_ANP_PRCGLP;"
     ,
       "ALTER TABLE fat_geral ".
         "ADD COLUMN FAT_DELIVERYAPP_CPF VARCHAR(15) NOT NULL COMMENT 'CPF para emissão de cupom fiscal. Vindo da importação Delivery Express';"
     ]
   , //
   '18.08.24' =>
     [ "ALTER TABLE fat_geral ".
         "ADD COLUMN FAT_IDORDER_IFOOD VARCHAR(36) NOT NULL COMMENT 'Codigo de Identificação do ifood Delivery Express';"
     ,
       "ALTER TABLE fat_item ".
         "ADD COLUMN FAT_MOT_CORTESIA  VARCHAR(40) NOT NULL COMMENT 'Descrição do motivo da cortesia';"
     ,
       "ALTER TABLE cad_cfop_saida ".
         "ADD COLUMN CFO_FINALIDADE    SMALLINT    NOT NULL COMMENT '1 = NF-e normal, 2 = NF-e complementar, 3 = NF-e de ajuste, 4 = Devolução' ".
             "AFTER  CFO_OBSERV;"
     ,
       "UPDATE cad_cfop_saida SET CFO_FINALIDADE=1;"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('REC_MOTIVO_DESCONTO','0');"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('ECOOK_ZERAR_COMANDAS','1');"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('ECOOK_EFETUAR_BKP_ATRASADO','1');"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('GARCOM_OBG_QTDE_PESSOAS','0');"
     ]
   , //
   '18.08.31' =>
     [ "ALTER TABLE cad_produto DROP COLUMN ITE_ANP_V_PART;"
     ]
   , //
   '18.09.06' =>
     [ "ALTER TABLE est_entrada_itens CHANGE ETD_UNI_ITE ETD_UNI_ITE DECIMAL(12,4) NOT NULL COMMENT 'Valor do preço unitário de compra';"
     ,
       "ALTER TABLE cad_produto_fornecedor ".
         "ADD COLUMN PFO_CODFAB CHAR(20) NOT NULL COMMENT 'Código de Fábrica do Produto',".
         "ADD COLUMN PFO_NUMDOC CHAR(20) NOT NULL COMMENT 'Numero da NFe ref. a Entrada',".
         "ADD COLUMN PFO_CODEMP INT(4)   NOT NULL COMMENT 'Código da empresa que foi utilizada para entrada',".
         "ADD COLUMN PFO_FUNENT INT(4)   NOT NULL COMMENT 'Código do operador que deu entrada na nota).',".
         "ADD COLUMN PFO_ESPDOC INT(2)   NOT NULL COMMENT 'Espécie do documento';"
     ,
       "DROP TABLE forite;"
     ]
   ,
   '18.10.02' =>
     [ "ALTER TABLE cad_produto ".
         "ADD COLUMN ITE_QTD_OPC_MIN TINYINT(2) NOT NULL COMMENT 'Quantidade mínima de opcionais na venda',".
         "ADD COLUMN ITE_QTD_OPC_MAX TINYINT(2) NOT NULL COMMENT 'Quantidade máxima de opcionais na venda';"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('AGRUPA_TICKET_PRODUCAO_GRUPO','0');"
     ]
   , //
   '18.10.11' =>
     [ "CREATE TABLE mov_manifesto_destinatario (".
         "MDE_CODIGOI     INT(11)       NOT NULL AUTO_INCREMENT COMMENT 'Código Incremental',".
         "MDE_CNPJ        VARCHAR(20)   NOT NULL COMMENT 'Cnpj do Fornecedor',".
         "MDE_FORNECEDOR  VARCHAR(100)  NOT NULL COMMENT 'Nome do Fornecedor',".
         "MDE_VALOR       DECIMAL(10,0) NOT NULL COMMENT 'Valor do documento Fiscal',".
         "MDE_CHAVE       VARCHAR(50)   NOT NULL COMMENT 'Chave do Documento Fiscal',".
         "MDE_USU         VARCHAR(20)   NOT NULL COMMENT 'Código Interno do DFe',".
         "MDE_STATUS      INT(11)       NOT NULL COMMENT 'Status (0 Sem Manifestação 1 Aceite 2 Rejeitado)',".
         "MDE_CODFUN      VARCHAR(5)    NOT NULL COMMENT 'Código do Funcionário que Importou os documentos',".
         "MDE_DTACAD      DATETIME      NOT NULL COMMENT 'Data de Cadastro',".
         "PRIMARY KEY MDE_CODIGOI (MDE_CODIGOI)".
       ");"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('NFCE_EM_CONTINGENCIA','0');"
     ,
       "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('NFCE_EM_CONTINGENCIA_JUSTIFICA','');"
     ,
       "ALTER TABLE fiscal_geral ".
         "ADD COLUMN FSC_NFCE_EM_CONTINGENCIA       TINYINT     NOT NULL COMMENT 'Nfce emitida em contigência 0 = Não / 1 = Sim',".
         "ADD COLUMN FSC_DATAHORA_CONTINGENCIA      DATETIME    NOT NULL COMMENT 'Data que foi feito o nfce em contigência',".
         "ADD COLUMN FSC_JUSTIFICATIVA_CONTINGENCIA VARCHAR(40) NOT NULL COMMENT 'Justificativa da entrada em contigência';"
     ]
   , //
   '18.10.18' =>
     [ "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('ACUMULA_PRODUTOS_IGUAIS_VENDA','0');"
     ]
   , //
   '18.10.25' =>
     [ "ALTER TABLE cad_cliente CHANGE CLI_ENDCPL CLI_ENDCPL VARCHAR(30) NOT NULL COMMENT 'Complemento do endereço';"
     ]
   , //
   '18.11.06' =>
     [ "ALTER TABLE cad_empresa ".
         "ADD COLUMN EMP_NFE_SERIE TINYINT DEFAULT 1 NOT NULL COMMENT 'Número de série da emissão de nfe';"
     ]
   , //
   '18.11.08' =>
     [ "ALTER TABLE cad_empresa ".
         "ADD EMP_NUMERO_PROX_NFE  INT NOT NULL COMMENT 'Proximo Número de emissão de NFE';"
     ,
       "ALTER TABLE cad_empresa ".
         "ADD EMP_NUMERO_PROX_NFCE INT NOT NULL COMMENT 'Proximo Número de emissão de NFCE';"
     ,
       "UPDATE cad_empresa AS emp, ".
         "( SELECT VAR_CONTEUDO FROM config".
         "  WHERE VAR_NOME = 'NUMERO_PROX_NFE'".
         ") AS cfg ".
       "SET ".
         "emp.EMP_NUMERO_PROX_NFE = cfg.VAR_CONTEUDO ".
       "WHERE ".
       "emp.EMP_CODIGOI = 1;"
     ,
       "UPDATE cad_empresa AS emp, ".
         "( SELECT VAR_CONTEUDO FROM config".
         "  WHERE VAR_NOME = 'NFC_SEQ_COD'".
         ") AS cfg ".
       "SET ".
         "emp.EMP_NUMERO_PROX_NFCE = cfg.VAR_CONTEUDO ".
       "WHERE ".
       "emp.EMP_CODIGOI = 1;"
     ,
       "DELETE FROM config WHERE VAR_NOME='NFC_SEQ_COD';"
     ,
       "DELETE FROM config WHERE VAR_NOME='NUMERO_PROX_NFE';"
     ]
   , //
   '18.12.04' =>
     [ "ALTER TABLE fat_item ADD FAT_LOCAL_CANCELAMENTO VARCHAR(60) NOT NULL COMMENT 'Equipamento que cancelou o item (IP / Nome do pc)';"
     ]
   , //
   '19.01.17' =>
   [ "ALTER TABLE cad_promocao_itens ".
       "ADD COLUMN CPI_HRSM1_HABI  TINYINT NOT NULL  COMMENT 'Habilita para domingo'              AFTER CPI_DATAFINAL,".
       "ADD COLUMN CPI_HRSM1_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para domingo'       ,".
       "ADD COLUMN CPI_HRSM1_FIM1  TIME    NOT NULL  COMMENT 'Horário final para domingo'         ,".
       "ADD COLUMN CPI_HRSM1_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para domingo'       ,".
       "ADD COLUMN CPI_HRSM1_FIM2  TIME    NOT NULL  COMMENT 'Horário final para domingo'         ,".
       "ADD COLUMN CPI_HRSM2_HABI  TINYINT NOT NULL  COMMENT 'Habilita para segunda-feira'        ,".
       "ADD COLUMN CPI_HRSM2_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para segunda-feira' ,".
       "ADD COLUMN CPI_HRSM2_FIM1  TIME    NOT NULL  COMMENT 'Horário final para segunda-feira'   ,".
       "ADD COLUMN CPI_HRSM2_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para segunda-feira' ,".
       "ADD COLUMN CPI_HRSM2_FIM2  TIME    NOT NULL  COMMENT 'Horário final para segunda-feira'   ,".
       "ADD COLUMN CPI_HRSM3_HABI  TINYINT NOT NULL  COMMENT 'Habilita para terça-feira'          ,".
       "ADD COLUMN CPI_HRSM3_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para terça-feira'   ,".
       "ADD COLUMN CPI_HRSM3_FIM1  TIME    NOT NULL  COMMENT 'Horário final para terça-feira'     ,".
       "ADD COLUMN CPI_HRSM3_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para terça-feira'   ,".
       "ADD COLUMN CPI_HRSM3_FIM2  TIME    NOT NULL  COMMENT 'Horário final para terça-feira'     ,".
       "ADD COLUMN CPI_HRSM4_HABI  TINYINT NOT NULL  COMMENT 'Habilita para quarta-feira'         ,".
       "ADD COLUMN CPI_HRSM4_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para quarta-feira'  ,".
       "ADD COLUMN CPI_HRSM4_FIM1  TIME    NOT NULL  COMMENT 'Horário final para quarta-feira'    ,".
       "ADD COLUMN CPI_HRSM4_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para quarta-feira'  ,".
       "ADD COLUMN CPI_HRSM4_FIM2  TIME    NOT NULL  COMMENT 'Horário final para quarta-feira'    ,".
       "ADD COLUMN CPI_HRSM5_HABI  TINYINT NOT NULL  COMMENT 'Habilita para quinta-feira'         ,".
       "ADD COLUMN CPI_HRSM5_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para quinta-feira'  ,".
       "ADD COLUMN CPI_HRSM5_FIM1  TIME    NOT NULL  COMMENT 'Horário final para quinta-feira'    ,".
       "ADD COLUMN CPI_HRSM5_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para quinta-feira'  ,".
       "ADD COLUMN CPI_HRSM5_FIM2  TIME    NOT NULL  COMMENT 'Horário final para quinta-feira'    ,".
       "ADD COLUMN CPI_HRSM6_HABI  TINYINT NOT NULL  COMMENT 'Habilita para sexta-feira'          ,".
       "ADD COLUMN CPI_HRSM6_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para sexta-feira'   ,".
       "ADD COLUMN CPI_HRSM6_FIM1  TIME    NOT NULL  COMMENT 'Horário final para sexta-feira'     ,".
       "ADD COLUMN CPI_HRSM6_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para sexta-feira'   ,".
       "ADD COLUMN CPI_HRSM6_FIM2  TIME    NOT NULL  COMMENT 'Horário final para sexta-feira'     ,".
       "ADD COLUMN CPI_HRSM7_HABI  TINYINT NOT NULL  COMMENT 'Habilita para sábado'               ,".
       "ADD COLUMN CPI_HRSM7_INI1  TIME    NOT NULL  COMMENT 'Horário inicial para sábado'        ,".
       "ADD COLUMN CPI_HRSM7_FIM1  TIME    NOT NULL  COMMENT 'Horário final para sábado'          ,".
       "ADD COLUMN CPI_HRSM7_INI2  TIME    NOT NULL  COMMENT 'Horário inicial para sábado'        ,".
       "ADD COLUMN CPI_HRSM7_FIM2  TIME    NOT NULL  COMMENT 'Horário final para sábado'          ;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM1_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=1 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM2_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=2 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM3_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=3 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM4_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=4 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM5_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=5 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM6_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=6 AND CPI_TIP_TABEL=0;"
     ,
     "UPDATE cad_promocao_itens SET CPI_HRSM7_HABI=1, CPI_DIASEMANA=0 WHERE CPI_DIASEMANA=7 AND CPI_TIP_TABEL=0;"
     ,
     "ALTER TABLE mov_caixa ".
       "CHANGE MVC_TIPOMOV MVC_TIPOMOV TINYINT NOT NULL ".
       "COMMENT 'Tipo do movimento, 0=Abrir, 1=Fechar, 2=Sangria, 3=Crédito (mais troco), 4=Recebimento de contas á receber, 5=Conferência de caixa, 6=Lançamento de Crédito';"
   ]
 , //
 '19.01.30' =>
   [ "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('LICENCA_SOFTWARES_SIMSOFT','');"
   ,
     "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('CFG_T_D_P','');"
   ,
     "DROP FUNCTION IF EXISTS FUNC_RETORNA_TOTAL_CUSTO_PRODUTO; "
   ,
     "CREATE FUNCTION FUNC_RETORNA_TOTAL_CUSTO_PRODUTO( VS_TIPO VARCHAR( 1 ), VI_FAT_ITEM_CODIGO_I INT ) RETURNS DOUBLE ".
     "BEGIN ".
       "DECLARE VR_CUSTO_1 REAL DEFAULT 0; ".
       "DECLARE VR_CUSTO_2 REAL DEFAULT 0; ".
       "DECLARE VR_CUSTO_3 REAL DEFAULT 0; ".
       "DECLARE VR_CUSTO_4 REAL DEFAULT 0; ".
       "DECLARE VI_CODIGO_I_1 INT; ".
       "DECLARE VI_CODIGO_I_2 INT; ".
       "DECLARE VI_CODIGO_I_3 INT; ".
       "DECLARE VI_CODIGO_I_4 INT; ".
       "DECLARE VI_PEDACOS INT  DEFAULT 0; ".
       "DECLARE VS_TAMANHO VARCHAR(1) DEFAULT 'N'; ".
       "SELECT fat_codite1, fat_codite2, fat_codite3, fat_codite4, fat_pre_tip INTO VI_CODIGO_I_1, VI_CODIGO_I_2, VI_CODIGO_I_3, VI_CODIGO_I_4, VS_TAMANHO FROM fat_item WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
       "IF VI_CODIGO_I_1 > 0 THEN ".
          "SET VI_PEDACOS = VI_PEDACOS + 1; ".
       "END IF; ".
       "IF VI_CODIGO_I_2 > 0 THEN ".
          "SET VI_PEDACOS = VI_PEDACOS + 1; ".
       "END IF; ".
       "IF VI_CODIGO_I_3 > 0 THEN ".
          "SET VI_PEDACOS = VI_PEDACOS + 1; ".
       "END IF; ".
       "IF VI_CODIGO_I_4 > 0 THEN ".
          "SET VI_PEDACOS = VI_PEDACOS + 1; ".
       "END IF; ".
       "IF VI_PEDACOS = 0 THEN ".
          "SET VI_PEDACOS = 1; ".
       "END IF; ".
       "IF VI_CODIGO_I_1 > 0 THEN ".
          "SELECT COALESCE( FUNC_RETORNA_CUSTO_PRODUTO( VI_CODIGO_I_1 ,VS_TAMANHO  ), 0 ) / VI_PEDACOS INTO VR_CUSTO_1; ".
          "IF VS_TIPO = 'U' THEN ".
             "UPDATE fat_item SET FAT_CUS_001 = VR_CUSTO_1  WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
          "END IF; ".
       "END IF; ".
       "IF VI_CODIGO_I_2 > 0 THEN ".
          "SELECT COALESCE( FUNC_RETORNA_CUSTO_PRODUTO( VI_CODIGO_I_2 ,VS_TAMANHO  ), 0 ) / VI_PEDACOS INTO VR_CUSTO_2; ".
          "IF VS_TIPO = 'U' THEN ".
              "UPDATE fat_item SET FAT_CUS_002 = VR_CUSTO_2  WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
          "END IF; ".
       "END IF; ".
       "IF VI_CODIGO_I_3 > 0 THEN ".
           "SELECT COALESCE( FUNC_RETORNA_CUSTO_PRODUTO( VI_CODIGO_I_3 ,VS_TAMANHO  ), 0 ) / VI_PEDACOS INTO VR_CUSTO_3; ".
           "IF VS_TIPO = 'U' THEN ".
               "UPDATE fat_item SET FAT_CUS_003 = VR_CUSTO_3  WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
           "END IF; ".
       "END IF; ".
       "IF VI_CODIGO_I_4 > 0 THEN ".
           "SELECT COALESCE( FUNC_RETORNA_CUSTO_PRODUTO( VI_CODIGO_I_4 ,VS_TAMANHO  ), 0 ) / VI_PEDACOS INTO VR_CUSTO_4; ".
           "IF VS_TIPO = 'U' THEN ".
               "UPDATE fat_item SET FAT_CUS_004 = VR_CUSTO_4  WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
           "END IF; ".
       "END IF; ".
       "IF VS_TIPO = 'U' THEN ".
          "UPDATE fat_item SET FAT_TOTCUST = ROUND( VR_CUSTO_1+VR_CUSTO_2+VR_CUSTO_3+VR_CUSTO_4, 2 )  WHERE fat_codigoi = VI_FAT_ITEM_CODIGO_I; ".
	      "RETURN( '0' ); ".
       "ELSEIF VS_TIPO = 'R' THEN ".
          "RETURN( ROUND( VR_CUSTO_1  + VR_CUSTO_2 + VR_CUSTO_3 + VR_CUSTO_4, 2 ) ); ".
       "ELSE ".
          "RETURN( NULL ); ".
       "END IF; ".
     "END"
    ,
     "DROP FUNCTION IF EXISTS FUNC_RETORNA_CUSTO_PRODUTO;"
    ,
     "CREATE FUNCTION FUNC_RETORNA_CUSTO_PRODUTO( VI_CODIGO_I INT, VS_TAMANHO VARCHAR(1) ) RETURNS DOUBLE ".
     "BEGIN ".
       "DECLARE VR_CUSTO REAL DEFAULT 0; ".
       "IF VI_CODIGO_I = 0 THEN ".
           "RETURN ( 0 ); ".
       "END IF; ".
       "IF (VS_TAMANHO = 'I' ) OR ( VS_TAMANHO = 'N' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUSTO_N AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSEIF ( VS_TAMANHO = 'M' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUSTO_M AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSEIF ( VS_TAMANHO = '1' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUS_001 AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSEIF ( VS_TAMANHO = '2' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUS_002 AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSEIF ( VS_TAMANHO = '3' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUS_003 AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSEIF ( VS_TAMANHO = '4' ) THEN ".
           "SET VR_CUSTO = ( SELECT ITE_PRE_CUS_004 AS TOT_CUSTO FROM cad_produto WHERE ITE_CODIGOI = VI_CODIGO_I ); ".
       "ELSE ".
           "SET VR_CUSTO = NULL; ".
       "END IF; ".
       "RETURN( VR_CUSTO ); ".
     "END"
   ]
 , //
 '19.02.07' =>
   [ "CREATE OR REPLACE VIEW view_comandas_abertas AS ".
     "SELECT ".
       "fat_geral.FAT_NUM_MES AS FAT_NUM_MES,".
       "fat_geral.FAT_RCFORMA AS FAT_RCFORMA,".
       "fat_geral.FAT_DATAFIM AS FAT_DATAFIM,".
       "fat_geral.FAT_DAT_FIM AS FAT_DAT_FIM,".
       "fat_geral.FAT_DAT_INI AS FAT_DAT_INI,".
       "fat_geral.FAT_TOT_REC AS FAT_TOT_REC,".
       "fat_geral.FAT_ULTPED  AS FAT_ULTPED ,".
       "fat_geral.FAT_NOMCLIE AS FAT_NOMCLIE,".
       "fat_geral.FAT_CODIGOI AS FAT_CODIGOI,". 
       "fat_geral.FAT_SQCOMAN AS FAT_SQCOMAN,". 
       "fat_geral.FAT_TIP_LOC AS FAT_TIP_LOC,".
       "fat_geral.FAT_IDORDER AS FAT_IDORDER,".
       "fat_geral.FAT_TIPOORI AS FAT_TIPOORI,".
         "CASE ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 0 ) 	THEN 'Mesa' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 0 ) THEN 'Balcão' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 1 ) THEN 'Balcão' ".	 
          "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 2 ) THEN 'Levar' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 3 ) THEN 'Mesa' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 0 ) THEN 'Entregar' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 1 ) THEN 'Vem Buscar' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 3 ) THEN '??' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 3 ) THEN '??'	".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 4 ) THEN 'Enc-Entregar' ".
          "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 5 ) THEN 'Enc-Vem Buscar' ".
       "END AS FAT_TIPOVEN ".
     "FROM fat_geral ".
     "WHERE     ( fat_geral.FAT_TIP_LOC IN( 0,1,2 ) ) ".
           "AND ( fat_geral.FAT_RCFORMA = 0         ) ".
           "AND ( fat_geral.FAT_STATUS <> 0 OR fat_geral.FAT_STATUS IS NULL ) ".
           "AND ( fat_geral.FAT_CAN_DAT = 0         ) ".
     ";"
       //
   ]
 , //
 '19.02.19' =>
   [ "INSERT IGNORE INTO config SET VAR_NOME = 'SENHA_ALTERA_NFCE_CONTINGENCIA';"
   ,
     "INSERT IGNORE INTO config SET VAR_NOME = 'DATA_WEB_ULT_INTEGRACAO_REG';"
   ]
 , //
 '19.02.26' =>
   [ "INSERT IGNORE INTO config (VAR_NOME) VALUES ('ECOOK_COM_VAR_IP_PUB');"
   ]
 , //
 '19.02.27' =>
   [ "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) VALUES ('NOME_DO_ARQUIVO_SERIAL_USA','IP');"
   ]
 , //
 '19.03.15' =>
   [ "ALTER TABLE integrar_web ADD COLUMN INT_DATA_CADASTRO TIMESTAMP DEFAULT CURRENT_TIMESTAMP;"
   ]
 , //
 '19.03.19' =>
   [ "CREATE OR REPLACE VIEW view_comandas_abertas AS ".
     "SELECT ".
       "fat_geral.FAT_NUM_MES AS FAT_NUM_MES,".
       "fat_geral.FAT_RCFORMA AS FAT_RCFORMA,".
       "fat_geral.FAT_DATAFIM AS FAT_DATAFIM,".
       "fat_geral.FAT_DAT_FIM AS FAT_DAT_FIM,".
       "fat_geral.FAT_DAT_INI AS FAT_DAT_INI,".
       "fat_geral.FAT_TOT_REC AS FAT_TOT_REC,".
       "fat_geral.FAT_ULTPED  AS FAT_ULTPED ,".
       "fat_geral.FAT_NOMCLIE AS FAT_NOMCLIE,".
       "fat_geral.FAT_CODIGOI AS FAT_CODIGOI,". 
       "fat_geral.FAT_SQCOMAN AS FAT_SQCOMAN,". 
       "fat_geral.FAT_TIP_LOC AS FAT_TIP_LOC,".
       "fat_geral.FAT_IDORDER AS FAT_IDORDER,".
        "CASE ".
         "WHEN fat_geral.FAT_IDORDER_IFOOD = '' THEN '0' ".
         "ELSE fat_geral.FAT_IDORDER_IFOOD ".
         "END AS     FAT_IDORDER_IFOOD, ".
       "fat_geral.FAT_TIPOORI AS FAT_TIPOORI, ".
        "CASE ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 0 ) 	THEN 'Mesa' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 0 ) THEN 'Balcão' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 1 ) THEN 'Balcão' ".	 
         "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 2 ) THEN 'Levar' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 1 AND fat_geral.FAT_TIPOVEN = 3 ) THEN 'Mesa' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 0 ) THEN 'Entregar' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 1 ) THEN 'Vem Buscar' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 3 ) THEN '??' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 3 ) THEN '??'	".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 4 ) THEN 'Enc-Entregar' ".
         "WHEN ( fat_geral.FAT_TIP_LOC = 2 AND fat_geral.FAT_TIPOVEN = 5 ) THEN 'Enc-Vem Buscar' ".
       "END AS FAT_TIPOVEN ".
     "FROM fat_geral ".
     "WHERE     ( fat_geral.FAT_TIP_LOC IN( 0,1,2 ) ) ".
           "AND ( fat_geral.FAT_RCFORMA = 0         ) ".
           "AND ( fat_geral.FAT_STATUS <> 0 OR fat_geral.FAT_STATUS IS NULL ) ".
           "AND ( fat_geral.FAT_CAN_DAT = 0         ) ".
     ";"
   ]
 , //
 '19.05.02' =>
   [ "ALTER TABLE cad_produto_estoque ".
      "ADD COLUMN EST_SEQUEN INT(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Sequencia de registro' FIRST,".
      "DROP PRIMARY KEY,".
      "ADD PRIMARY KEY (EST_SEQUEN);"
   ,
     "ALTER TABLE cad_produto_fornecedor ".
      "ADD COLUMN PFO_SEQUEN INT(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Sequencia de registro' FIRST,".
      "DROP PRIMARY KEY,".
      "ADD PRIMARY KEY (PFO_SEQUEN);"
   ]
 , //
 '19.05.28' =>
   [ "INSERT IGNORE INTO config (VAR_NOME,VAR_CONTEUDO) values ('NEEMO_API_TOKEN','');"
   ]
 , //
 '19.05.31' =>
   [ "ALTER TABLE cad_cliente ADD CLI_REFERENCIA VARCHAR(60) COMMENT 'Ponto de referencia do endereco';"
   ]
 , //
 '19.07.04' =>
   [ "CREATE TABLE cad_bandeira (".
      "BAN_CODIGOI integer AUTO_INCREMENT PRIMARY KEY COMMENT 'Código interno da bandeira',".
      "BAN_NOME VARCHAR(20) NOT NULL UNIQUE COMMENT 'Nome da bandeira cadastrada'".
     ");"
     ,
     "CREATE TABLE cad_cartao (".
      "CAR_CODIGOI INTEGER AUTO_INCREMENT PRIMARY KEY COMMENT 'Código interno da bandeira',".
      "CAR_ATIVO CHAR(1) COMMENT 'S/N verifica se cadastro está ativo ou não',".
      "CAR_OPERADORA VARCHAR(60) NOT NULL COMMENT 'Nome da operadora',".
      "CAR_TAXA FLOAT(16,4) NOT NULL COMMENT 'Em porcentagem denconto acima da transação Max : 100 e Min : 0',".
      "CAR_TAXA_ADICIONAL FLOAT(16,4) NOT NULL COMMENT 'Em R$, é a taxa adicional paga a cada transação',".
      "CAR_COD_BANDEIRA INTEGER NOT NULL COMMENT 'Código da bandeira, busca da tabela cad_bandeira',".
      "CAR_PRAZO_DIAS SMALLINT NOT NULL COMMENT 'Prazo em dias para receber o valor',".
      "CAR_DIAS_EXCEDENTES SMALLINT COMMENT 'Dias excedentes na primeira parcela',".
      "CAR_SUGEST_PARCELAS SMALLINT COMMENT 'Sugestão de parcelas, irá apresentar no momento da venda',".
      "CAR_QUANT_MAX_PARCELAS SMALLINT COMMENT 'Quantidade maxima de parcelas aceitas na venda',".
      "CAR_COD_EMP INTEGER NOT NULL COMMENT 'Código da empresa que trabalha com o cartão',".
      "CAR_TIPO CHAR(1) NOT NULL COMMENT 'Tipo do cartão, D = Débito / C = Crédito',".
      "CAR_VALOR_MIN_PARCELA FLOAT(16,4) COMMENT 'Valor minimo da parcela',".
      "CAR_COD_ADMINISTRADORA VARCHAR(14) NOT NULL COMMENT 'Codigo da administradora do cartão, busca do cadastro de fornecedores',".
      "CAR_SPED CHAR(1) COMMENT 'Se o cartão vai para o sped S = Sim / N = Não',".
      "CAR_DATA_CADASTRO DATE COMMENT 'Data que o cartão foi cadastrado no sistema',".
      "CAR_NOME_REDE VARCHAR(70) COMMENT 'Qual a rede que está utilizando ex: amex, redecard',".
      "CAR_TIPO_TRANSACAO VARCHAR(10) COMMENT 'Código dos tipos de transacao vindo do tef',".
      "CAR_PORTADOR_BAIXA INTEGER NOT NULL COMMENT 'Seleciona qual o protador da baixa, procura no cadastro de contas correntes',".
      "CAR_PROTADOR_TAXA INTEGER NOT NULL COMMENT 'Seleciona qual o portador da taxa, procura no cadastro de contas correntes',".
      "CAR_CENTRO_CUS_TAXA_BAI INTEGER NOT NULL COMMENT 'Seleciona qual o centro de custo para taxa de baixa',".
      "CAR_CENTRO_CUS_BAIXA INTEGER NOT NULL COMMENT 'Seleciona qual o centro de custo para a baixa'".
     ");"
     ,
     "CREATE TABLE mov_cartao (".
      "MCA_CODIGOI INT AUTO_INCREMENT PRIMARY KEY COMMENT 'Código interno da movimentação de cartão',".
      "MCA_CODFATGER INT NOT NULL COMMENT 'Código de vinculação do movimento de cartão com a tabela fat_geral',".
      "MCA_QTD_CARTOES INT NOT NULL COMMENT 'Quantidade de cartões utilizados na venda',".
      "MCA_PARCELA INT NOT NULL COMMENT 'Qual é a parcela desse movimento',".
      "MCA_TOT_PARCELAS INT NOT NULL COMMENT 'Quantidade de parcelas que foi usada nesse movimento',".
      "MCA_EMPRESA INT NOT NULL COMMENT 'Qual a empresa que fez essa venda',".
      "MCA_OPERADOR INT NOT NULL COMMENT 'Operador que registrou o movimento de cartão',".
      "MCA_CLIENTE INT COMMENT 'Cliente setado na venda',".
      "MCA_NUM_LIBERACAO INT COMMENT 'Número de liberação',".
      "MCA_NSU INT COMMENT 'Número que se encontra na via do logista nas vendas de cartão feito nas maquinas',".
      "MCA_CARTAO INT NOT NULL COMMENT 'Código interno da tabela cad_cartao',".
      "MCA_BANDEIRA INT NOT NULL COMMENT 'Código interno da tabela cad_bandeira',".
      "MCA_DATA_RECEB DATE NOT NULL COMMENT 'Data do recebimento',".
      "MCA_DATA_VENCI DATE NOT NULL COMMENT 'Data do vencimento para receber essa venda Ex: data recebimento + Prazo da tabela cad_cartao',".
      "MCA_TAXA FLOAT(16,4) NOT NULL COMMENT 'Taxa em % pega da tabela cad_cartao',".
      "MCA_TAXA_ADICIONAL FLOAT(16,4) NOT NULL COMMENT 'Taxa adicional em R$ retirado da tabela cad_cartao',".
      "MCA_VALOR_DOCUMENTO FLOAT(16,4) NOT NULL COMMENT 'Valor total da venda no fat_geral',".
      "MCA_VALOR_CARTAO FLOAT(16,4) NOT NULL COMMENT 'Valor do valor pago pelo cartão na venda',".
      "MCA_VALOR_LIQUIDO FLOAT(16,4) NOT NULL COMMENT 'Valor total - (taxa + taxa adicional)',".
      "MCA_HISTORICO VARCHAR(100) NOT NULL COMMENT 'Campo aberto para escrever oque quiser',".
      "MCA_DATA_BAIXA DATE NOT NULL COMMENT 'Data que foi feito a baixa dessa movimentação',".
      "MCA_REC_BAIXA FLOAT(16,4) COMMENT 'Valor recebido na baixa do cartão',".
      "MCA_VALOR_TAXA_BAIXA FLOAT(16,4) COMMENT 'Valor da taxa paga na baixa',".
      "MCA_DOC_BANCA_DA_BAIXA INT COMMENT 'Número do documento bancario da baixa',".
      "MCA_DOC_BANCA_TAXA INT COMMENT 'Número do documento bancario da taxa',".
      "MCA_PORTADOR_BAIXA INT COMMENT 'Código do portador da baixa',".
      "MCA_PORTADOR_TAXA INT COMMENT 'Código do portador da taxa',".
      "MCA_CENTRO_CUS_BAIXA INT COMMENT 'Cód. do centro de custo da baixa',".
      "MCA_CENTRO_CUS_TAXA INT COMMENT 'Cód. do centro de custo da taxa'".
     ");"
     ,
     "INSERT INTO cad_especie_doc SET ESP_IDN_ESP = 4, ESP_DESCRIC = 'Baixa de Cartao', ESP_CHAVEOB = 0;"
     ,
     "ALTER TABLE FAT_GERAL ADD FAT_REFERENCIA_IFOOD VARCHAR(10) COMMENT 'Recebe o código de referencia de pedido ifood';"
     ,
     "ALTER TABLE cad_modalidade_pag ADD MPG_CARTAO TINYINT UNSIGNED COMMENT 'Verifica se a modalidade é cartão ou não (0 = Não / 1 = Sim)';"
     ,
     "ALTER TABLE est_movimento MODIFY ETM_QTDMOV decimal(20,3) NOT null;"
     ,
     "ALTER TABLE est_entrada_itens MODIFY ETD_QTD_ITE DECIMAL(20,3) NOT null;"
     ,
     "ALTER TABLE est_entrada_geral MODIFY ETG_I_TOTAL DECIMAL(25,3) NOT null;"
     ,
     "ALTER TABLE cad_produto_estoque MODIFY EST_SALDOS DECIMAL(25,3) NOT NULL;"
     ,
     "ALTER TABLE cad_produto_estoque MODIFY EST_ESTMIN DECIMAL(25,3) NOT NULL;"
     ,
     "ALTER TABLE cad_produto_estoque MODIFY EST_SALBAL DECIMAL(25,3) NOT NULL;"
   ]
 , //
 '19.08.05' =>
   [ "ALTER TABLE `cad_produto` ".
       "ADD COLUMN `ITE_DTHR_ALTERADO` DATETIME NOT NULL ".
       "DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP() ".
       "COMMENT 'Data e hora da última alteração' AFTER `ITE_QTD_OPC_MAX`;"
   ]
 , //
 '19.08.14' =>
   [ "ALTER TABLE cad_funcionario ".
       "ADD FUN_COD_EMP SMALLINT UNSIGNED COMMENT 'Campo com o código da empresa do funcionario';"
   ]
 , //
 '19.09.02' =>
   [ "CREATE TABLE cad_vinculo_ncm_cest (".
       "VIN_CODIGO SMALLINT    UNSIGNED  COMMENT 'Código único deste cadastro',".
       "VIN_N_CEST VARCHAR(10) NOT NULL  COMMENT 'Número CEST',".
       "VIN_N_NCM_ VARCHAR(8)  NOT NULL  COMMENT 'Número NCM',".
       "PRIMARY KEY (VIN_CODIGO)".
     ");"
	 ,
	 "ALTER TABLE fiscal_geral ".
	   "ADD FSC_CNF CHAR(8) COMMENT 'Guarda o número de cNF da nota fiscal';"
     ,
     "CREATE TABLE cad_bloq_mesa(".
	   "MES_NUMERO SMALLINT UNSIGNED NOT NULL COMMENT 'Numero da Mesa ou Comanda',".
	   "MES_MODDAT DATE NOT NULL COMMENT 'Data da ultima modificacao',".
	   "MES_OPERAD VARCHAR(4) NOT NULL COMMENT 'ID do operador que realizou a modificacao',".
	   "MES_DESCRI TINYTEXT COMMENT 'Motivo do bloqueio da mesa / comanda',".
	   "PRIMARY KEY(MES_NUMERO)".
     ");"
   ]
 //
 // ** Fim dos scripts **
 ];
//
//
//
?>