Experimente

Cum se calculează numărul de comenzi plasate-n WooCommerce pentru un anumit cupon

Presupun aici că se pleacă de la codul de cupon, presupunere pe care n-o fac de dragul presupunerii or constrângerii, ci pleacă dintr-o nevoie particulară. Lucrurile sunt destul de simple aici, există o funcție standard pentru obținerea ID-ului de cupon – wc_get_coupon_id_by_code.

$couponId = wc_get_coupon_id_by_code($couponCode);

Următorul pas (sau primul dacă plecați direct de la ID) este folosirea tabelei wc_order_coupon_lookup (nu am inclus în denumirea tabelei prefixul configurat în WordPress) pentru a determina numărul de comenzi pentru acel ID de cupon. Această tabelă menține, pentru fiecare comandă (reprezentată aici prin ID-ul său – coloana order_id) ce cupon a fost folosit (reprezentat și el prin ID – coloana coupon_id).

Tabela wc_order_coupon_lookup

Citește mai departe

De ce n-ai învățat poezia?!

Am regăsit în Godfather II, nu fără o oarecare surprindere, unul din personajele care mi-au colorat primii ani ai copilăriei mele. Nu o să ghiciți, nici n-ați avea cum și, în definitiv, asta nu-i carte de ghicitori, așa că vă zic direct – este vorba de Don Fanucci. Don Fanucci era un mafiot de mâna a doua (de fapt poza în mafiot), care a mâncat multă vreme jucând o cacealma nu foarte bună, care ținea doar la oameni simpli și slabi.

Capisci paesano?

Capisci paesano?

E plină viața de-alde Don Fanucci, e plină lumea de ei. De la minoritățile care te văd mai mic și neînsoțit și-i prinde dorul de integrare socială prin metoda taxei de protecție (ia scoate ce-ai în buzunare!), până la straturi mai respectabile ale societății, cel puțin în aparență. În cazul meu asemănarea, oarecum în ceea ce priveșe fizionomia, stilul vestimentar și leită în ceea ce priveșe vocea și metodele, a fost profesorul de religie, Popa D. – Popicul cum i se zicea prin clasă.

Citește mai departe

Librărie .NET/C# pentru verificarea contribuabililor pe baza CIF-ului

Din diverse proiecte s-a condensat în timp o mică librărie pentru consumarea serviciului web ANAF prin care se poate verifica existența unui contribuabil, precum și dacă este-nregistrat în scopuri de TVA. De fapt, funcționalitatea oferită este cea din urmă, dar implicit poate fi folosit și pentru verificarea existenței unui cod fiscal.

Detalii

Detalii

Librăria este scrisă pentru .NET 6.0 și a fost gândită pentru serviciul sincron, versiunea 8, a cărui specificație poate fi găsită aici. Cred că poate fi consumată și versiunea 7, dar nu am încercat. În tot cazul, am acoperit toată structura de date oferită de răspuns; n-am avut personal nevoie de toate datele acolo, dar dacă tot am publicat codul, am zis să fie o treabă făcută nu musai cap-coadă, ci măcar cu un cap și cu o coadă.

Citește mai departe

Medley (I)

Într-un târziu, am reușit să pun în funcție și masa pentru frezare și să montez pe ea un monstru de Triton TRA001 (ce, cum și de ce, cu altă ocazie). Trecând peste faptul că freza sare cu 200W de puterea maxima suportată de aspiratorul meu și, deci, nu pot să folosesc funcția de pornire/oprire automată, întreg ansamblul este ce trebuie. Clișeu, dar alt cuvânt mai potrivit nu este.

Voila

Voila

Ca să-l testez, am luat câteva bucăți de lemn și am încercat cu diverse freze. Întâmplarea face că mi-a picat în mână o bucată de panou de pin și, după ce am frezat câteva laturi și declarându-mă mulțumit, am dat s-o pun în grămada cu deșeuri. Dar, îmi zic, ia stai nițel, are proporții numai bune, este bine-nchegată și foarte plăcută ca aspect.

Citește mai departe

Sper că mesajul meu te găsește bine (III)

Iată, stimați ascultă-cititori, o speță interesantă. Scrisoarea primită pe adresa redacției noastre e puțin cam lungă, așa că o vom sumariza pentru dumneavoastră, mai ales că răspunsul sugerat de către noi este și el o idee mai lung decât de obicei, motiv pentru care preferăm să păstrăm spațiul editorial pentru acela.

În aceste vremuri tulburi fiecare literă contează, motiv pentru care probabil de aceea se mănâncă atâtea. Și, dacă ne mai permiteți încă o divagație, într-un fel, acest caz încununează o trilogie similară cu trilogia dolarilor lui Sergio Lone, așa că vă sugerăm o compilație extrasă din acele filme drept muzică drept acompaniament al lecturii.

Foto: Envato Elements

Foto: Envato Elements

