» »

Kako se lotiti problema z XML uvozom

Kako se lotiti problema z XML uvozom

chuck ::

Imam XML za X dobavitelja
Imam XML za Y dobavitelja
Imam XML za Z dobavitelja
Imam XML lastne zaloge

Izdelki dobaviteljev se prekrivajo, ampak jih ima 50% različne EANe.
Opcija, da bi imel vsak dobavitelj svoj izdelek in na spletni strani posledično podvojene, potrojene izdelke odpade.
Na spletni strani lahko v polje EAN vpišem več EANov in jih ločim z vejico, npr EAN1,EAN2,EAN3
Vsak dobavitelj ima prednost, torej samo če X dobavitelj nima, potem dodaj od Y dobavitelja in če Y nima, dodaj od Z.

Trenutno se takole posodablja:
$query ="update oc_product set status=0, quantity=0 where LOWER(location)='Xdobavitelj'";
$query = "update oc_product set quantity='".$stock."',price='".$priceNoVAT."',status=1,tax_class_id=11,stock_status_id='".$stockstatus."' WHERE LOWER(location)='Xdobavitelj' AND ean='".$ean."'";

Spura ::

Ok, prvo, queryev se ne dela s sestavljanjem stringov.

Izdelki so ena tabela, dobavitelji pa pac druga, in potem povezovalna vmes. Potem problemov ni, vsak dobavitelj samo posodablja svoje vrstice v povezovalni tabeli.

kuall ::

Raje povej kaj točno te muči? problem je zelo enostaven oziroma ga ni.

Spura ::

Problem je v tem, da ima v tabeli produktov tudi dobavitelja, in vsakic ko dobavitelj poslje xml izdelkov s tem povozi podatke od drugega dobavitelja za isti EAN. Vsaj jst tako razumem.

Lonsarg ::

Hm dizajn v osnovi za enega dobavitelja, potem pa software hacki da dela za več, namesto da bi redizajniral na podatkovnem nivoju za več.

Recept za katastrofo.

kuall ::

To uporablja opencart kot vidim iz imena tabele.
Če prav razumem bi rad, da se zaloga uvozi od tistega dobavitelja, kjer je prvič najdena neka zaloga, dobivitelji imajo svojo prioriteto.

Treba bo napisat (C#) programček, ki sprocesira te XMlje in iz njih ustvari en nov XML, za vsak produkt pa izbere tisto lokacijo in zalogo, ki ima prioriteto. Po potrebi še izvoz zaloge iz spletne trgovine (za še dodaten XML).

Potem ta zgeneiran XML uvoziš z opencart.

Zame bi bilo to 2 uri dela, 200€. :)

chuck ::

kuall je izjavil:


Treba bo napisat (C#) programček, ki sprocesira te XMlje in iz njih ustvari en nov XML, za vsak produkt pa izbere tisto lokacijo in zalogo, ki ima prioriteto. Po potrebi še izvoz zaloge iz spletne trgovine (za še dodaten XML).

Potem ta zgeneiran XML uvoziš z opencart.

Zame bi bilo to 2 uri dela, 200€. :)

Res je, opencart, dam 500€ če vključuje tudi povezovalno bazo med dobavitelji (žal z EANi in primerjavo z nazivi bo rešil kvečjemu 50% primerjav) in ustrezno nastavi nastavi še par drugih parametrov (opis izdelka, slika, itd). Se pa bojim, da je tole projekt za vsaj 50ur dela.

chuck ::

Spura je izjavil:

Problem je v tem, da ima v tabeli produktov tudi dobavitelja, in vsakič ko dobavitelj poslje xml izdelkov s tem povozi podatke od drugega dobavitelja za isti EAN. Vsaj jst tako razumem.

Ideja je bila:
v polje location vpišem: x dobavitelj, y dobavitelj
odobjavim vse izdelke od x dobavitelja, objavim vse od x dobavitelja
odobjavim vse od y dobavitelja, objavim vse od y dobavitelja
ampak s tem ko bom odobjavil vse od y dobavitelja bom odobjavil vse izdelke tudi od x dobavitelja

Pa mislil sem, da lahko vpišem EAN1,EAN2 v polje EAN, ampak ne gre, sedaj uporabljam še eno drugo polje ISBM ali nekaj podobnega.

kuall je izjavil:

Raje povej kaj točno te muči? problem je zelo enostaven oziroma ga ni.

Predvsem kako se ga lotiti. Dileme:
1. ali obravnavati vse XMLje v PHPju in mučiti bazo ali rešiti lokalno in generirati skupen XML
2. kako združiti izdelke dobaviteljev (isti izdelek lahko ima več EANov, naziv ni nujno, da je 100% isti)
Pa moje znanje programiranja je precej žalostno, trenutno večino stvari rešujem s Power Query. Sem poskusil z Access, pa sploh ne podpira importa XMLja preko urlja.

Zgodovina sprememb…

  • spremenil: chuck ()

kuall ::

