// *************************************************************************************** // ********************************** TABELA DE PEDIDOS ********************************** // *************************************************************************************** //ATRIBUI O NUMERO DO RECNO DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('SELECT MAX(R_E_C_N_O_)+1 AS RECNO FROM SL1010 '); DM.QUERYTEMP.OPEN; IF DM.QUERYTEMP.FIELDBYNAME('RECNO').AsInteger = 0 THEN BEGIN V_RECNO_PED := 1 END ELSE BEGIN V_RECNO_PED := DM.QUERYTEMP.FIELDBYNAME('RECNO').AsInteger; END; //FAZ O SELECT NA TABELA DE PEDIDOS DM.QPEDIDO.SQL.Clear; DM.QPEDIDO.SQL.Add('SELECT CHAVE, FILIAL, NPEDIDO, CODREPRESENTANTE, CLIENTE, LOJA, '); DM.QPEDIDO.SQL.Add('VALIDADE, CONDPGTO, FORMAPGTO, DESC_TOTAL, TOTAL '); DM.QPEDIDO.SQL.Add('FROM TBPALMPEDIDO '); DM.QPEDIDO.OPEN; //ATRIBUI O CODIGO DO REPRESENTANTE V_CODREPRESENTANTE := DM.QPEDIDO.FIELDBYNAME('CODREPRESENTANTE').AsString; V_FILIAL := DM.QPEDIDO.FIELDBYNAME('FILIAL').AsString; //ATRIBUI A FORMA DE PGTO IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Boleto' THEN BEGIN V_FORMAPGTO := 'BO'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Cobrad' THEN BEGIN V_FORMAPGTO := 'CR'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Cheque' THEN BEGIN V_FORMAPGTO := 'CH'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Losang' THEN BEGIN V_FORMAPGTO := 'CL'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Constr' THEN BEGIN V_FORMAPGTO := 'CM'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Cartei' THEN BEGIN V_FORMAPGTO := 'CR'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Duplic' THEN BEGIN V_FORMAPGTO := 'DP'; END; IF DM.QPEDIDO.FIELDBYNAME('FORMAPGTO').AsString = 'Dinhei' THEN BEGIN V_FORMAPGTO := 'R$'; END; //ATRIBUI A LOJA V_LOJA := V_FILIAL; //ATRIBUI O CLIENTE V_CLIENTE := DM.QPEDIDO.FIELDBYNAME('CLIENTE').AsString; //ATRIBUI A CONDIÇÃO DE PGTO V_CONDPGTO := DM.QPEDIDO.FIELDBYNAME('CONDPGTO').AsString; //ATRIBUI O VALOR LIQUIDO V_VALORLIQUIDO := DM.QPEDIDO.FIELDBYNAME('TOTAL').AsFloat; //ATRIBUI O DESCONTO TOTAL V_DESC_TOTAL := DM.QPEDIDO.FIELDBYNAME('DESC_TOTAL').AsFloat; //ATRIBUI O VALOR DO ICM V_VALORICM := 0; //ATRIBUI O VALOR TOTAL V_VALORTOTAL := (DM.QPEDIDO.FIELDBYNAME('TOTAL').AsFloat + DM.QPEDIDO.FIELDBYNAME('DESC_TOTAL').AsFloat); //ATRIBUI O NUMERO DO PEDIDO DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('SELECT MAX(L1_NUM)+10 AS NUMEROPEDIDO FROM SL1010 '); DM.QUERYTEMP.SQL.Add('WHERE L1_FILIAL = ' + V_FILIAL); DM.QUERYTEMP.OPEN; V_NPEDIDO := DM.QUERYTEMP.FIELDBYNAME('NUMEROPEDIDO').AsString; DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('INSERT INTO SL1010 ( '); DM.QUERYTEMP.SQL.Add('L1_FILIAL,L1_NUM,L1_VEND,L1_COMIS,L1_CLIENTE,L1_EMISSAO, '); DM.QUERYTEMP.SQL.Add('L1_TIPOCLI,L1_VLRTOT,L1_DESCONT,L1_VLRLIQ,L1_NROPCLI,L1_DTLIM,L1_VALBRUT, L1_VALMERC, '); DM.QUERYTEMP.SQL.Add('L1_ENTRADA,L1_PARCELA,L1_VALICM,L1_CONDPG,L1_FORMPG,L1_LOJA,L1_CONFVEN, '); DM.QUERYTEMP.SQL.Add('L1_IMPRIME,L1_TIPOJUR,R_E_C_N_O_ )'); DM.QUERYTEMP.SQL.Add('VALUES( '); DM.QUERYTEMP.SQL.Add(':V_FILIAL,:V_NPEDIDO,:V_CODREPRESENTANTE,' + QuotedStr('1.5') + ',' + ':V_CLIENTE,:V_EMISSAO, '); DM.QUERYTEMP.SQL.Add(':V_TIPOCLI,:V_VALORTOTAL,:V_DESC_TOTAL,:V_VALORLIQUIDO, ' + QuotedStr('PALM') + ','); DM.QUERYTEMP.SQL.Add(':V_VALIDADE,:V_VALORTOTAL,:V_VALORTOTAL, '); DM.QUERYTEMP.SQL.Add(':V_VALORLIQUIDO, ' + QuotedStr('1') + ' ,:V_VALORICM,:V_CONDPGTO,:V_FORMAPGTO, ' + QuotedStr('01') + ',' + QuotedStr('SSSSSSSNSSSS') + ', '); DM.QUERYTEMP.SQL.Add(QuotedStr('2N') + ',' + QuotedStr('1') + ',' + ':V_RECNO_PED)'); DM.QUERYTEMP.ParamByName('V_FILIAL').AsString := V_FILIAL; DM.QUERYTEMP.ParamByName('V_NPEDIDO').AsString := V_NPEDIDO; DM.QUERYTEMP.ParamByName('V_CODREPRESENTANTE').AsString := V_CODREPRESENTANTE; DM.QUERYTEMP.ParamByName('V_CLIENTE').AsString := V_CLIENTE; DM.QUERYTEMP.ParamByName('V_EMISSAO').AsString := V_EMISSAO; DM.QUERYTEMP.ParamByName('V_TIPOCLI').AsString := V_TIPOCLI; DM.QUERYTEMP.ParamByName('V_VALORTOTAL').AsFloat := V_VALORTOTAL; DM.QUERYTEMP.ParamByName('V_DESC_TOTAL').AsFloat := V_DESC_TOTAL; DM.QUERYTEMP.ParamByName('V_VALORLIQUIDO').AsFloat := V_VALORLIQUIDO; DM.QUERYTEMP.ParamByName('V_VALIDADE').AsString := V_VALIDADE; DM.QUERYTEMP.ParamByName('V_VALORLIQUIDO').AsFloat := V_VALORLIQUIDO; DM.QUERYTEMP.ParamByName('V_VALORICM').AsFloat := V_VALORICM; DM.QUERYTEMP.ParamByName('V_CONDPGTO').AsString := V_CONDPGTO; DM.QUERYTEMP.ParamByName('V_FORMAPGTO').AsString := V_FORMAPGTO; DM.QUERYTEMP.ParamByName('V_RECNO_PED').AsInteger := V_RECNO_PED; DM.QUERYTEMP.ExecSQL; //SHOWMESSAGE(DM.QUERYTEMP.SQL.GetText); // *************************************************************************************** // ******************************** TABELA ITENS PEDIDO ********************************** // *************************************************************************************** //ATRIBUI O NUMERO DO RECNO DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('SELECT MAX(R_E_C_N_O_)+1 AS RECNO FROM SL2010 '); DM.QUERYTEMP.OPEN; IF DM.QUERYTEMP.FIELDBYNAME('RECNO').AsInteger = 0 THEN BEGIN V_RECNO := 1; END ELSE BEGIN V_RECNO := DM.QUERYTEMP.FIELDBYNAME('RECNO').AsInteger; END; //FAZ O SELECT NA TABELA DE ITENS DE PEDIDOS DM.QITENSPEDIDO.SQL.Add('SELECT CHAVE, FILIAL, NPEDIDO, PRODUTO, DESCRICAO, QUANTIDADE, '); DM.QITENSPEDIDO.SQL.Add('PRECO_LIQUIDO, SUB_TOTAL, DESCONTO, ACRESCIMO, CODREPRESENTANTE, ITEM '); DM.QITENSPEDIDO.SQL.Add('FROM TBPALMITENSPEDIDO '); DM.QITENSPEDIDO.SQL.Add('WHERE FILIAL = ' + QUOTEDSTR(V_FILIAL)); DM.QITENSPEDIDO.SQL.Add('AND NPEDIDO = ' + QUOTEDSTR(V_NPEDIDO)); DM.QITENSPEDIDO.SQL.Add('AND CODREPRESENTANTE = ' + QUOTEDSTR(V_CODREPRESENTANTE)); DM.QITENSPEDIDO.OPEN; //ATRIBUI O NUMERO DO ITEM V_ITEM := V_ITEM + 1; IF V_ITEM < 10 THEN BEGIN V_ITEM_AUX := '0' + INTTOSTR(V_ITEM); END; //ATRIBUI O COD DO PRODUTO V_PRODUTO := DM.QITENSPEDIDO.FIELDBYNAME('PRODUTO').AsString; //ATRIBUI A DESCRICAO DO PRODUTO V_DESCRICAO := DM.QITENSPEDIDO.FIELDBYNAME('DESCRICAO').AsString; //ATRIBUI A QUANTIDADE DO PRODUTO V_QUANTIDADE := DM.QITENSPEDIDO.FIELDBYNAME('QUANTIDADE').AsString; //ATRIBUI O PREÇO LIQUIDO V_PRECO_LIQUIDO := DM.QITENSPEDIDO.FIELDBYNAME('PRECO_LIQUIDO').AsFloat; //ATRIBUI A BASE DO ICM V_BASEICM := DM.QITENSPEDIDO.FIELDBYNAME('PRECO_LIQUIDO').AsFloat; //ATRIBUI A TABELA V_TABELA := '1'; //ATRIBUI A ALIQ //V_ALIQU01 := 0; //V_ALIQU02 := 0; //ATRIBUI O VALOR TOTAL DO PEDIDO V_VALORTOT := DM.QITENSPEDIDO.FIELDBYNAME('PRECO_LIQUIDO').AsFloat * DM.QITENSPEDIDO.FIELDBYNAME('PRECO_LIQUIDO').AsFloat; //ATRIBUI O UM DO PRODUTO E A TES DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('SELECT B1_UM AS V_UM, B1_TS AS V_TES, B1_PICM AS V_VALICM FROM SB1010 '); DM.QUERYTEMP.SQL.Add('WHERE B1_COD = ' + QUOTEDSTR(DM.QITENSPEDIDO.FIELDBYNAME('PRODUTO').AsString)); DM.QUERYTEMP.OPEN; //ATRIBUI O V_UM V_UM := DM.QUERYTEMP.FIELDBYNAME('V_UM').AsString; //ATRIBUI O V_TES V_TES := DM.QUERYTEMP.FIELDBYNAME('V_TES').AsString; //ATRIBUI O V_VALICM V_VALICM := DM.QUERYTEMP.FIELDBYNAME('V_VALICM').AsFloat; //FAZ O CALCULO NO VALOR DO ICM IF V_VALICM = 0 THEN BEGIN V_VALICM := 18; END; V_TOTVALICM := (V_VALICM /100 * V_BASEICM); //ATRIBUI O COD.FISCAL DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('SELECT F4_CF AS V_CF FROM SF4010 WHERE F4_CODIGO = ' + QUOTEDSTR(V_TES)); DM.QUERYTEMP.OPEN; //ATRIBUI O COD. FISCAL V_CF := DM.QUERYTEMP.FIELDBYNAME('V_CF').AsString; //CALCULA O VALOR DO DESCONTO //V_SUB_TOTAL := DM.QITENSPEDIDO.FIELDBYNAME('SUB_TOTAL').AsFloat; //V_DESCONTO := DM.QITENSPEDIDO.FIELDBYNAME('DESCONTO').AsFloat; V_VALDESCONTO := (DM.QITENSPEDIDO.FIELDBYNAME('QUANTIDADE').AsFloat * DM.QITENSPEDIDO.FIELDBYNAME('PRECO_LIQUIDO').AsFloat) - DM.QITENSPEDIDO.FIELDBYNAME('SUB_TOTAL').AsFloat; DM.QUERYTEMP.SQL.Clear; DM.QUERYTEMP.SQL.Add('INSERT INTO SL2010(L2_NUM,L2_PRODUTO,L2_ITEM,L2_DESCRI,L2_QUANT,L2_VRUNIT,L2_VLRITEM, '); DM.QUERYTEMP.SQL.Add('L2_LOCAL,L2_UM,L2_DESC,L2_VALDESC,L2_TES,L2_CF,L2_VALIPI,L2_VALICM,L2_VALISS, '); DM.QUERYTEMP.SQL.Add('L2_BASEICM,L2_TABELA,L2_EMISSAO,L2_PRCTAB,L2_GRADE, '); DM.QUERYTEMP.SQL.Add('L2_FILIAL,L2_VEND,R_E_C_N_O_) '); DM.QUERYTEMP.SQL.Add('VALUES(:V_NPEDIDO,:V_PRODUTO,:V_ITEM_AUX,:V_DESCRICAO,:V_QUANTIDADE,:V_PRECO_LIQUIDO,:V_VALORTOT, '); DM.QUERYTEMP.SQL.Add(QUOTEDSTR('01') + ',:V_UM,0,:V_VALDESCONTO,:V_TES,:V_CF,0,:V_TOTVALICM,0, '); DM.QUERYTEMP.SQL.Add(':V_BASEICM,:V_TABELA,:V_EMISSAO,:V_PRECO_LIQUIDO,' + QUOTEDSTR('N') + ', '); DM.QUERYTEMP.SQL.Add(':V_FILIAL,:V_CODREPRESENTANTE,:V_RECNO '); DM.QUERYTEMP.SQL.Add(') '); DM.QUERYTEMP.ParamByName('V_NPEDIDO').AsString := V_NPEDIDO; DM.QUERYTEMP.ParamByName('V_PRODUTO').AsString := V_PRODUTO; DM.QUERYTEMP.ParamByName('V_ITEM_AUX').AsString := V_ITEM_AUX; DM.QUERYTEMP.ParamByName('V_DESCRICAO').AsString := V_DESCRICAO; DM.QUERYTEMP.ParamByName('V_QUANTIDADE').AsString := V_QUANTIDADE; DM.QUERYTEMP.ParamByName('V_PRECO_LIQUIDO').AsFloat := V_PRECO_LIQUIDO; DM.QUERYTEMP.ParamByName('V_VALORTOT').AsFloat := V_VALORTOT; DM.QUERYTEMP.ParamByName('V_UM').AsString := V_UM; DM.QUERYTEMP.ParamByName('V_VALDESCONTO').AsFloat := V_VALDESCONTO; DM.QUERYTEMP.ParamByName('V_TES').AsString := V_TES; DM.QUERYTEMP.ParamByName('V_CF').AsString := V_CF; DM.QUERYTEMP.ParamByName('V_TOTVALICM').AsFloat := V_TOTVALICM; DM.QUERYTEMP.ParamByName('V_BASEICM').AsFloat := V_BASEICM; DM.QUERYTEMP.ParamByName('V_TABELA').AsString := V_TABELA; DM.QUERYTEMP.ParamByName('V_EMISSAO').AsString := V_EMISSAO; DM.QUERYTEMP.ParamByName('V_PRECO_LIQUIDO').AsFloat := V_PRECO_LIQUIDO; DM.QUERYTEMP.ParamByName('V_FILIAL').AsString := V_FILIAL; DM.QUERYTEMP.ParamByName('V_CODREPRESENTANTE').AsString := V_CODREPRESENTANTE; DM.QUERYTEMP.ParamByName('V_RECNO').AsInteger := V_RECNO; DM.QUERYTEMP.ExecSQL;