Fără altă addenda, așadar, iată situația: ascultătorul nostru, la recomandarea unuia din clienții săi importanți preia un proiect, în egală măsură pentru că avea disponibilitate, că era un potențial scor bun și pentru a nu implica acel client într-un act de refuz. Proiectul era pentru o importantă clinică dentară (să le zicem Clinicile Țepeleanu) cu sedii presărate inclusiv prin centrul Capitalei, preluată de curând de către un alt lanț, și mai important, de clinici private.

Citește mai departe

Colonelul

Au fost câteva filme când aveam voie să stăm seara târziu la TV, mai precis la Telecinemateca, deși eram mici. Regulile erau în mare parte impuse de mama, însă atunci când era oricare dintr-o mână de filme, tata o suprascria fără drept de apel. L-am iubit pentru asta, cu toate metehnele lui, pentru că, chiar dacă nu am înțeles mare lucru atunci, fiecare a fost ceva cu adevărat elementar, fundamental.

Addio Colonnello

Addio Colonnello

Printre ele, după cum probabil unii dintre voi au intuit, au fost și filmele lui Segio Leone – Trilogia Dolarilor (A fistful of dollars, For a few dollars more și The Good, the bad and the ugly), dar și Once upon a time in the west. Îmi e neclar de ce au rămas cu mine atât vreme, de așa natură încât am luni în care îmi aleg unul din filme și-l urmăresc și reurmăresc de două-trei ori pe zi, zi de zi, fără să-l găsesc plictisitor sau măcar identic față de vizionarea precedentă.

Citește mai departe

Sunt pline firmele de repetenții de la Politehnică

Motto
Doi + doi = cinci pentru valori suficient de mari ale lui doi.

Maică-mea îmi zicea asta, foarte afectată. Îi spusese un profesor bătrân de la Politehnică, în contextul în care eu tocmai terminasem anul I și mă angajasem. Vorbind una-alta, ea i-a zis că m-am angajat, el i-a răspuns cu replica din titlu și ea mi-a zis mai departe. Din tonul vocii, luase foarte-n serios ce-i transmisese respectivul.

Eu aș adăuga: din păcate, sunt și mai pline de absolvenții de la Politehnică. Din partea unuia ca mine (absolvent, nu repetent), ar părea o chestie foarte ciudată, însă, așa cum unii sunt profesori doar cu titulatura, sunt și eu absolvent doar cu diploma. Nu că n-aș fi învățat nimic acolo, doar că nu consider că am ieșit din facultate știind meserie: am învățat meserie făcând meserie.

Citește mai departe

Ticăloșie

Nu sunt.
Nu sunt un intelectual de Dilema Veche și nu am nicio datorie față de nimeni, nici măcar față de mine. Pot să fiu cine vreau, pot să fiu cum vreau, pot chiar să ma fac de râs în ochii mei sau să fiu de râs în ochii altora. Pot fi un ticălos sau nu. Pot să gândesc cu mintea mea, chiar dacă mintea asta a mea nu are de niciunele. Pot spune ce vreau, chiar dacă nu mă ascultă nimeni, știind că în ce spun eu mă regăsesc numai pe mine, ăla care sunt. Pot fi așa pentru că sunt singur și când ești singur nimeni nu are ce-ți lua și nici tu nu poți lua de la alții.

Lumea este păduchioasă rău, oscilând tot timpul între identitatea individuală și identitatea de grup. Când dă cu curu de năpastă se strânge în turme, predând unicitatea și individualismul grupului căruia i s-a alaturat. Nicio generație nu este diferită de alta. În trecut, pe lânga mine lumea era împărtită-n două: unii care călcau pe cap și alții care tăceau, sperând să se-adapteze și să supraviețuiască ticăloșiei.

Citește mai departe

Afișarea denumirii și adresa locker-ului EasyBox folosind modulul oficial SameDay pentru WooCommerce

Pe lângă problema cu netrimiterea datelor locker-ului EasyBox ales, mai este loc de o îmbunătățire a ergonomiei modulului SameDay pentru WooCommerce: afișarea informațiilor locker-ului ales (nume și adresa) atunci când se afișează detaliile comenzii (în e-mail-ul de confirmare, panoul de administrare, contul de client etc.).

Clarificări

Clarificări

Motivele sunt evidente, așa că o să trec direct la descrierea soluției, adăugând doar că premisele de la care plec sunt:

– că oriunde este afișata metoda de transport asociată unei comenzi trebuie să fie afișate și aceste informații;
– că există doar o metodă de transport pentru o comandă.

Citește mai departe

Taburet multifuncțional

Pentru că nici măcar un băț nu se poate pune-n vânzare până nu-i declarat ca fiind mai-multe-în-1 (e lung și, în același timp, cilindric și de culoare maro), mi-am zis că aș putea totuși gândi și executa și eu un taburet care chiar să fie multifuncțional.

După ceruire

După ceruire

De fapt totul a pornit de la faptul că nevastă-mea, așa cum șade bine unei muieri, nu e tocmai girafă și are nevoie să se cocoațe pe câte ceva pentru a ajunge-n locurile mai înalte din casă. Cam strâmbă din nas la scaunele normale, are ceva, nu pot să-i zic rău de înălțime, care-o face să se crizeze când se vede la mai mult de câteva palme de podea pe niște chestii cu picioare subțiri.

