Aplicatii personalizate de gestiune a ofertelor

Tocmai am finalizat un proiect interesant la care am lucrat vreo 20h. Este vorba despre o extensie la un CMS pentru website-ul www.davo.ro care sa permita generarea si printarea de oferte personalizate.

Acest modul a fost necesar in contextul in care clientul are un stand la expozitia Digital Print&Sign (www.printsign.ro) si doreste personalizarea rapida a ofertelor sale.

Ce am facut noi?

Oferta DAVO PrintAm creat o extensie pentru aplicatia CMS deja existenta prin care poti sa iti alegi anumite produse si sa le asociezi unei oferte.

Ai tot felul de optiuni de modificare a preturilor (aplicare de discounturi, editare manuala), poti crea un numar nelimitat de oferte, poti salva/modifica ofertele existente. La final programul genereaza automat un fisier html pregatit pentru print, pe mai multe pagini in functie de numarul de produse adaugate.

Partea aceasta a aplicatiei a necesitat doar interogari de baza de date, un pic de php, html etc.

Toate detaliile legate de produse sunt preluate automat de pe siteul www.davo.ro, astfel ca generarea acestor oferte se face foarte usor.

La cererea clientului am utilizat mai multe culori vii care sa te duca cu gandul la printing. Credem noi ca am facut o treaba buna cu acest design.

Ce probleme am intampinat?

Partea cea mai complicata a aplicatiei a reprezentat-o printarea ofertei html. Am sesizat ca diversele browsere (IE, FF, Chrome) toate folosesc alte standarde in ceea ce priveste “Print Preview”. Nu am gasit nici o solutie generala pentru toate asa ca ne-am axat pe FF (fiind o aplicatie de backend nu este necesar sa se face optimizari pentru toate browserele). Niste Tips and Tricks pentru cei interesati:

  1. Am creat un css special pentru aceasta pagina si am deschis-o intr-o fereastra noua de pop-up. I-am dat dimensiunile de 1020 cu 600px.
  2. Un A4 are un raport de aproximativ 1.4 intre width/height asa ca am creat un tabel care sa aiba 1000x1400px. Avem un header, footer si 4 produse generate dinamic. Pentru fiecare pagina am creat dinamic un alt tabel.
  3. Pentru a ne asigura ca tabelele sunt printate pe pagini diferite am folosit proprietatea CSS:
    table {
    page-break-after:always;
    }
  4. Daca o pagina nu avea 4 produse in componenta am completat pagina cu celule de tabel goale astfel incat footer-ul sa se pastreze in partea de jos a paginii tot timpul.

Au fost niste ore in care am mai invatat ceva. Mergem mai departe la urmatorul proiect… Ceva cu dinozauri probabil.

Comments are closed.