Probaj še malo po Googlu pogledat za kakšen opencart multi supplier extension, če ti reši ta problem. Ampak po moje bo težko kaj najti, ker imaš kar specifične zahteve, to s podvajanjem produktov. Takele stvari delam pogosto, tako da se lahko zmeniva, da ti naredim. Opencart drugače ne poznam in se z njim niti ne bi dost ukvarjal, jaz bi samo xmlje gledal.

Po moje rabiš en programček, ki ti združi xmlje v enega, katerega potem uvoziš.

Programček bi kazal seznam vseh produktov. Podvojene bi program sam združil (isti naziv ali EAN). Združene produkte bi videl v desnem seznamu, ki se osveži, ko klikneš na nek produkt.

Seznam ima kolone, katere se da urejati: naziv, opis, zaloga, slika. Kolona zaloga bi bila iz tistega xmlja, ki ima prednost in ki nima 0 zaloge. kateri xml ima prednost se magar kar v kodo pribije, da ne kompliciramo (po nazivu datoteke). lahko pa se v nekem zavihku določi urejanje prioritete datotek z drag and drop. po želji. določiš izvorno mapo z xmlji, program si jo zapomni za naslednjič. tu je možen tudi kakšen spletni naslov, da jih programček zdownloada (ponavadi so kje na kakšenm serverju taki xmlji).

Bila bi še opcija, da združiš produkte ročno. Ponudi ti izdelke, ki imajo najbolj podoben naziv in izmed teh obkljukaš tapravega, najbolj podoben bi bil na vrhu seznama. Program si zapomni povezavo za naslednjič (shrani si tak seznam nekam v en txt fajl: opencart product ID = EAN;dobavitelj_x oziroma za nove produkte: ean;dobavitelj_1=ean;dobavitelj2)

Poleg xmljev dobaviteljev bi rabil še xml izvoženih produktov iz spletne trgovine, kjer je tudi open cart product id, potem pa še opis, naziv, slika. tako moj programček ne bi rabil shranjevat v svojo bazo opisev itd, ki jih urejaš ampak bi jih bral iz tega xmlja. zalogo v spletni trgovini bi povozil z zalogo iz xmljev. kaj je tisti fajl LASTNA ZALOGA mi ni čisto jasno, a to se sešteje z zalogo od dobavitelja?

XML se da enostavno parsat z SQL ali C#.

Zgodovina sprememb…

  • spremenilo: kuall ()

Spura ::

ce prav razumem ti opencart model itak ne pusti vec kot en EAN za izdelek, tko da ne vem kako ti bo to klapalo tut ce prej pripravis kombiniran XML

kuall ::

itak hoče prikazovat samo zalogo (in EAN) od enega dobavitelja.
če bi hotel kazat sešteto zalogo od vseh dobaviteljev potem bi imel dilemo, kateri ean kazat. pa še tu bi lahko izbral random ean. id je itak opencart id produkta, ne pa ean. ean je samo "naziv".

Spura ::

To pa lahko preprosto doseze tako da preprosto v bazo vpise podatke v obratnem vrstnem redu kot so prioritete dobaviteljev.

Najprej vneses vse podatke od dobavitelja z najnizjo prioriteto. Potem jih povozis s podatki dobavitelja z naslednjo prioriteto.
Ce vnos ze obstaja pac povozis zalogo, location in ceno, pri eanu mu pa pripnes "EAN, " spredi tko da na koncu dobis vse EANe ki si jih ze vidu.

kuall ::

problem s tem je, da noče, da zaloga 0 prepiše zalogo, ki ni 0.
ko uvaža nazadnje dobavitelja z najvišjo prioriteto in če ima ta zalogo 0 mora pustit zalogo od prejšnjega dobavitelja, če ima prejšnji kakšno zalogo. tako sem jaz razumel.

chuck ::

točno tako, lahko bi rešil s pogojnimi stavki, samo potem bi bilo ogromno klicov bazo

Zimonem ::

Mah ortogonaliziraš problem.

chuck ::

Spura je izjavil:

To pa lahko preprosto doseze tako da preprosto v bazo vpise podatke v obratnem vrstnem redu kot so prioritete dobaviteljev.

Najprej vneses vse podatke od dobavitelja z najnizjo prioriteto. Potem jih povozis s podatki dobavitelja z naslednjo prioriteto.
Ce vnos ze obstaja pac povozis zalogo, location in ceno, pri eanu mu pa pripnes "EAN, " spredi tko da na koncu dobis vse EANe ki si jih ze vidu.


Res je, tole je trenutno najboljša rešitev, hvala :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Barcode scanner

Oddelek: Elektrotehnika in elektronika
91462 (1178) Vanquish
»

Struktura podatkovne baze

Oddelek: Programiranje
71543 (1242) Ales
»

VGA na DVI

Oddelek: Pomoč in nasveti
181138 (850) Brias
»

Baze ter relation med njimi

Oddelek: Programiranje
153343 (2904) Marat
»

Cene trgovcev v realnem času (strani: 1 2 )

Oddelek: Loža
7131821 (29211) fosil

Več podobnih tem