Citește mai departe

Please choose your EasyBox Locker!

Eroarea din titlu am primit-o lucrând la un magazin virtual peste WooCommerce, având instalat modulul de livrare prin SameDay (problemă pe care au mai întâlnit-o și alții). Ei, cu toate că este selectat locker-ul la care să fie livrată comanda, modulul emite acest mesaj. Pentru început, am aruncat un ochi în codul sursă al modulului:

Sursa erorii

Sursa erorii

Cu alte cuvinte, se purta ca și cum datele nu ar fi fost trimise deloc. Să consultam și globul de cristal, adică Developer Tools – Network. Șoc sau nu, o să-ți vină sau n-o să-ți vină să crezi așa ceva, dar datele nu erau acolo deloc. Voilà, precum zăpezile anului trecut, precum bunul simț la ecologiști, imposibil de găsit:

Citește mai departe

Despre micimea sădită de noi înșine

Spuneam altădată că istoria este scrisă de-nvingători; aș mai adăuga acum că istoria este scrisă și de învinși și că istoria politică de multe ori are puține legături cu istoria adevărată.

Falsificarea istoriei o găsești pretutindeni, indiferent de țară, indiferent dacă este scrisă de cuceritori sau cuceriți, istoria politică fiind mai mult una dictată de conjuncturi, interese și mai puțin bazată pe fapte, documente și adevăr istoric.

De câteva sute de ani, atât Estul cât și Vestul vin peste noi promițând în primul rând libertatea. Nu există însă nicio bucățică din țara asta, „eliberată” fiind cândva de un „binevoitor”, în care libertatea promisă să nu se fi transformat în alte cătușe. Pe rând au făcut-o atât rușii cât și germanii și dacă noi nu percepem prezentul, măcar trecutul ar trebui să ne dea de gândit.

Citește mai departe

Mambo Number Five – Sumar tehnic și considerente filozofice

Am simțit construind acest sistem de dulapuri o satisfacție pe care n-am simțit-o scriind nici cea mai reușită componentă software. Într-adevar, este ceva imaterial în a scrie cod, ceva care sfidează și eludează acel ultim și autentic nivel al satisfacției: a pune mâna, a mirosi, a interacționa fizic cu rezultatul muncii tale.

Master of disasters

Master of disasters

Contemplând lucrarea și scriind introducerea de mai sus, mă îndrept fără să vreau cu gândul spre vorbele lui Șatov:

– Ascultă, caută-l pe Dumnezeu pe căile muncii; totul aici stă; dacă nu, dispari; dispari ca un mucegai, găsește-l prin muncă. (…)
– Prin muncă țărănească. Du-te, leapădă-te de bogății… Aha! râzi, ți-e frică de ridicol?

De fapt, nu chiar fără să vreau. E o replică ce mi-a răsunat în cap încă de când am citit-o, iar acum doar s-a agățat precum o lipitoare, dar care nu ia, ci dă. Dă sens întrucâtva unor imbolduri naturale, aruncă puțină lumină asupra lor.

Citește mai departe

Știu ce este, dar ce reprezintă?

Mai întâi, desigur, trebuie să stabilim coordonatele discuției. Este vorba despre situația în care lucrăm (fie pentru că am ales ca atare, fie că nu avem de-ales) la un proiect unde accesul la date este abstractizat:

– printr-un model de date implementat printr-un set de clase (entități);
– folosind un ORM oarecare pentru gestionarea corespondenței dintre entități și diversele artefacte din baza de date (tabele, dar nu numai);
– folosind repository-uri pentru a accesa entitățile respective;
– în sfârșit, ca să adăugăm o dimensiune concretă, folosind C# ca limbaj de bază și Entity Framework drept ORM.

Care-cum?

Care-cum?

Folosind Entity Framework, se pune problema gestionării DbContext-ului, adică a modului în care trebuie distribuit între diversele repository-uri implicate într-o singură tranzacție. Dintre toate variantele, m-am oprit în cele din urmă pe cele descrise aici (și vă recomand să citiți înainte de a continua).

Citește mai departe

Kur-papier-rollen-supporten

Este lesne de-nțeles că mi-a rămas suficient material după dileala cu sistemul de corpuri construit pentru baie. Multe resturi de panouri de molid și câteva resturi de fag (mă refer la fag ca specie de lemn, desigur, deși probabil denumirea ar trebui schimbată în ceva mai cuprinzător – sic! – dar și nejignitor – dublu sic!).

Să-i zic Ancora?

Să-i zic Ancora?

Resturile de molid le-am pus la lucru încropind un taburet multifuncțional (despre care am să povestesc separat), iar cele de fag, printre altele, pentru un suport pentru… role de hârtie igienică care să meargă cumva la set cu mobilierul propriu-zis. Chiar dacă – în cantitate absolută – nu aveam foarte mult lemn la dispoziție, pentru obiecte mici era suficient cât să pot să mă abat spre forme mai elaborate.

Citește mai departe