Para exportar datos desde una aplicación a una página web utilizando Prestashop, necesitarás seguir los siguientes pasos:
Prepara los datos que deseas exportar: Asegúrate de que tienes los datos que deseas exportar en un formato compatible con Prestashop, como un archivo CSV o XML.
Accede a la administración de Prestashop: Inicia sesión en tu panel de administración de Prestashop y ve a la página de importación de datos.
Selecciona el archivo que deseas importar: Haz clic en el botón "Examinar" y selecciona el archivo que contiene los datos que deseas importar.
Especifica el tipo de importación: Selecciona la opción "Importar a una nueva tabla" si deseas importar los datos a una tabla nueva en la base de datos de Prestashop. Si deseas actualizar los datos de una tabla existente, selecciona la opción "Actualizar datos existentes".
Configura las opciones de importación: Configura las opciones de importación según tus necesidades, como el idioma y la moneda que deseas utilizar para los datos importados.
Realiza la importación: Haz clic en el botón "Importar" para iniciar el proceso de importación de datos. Espera a que se complete el proceso y revisa los resultados para asegurarte de que todo ha ido bien.
Para exportar una base de datos en formato DBF a un archivo CSV utilizando Harbour, puedes utilizar la función DBF2CSV() de la siguiente manera:
DBF2CSV( cFile, cSeparator, lHeader )
Donde:
cFile es la ruta completa del archivo DBF que deseas exportar.
cSeparator es el separador de campos que deseas utilizar en el archivo CSV. Puedes utilizar cualquier carácter, como una coma (,) o una tabulación (\t).
lHeader es un valor lógico que indica si deseas incluir una fila de encabezados en el archivo CSV. Si estableces este valor en .T., se incluirá una fila con los nombres de los campos en el archivo CSV. Si estableces este valor en .F., no se incluirá ninguna fila de encabezados.
Por ejemplo, para exportar el archivo clientes.dbf a un archivo CSV con una coma como separador de campos y con una fila de encabezados, podrías utilizar la siguiente línea de código:
DBF2CSV( "clientes.dbf", ",", .T. )
COPY TO <targetFile> ;
[FIELDS <fieldNames,...> ;]
[<Scope> ; ]
[WHILE <lWhileCondition> ;]
[FOR <lForCondition> ;]
[VIA <rddName>]
[SDF | DELIMITED [WITH BLANK | TAB | PIPE | <xDelimiter> ] ]
[CODEPAGE <cCodePage>] ;
DELIMITED WITH <xDelimiter>
The WITH option specifies the delimiting character to enclose values of Character fields in. <xDelimiter> can be specified as a literal character or a character expression enclosed in parentheses. <xDelimiter> can also be specified as an array with two elements: { <cCharacterDelimiter>, <cFieldDelimiter> }. If this option is used, the array must be enclosed in parentheses. It defines the delimiting characters for field values of type "C" and the delimiters between field values.
COPY TO newfile DELIMITED WTH ( '"', "," )
COPY TO newfile DELIMITED WTH ( '"', "," )
COPY TO newfile DELIMITED WITH ( { "",";" } )
static function Prestabeheer()
local oDlg, oFont, nWild := 1, cZoek:=""
local cList, aFlds, aHdrs, oBold
local nChoice, uDataSource, nCombo1:= 1 , nCombo2:= 1
local aTabs:={"Kleuren","Volgorde"}
local oBrw[5]
Public oRsATT
Public cServer := "YOUR DATA HERE"
Public cDataBase := ""
Public cUser := ""
Public cPassWord := ""
Public oCn, oRs, oRsATT, oRsVolgorde
FWCONNECT oCn HOST cServer USER cUser PASSWORD cPassword DATABASE cDatabase
if oCn == nil
? "Failed to connect"
return nil
endif
oRsProduct := oCn:RowSet( "select * from ps_product_lang " )
xbrowse(oRsProduct)
cZoek := "1"
oRs := oCn:RowSet( "select * from `ps_attribute` where `id_attribute` = ? ", { cZoek } )
oRsAtt:= oCn:RowSet( "SELECT * FROM `ps_attribute_lang` where `id_lang` = ? ORDER BY id_attribute", { "1" } )
cDbf:="c:\data\temp.dbf"
oRsAtt:savework(cDbf)
oRsGroepen:= oCn:RowSet( "SELECT * FROM `ps_category_lang` where `id_lang` = ? ", { "1" } )
cZoekProduct := "77"
oRsvolgorde:= oCn:RowSet( "SELECT * FROM `ps_category_product` where `id_category` = ? ", { cZoekProduct } )
oRsvolgorde:= oCn:RowSet( "SELECT *,P.description_short AS PName FROM ps_category_product C LEFT JOIN ps_product_lang P ON C.id_product WHERE id_category = ?" )
DEFINE FONT oBold NAME 'CALIBRI' SIZE 0,-12 BOLD
DEFINE FONT oFont NAME "CALIBRI" SIZE 0,-12
DEFINE FONT oFontS NAME "Segoe UI" SIZE 0,-09
DEFINE DIALOG oDlg SIZE 1410,800 PIXEL TRUEPIXEL ;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU,WS_MAXIMIZEBOX, WS_MINIMIZEBOX, WS_THICKFRAME );
TITLE "Ploegen";
GRADIENT { { 1, nRGB( 125, 155, 175 ), nRGB( 125, 155, 175 ) } }
DEFINE BUTTONBAR oBar OF oDlg SIZE 56,56 2007
@ 90,05 FOLDER oFld SIZE 1400,700 PIXEL OF oDlg ITEMS aTabs
///////////////////////////////////////////////////////////////// BRW FOLDER 1 /////////////////////////////////////////////////
aVelden1 := { ;
{ "id_attribute" , "ID" ,nil, 50 }, ; // 1
{ "id_lang" , "Taal" ,nil, 50 }, ; // 2
{ "name" , "Kleurnaam" ,nil, 100 }} // 9
@ 1,1 XBROWSE oBrw[1] size 1400,100 PIXEL OF oFld:aDialogs[ 1 ] font oFont ;
DATASOURCE oRsATT;
COLUMNS aVelden1;
AUTOSORT CELL LINES NOBORDER FOOTERS
//FASTEDIT
oBrw[1]:nEditTypes = EDIT_GET
oBrw[1]:SetChecks()
oBrw[1]:lF2KeyToEdit := .t. // Edit when F2 is pressed
oBrw[1]:nHeadStrAligns := AL_CENTER
WITH OBJECT oBrw[1]
:lColChangeNotify := .t.
:oHeaderFonts := oBold
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW }}
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:bOnChange := { || oRs:Requery( { oBrw[1]:ID:Value } ), oBrw[2]:refresh() }
:bRClicked := {|nRow, nCol| Prestapop( nRow,nCol, oBrw[1], oRsATT ),oBrw[1]:refresh() }
:bKeyDown := { |nKey| If( nKey == VK_DELETE, oBrw[1]:kleurnaam:varput("##DEL"+oBrw[1]:kleurnaam:value), nil ) }
:lFooter := .t.
:bRecSelHeader := { || "RowNo" }
:bRecSelData := { |o| o:KeyNo }
:bRecSelFooter := { |o| o:nLen }
:oRecSelFont := oFont // optional
:nRecSelWidth := "99999" // required size
END
oBrw[1]:CreateFromCode()
///////////////////////////////////////////////////////////////// BRW FOLDER 2 /////////////////////////////////////////////////
aVelden2 := { ;
{ "id_attribute" , "ID" ,nil, 50 }, ; // 1
{ "id_attribute_group", "Groep" ,nil, 50 }, ; // 2
{ "color" , "Kleur" ,nil, 55 }, ; // 9
{ "id_attribute" , "File" ,nil, 70 }} // 9
@ 105,1 XBROWSE oBrw[2] size 1400,200 PIXEL OF oFld:aDialogs[ 1 ] font oFont ;
DATASOURCE oRs;
COLUMNS aVelden2;
AUTOSORT CELL LINES NOBORDER FOOTERS
oBrw[2]:nRowHeight:= 70
oBrw[2]:nEditTypes = EDIT_GET
oBrw[2]:SetChecks()
oBrw[2]:lF2KeyToEdit := .t. // Edit when F2 is pressed
oBrw[2]:nHeadStrAligns := AL_CENTER
oBrw[2]:kleur:bClrStd := { || showcolors(oBrw[2]:kleur:Value) }
WITH OBJECT oBrw[2]
:lColChangeNotify := .t.
:oHeaderFonts := oBold
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
WITH OBJECT :file
:bStrImage := { || "d:\pictures\kleuronline\"+alltrim(str(oBrw[2]:SelectedCol():Value))+".jpg" }
:oDataFont := oFontS
:nDataStrAlign := AL_CENTER + AL_BOTTOM
:nDataBmpAlign := AL_CENTER
:aImgRect := { nil, nil, -10, nil }
END
END
oBrw[2]:CreateFromCode()
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////
aVelden4 := { ;
{ "id_category" , "Cat_ID" ,nil, 50 }, ; // 1
{ "name" , "Naam" ,nil, 200 }, ; // 2
{ "position" , "Pos" ,nil, 50 }} // 9
@ 1,1 XBROWSE oBrw[4] size 1100,100 PIXEL OF oFld:aDialogs[ 2 ] font oFont ;
DATASOURCE oRsgroepen;
COLUMNS aVelden4;
AUTOSORT CELL LINES NOBORDER FOOTERS
//FASTEDIT
oBrw[4]:nEditTypes = EDIT_GET
oBrw[4]:SetChecks()
oBrw[4]:lF2KeyToEdit := .t. // Edit when F2 is pressed
oBrw[4]:nHeadStrAligns := AL_CENTER
WITH OBJECT oBrw[4]
:lColChangeNotify := .t.
:oHeaderFonts := oBold
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW }}
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:lFooter := .t.
:bRecSelHeader := { || "RowNo" }
:bRecSelData := { |o| o:KeyNo }
:bRecSelFooter := { |o| o:nLen }
:oRecSelFont := oFont // optional
:nRecSelWidth := "99999" // required size
:bOnChange := { || oRSNewGroep(oBrw[4]:cat_id:Value), oBrw[3]:refresh() }
END
oBrw[4]:CreateFromCode()
///////////////////////////////////////////////////////////////// BRW FOLDER 3 /////////////////////////////////////////////////
aVelden3 := { ;
{ "id_category" , "Cat_ID" ,nil, 50 }, ; // 1
{ "id_product" , "Product_ID" ,nil, 70 }, ; // 2
{ "position" , "Pos" ,nil, 50 }, ; // 9
{ "oRsProduct:description_short" , "Naam" ,nil, 150 }} // 9
@ 110,1 XBROWSE oBrw[3] size 1100,200 PIXEL OF oFld:aDialogs[ 2 ] font oFont ;
DATASOURCE oRsvolgorde;
COLUMNS aVelden3;
AUTOSORT CELL LINES NOBORDER FOOTERS FASTEDIT
//oBrw[3]:nEditTypes = EDIT_GET
oBrw[3]:SetChecks()
oBrw[3]:lF2KeyToEdit := .t. // Edit when F2 is pressed
//oBrw[3]:nHeadStrAligns := AL_CENTER
WITH OBJECT oBrw[3]
:lColChangeNotify := .t.
//:oHeaderFonts := oBold
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW }}
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
//:bOnChange := { || oRs:Requery( { oBrw[1]:ID:Value } ), oBrw[2]:refresh() }
:lFooter := .t.
:bRecSelHeader := { || "RowNo" }
:bRecSelData := { |o| o:KeyNo }
:bRecSelFooter := { |o| o:nLen }
:oRecSelFont := oFont // optional
:nRecSelWidth := "99999" // required size
END
oBrw[3]:CreateFromCode()
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////
// BrwBarploegen( oBar, oBrw )
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
oCn:close()
return nil
VictorCasajuana wrote:Hola.
Te comparto una clase que hice de prueba para conectar con el Api de Prestashop. No la he utilizado nunca en producción pero las pruebas que lleva prueba.prg funcionan perfectamente
https://github.com/VictorCasajuanaMas/Prestashop
utilizo una clase para los xml que me dejó el maestro Cristobal Navarro, espero me permita también incluirla en el repositorio, de lo contrario la quito enseguida .
La clase TPrestashop es sencilla pero tiene las bases para entender el API y a partir de ahí hacerla crecer. Al principio yo también trabajé la conexión con prestashop mediante ficheros csv, pero para el usuario es más engorroso. Si trabajas a nivel de API lo puedes automatizar absolutamente todo.
Consejo: aunque se puede, no trabajes directamente con la BD MySql que lleva integrada, te puedes volver loco .
Si te interesa la clase y la vas vitaminando, estaría bien trabajarla desde el repositorio para poder aprovechar las mejoras .
Gracias y salud !
utilizo una clase para los xml que me dejó el maestro Cristobal Navarro, espero me permita también incluirla en el repositorio, de lo contrario la quito enseguida
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 36 guests