Jump to content

Esportazione ordini per lettere di vettura corriere SDA


ChelOne

Recommended Posts

Salve a tutti,

 

dopo anni di oscommerce mi sto convertendo a PrestaShop, questo è il mio primo messaggio qui sul forum e colgo l'occasione per salutare la community :)

 

Vorrei sapere se esiste un modulo che faccia l'export degli ordini in partenza per creare le lettere di vettura per il corriere SDA con il programma SDA InvioWeb.

 

E' una cosa relativamente semplice, si tratta di esportare in un file di testo o csv i nominativi con gli indirizzi e i dati su contrassegno, peso, ecc... In giro non ho trovato niente, se non generici moduli di export che non so se riescono a generare un file esattamente come vuole Invioweb.

Link to comment
Share on other sites

  • 1 month later...

Salve, questa funzione serve anche a me. E' strano che non si possano esportare gli ordini già come default. E' una funzione semplicissima, basta creare un interfaccia con MySQL. Ce la potremmo far fare su misura volendo.

 

SDA con il software proprietario InvioWeb poi offre l'importazione. Probabilmente anche altri corrieri come BRT Bartolini oppure GLS sarebbero in grado di importare il file per non dover inserire i dati per la lettera di vettura a mano. C'è qualcuno che sa quali corrieri Italiani offrono già una soluzione completa compativile con Prestashop?

 

Ho fatto un post qualche giorno fa, chiedendo come sono gestibili i supplementi dei corrieri per "contrassegno" oppure per "contrassegno su appuntamento", ma non ho avuto ancora nessun riscontro. C'è qualcuno che mi può aiutare?

 

Grazie mille

ciao

Link to comment
Share on other sites

Ciao Lorenzo,

 

SDA ha una documentazione tecnica molto precisa. Praticamente loro permettono di importare tutti i campi che loro utilizzano, fino al minimo dettaglio, cioè anche cose che di solito usano solo pochissimi. Saranno una sessantina di campi.

 

L'importazione nel software SDA InvioWeb avviene in .csv.

 

Per amministrare gli ordini semplici bastano ca. 10-15 informazioni, cioè i dati del destinatario...

Ditta, Nome, CAP, Via, Località, Prov., Telefono,

 

poi ci vuole l'informazione se si tratta di spedizione Raccomandata oppure Pacchetto normale,

 

il peso di solito viene comunicato sempre con Kg 1, dato che il peso viene preso nello smistamento in automatico,

poi collo o multicollo,

se contrassegno allo l'importo,

servizi speciali come .. consegna su appuntamento, oppure consegna entro ore ...

 

più o meno è tutto.

 

In allegato ho caricato la parte del manuale del software SDA dove sono specificati i tracciati che servono per l'importazion in automatico. Il punto 11.4 del manuale spiega il tracciato per la creazone delle lettere di vettura con barcode.

 

Diciamo che per chi spedisce più di 3 pacchetti al giorno è un notevole risparmio di tempo, perché le lettere di vettura con i dati che già il cliente uan volta ha compilato online non bisogna più inserirli.

 

 

Saluti

Roberto

Manuale-SDA-tracciato-LDV.pdf

Link to comment
Share on other sites

Buongiorno Lorenzo,

 

si, è dagli ordini "preparazione in corso" che servono i dati. Io sto appena iniziando ad usare prestashop e per me è importante avere un "workflow" snello e veloce. Fino ad ora ho lavorato solo con lo shop ttproducts di TYPO3 ma non si è dimostrato vantaggioso per la SEO.

 

Un modulo per Prestashop che esporta tutti i campi necessari per spedire via corriere sarebbe molto utile. E' quasi indifferente con che corriere si spedisce perché più o meno tutti i corrieri lavorano con lo stesso pool di dati.

 

Una volta esportati i dati da Prestashop in .csv ognuno si potrà arrangiare con il software del suo corriere per importare quei campi che servono nel loro sistema.

 

Se hai bisogno di ulteriori informazioni sono a tua piena disposizone.

 

Saluti

Roberto

Link to comment
Share on other sites

  • 2 weeks later...

Centrato. Il tracking number di un corriere diventa sempre più importante per allegerire il problema dell'assenza alla consegna del corriere. Con il tracking number possiamo dare più responsabilità al cliente che è in attesa del pacco ed è in grado di organizzarsi meglio per prenderlo in consegna. Se il pacco torna i deposito e va in giacenza, sono costi che mordono al guadagno del venditore.

 

Ma come si fà ad automatizzare il tracking number? Questo viene emesso solo al momento dell'emissione della lettera di vettura e ce l'abbiamo su carta, spesso con BARCODE. Ma devo tornare in Prestashop Backoffice ad inserire il tracking number manualmente? Un bel lavoraccio!

 

Qualcuno ha un'idea?

Ciao

Roberto

Link to comment
Share on other sites

Centrato. Il tracking number di un corriere diventa sempre più importante per allegerire il problema dell'assenza alla consegna del corriere. Con il tracking number possiamo dare più responsabilità al cliente che è in attesa del pacco ed è in grado di organizzarsi meglio per prenderlo in consegna. Se il pacco torna i deposito e va in giacenza, sono costi che mordono al guadagno del venditore.

 

Ma come si fà ad automatizzare il tracking number? Questo viene emesso solo al momento dell'emissione della lettera di vettura e ce l'abbiamo su carta, spesso con BARCODE. Ma devo tornare in Prestashop Backoffice ad inserire il tracking number manualmente? Un bel lavoraccio!

 

Qualcuno ha un'idea?

Ciao

Roberto

magari si potesse tornare in backoffice e inserire, ancora purtroppo non c'è la funzione che permetta di inviare il codice di tracking al cliente che io sappia.

Forse esiste al massimo qualche modulo che fa questo lavoro.

Link to comment
Share on other sites

Ciao Totti,

per quanto che sappia si può fare ma è un lavoraccio farlo manualmente. Meno male che mi son comprato un barcode reader con questo già andrà meglio. Ma poi, avendo inserito il tracking number nell'ordine casella spedizioni, devo avvisare il cliente via e-mail manualmente oppure ci pensa PS a mandarlo in automatico?

Come fate voi?

Link to comment
Share on other sites

  • 9 months later...

Tu devi esportare un file da caricare successivamente sul programma che il corriere ti fornirà.

 

Dipende da che corriere usi.

 

dove posso esportare? per favore ogni info è ben accetta sono ancora pieno di dubbi su questa questione dei corrieri  :blink:

se avessi saputo dell'assenza di una guida per lo sviluppatore approfondita in italiano per PS credo ci avrei pensato un po' di più su prima di scegliere..

Edited by alfredopacino (see edit history)
Link to comment
Share on other sites

Ci sono o moduli già fatti oppure tramite mysql te li esporti da solo.

Purtroppo non sapendo bene cosa devi fare posso darti solo questi consigli.

 

non so ancora quale corriere useranno credo mail boxes etc, che voi sappiate ha un software apposito?

ho notato che anche inserendo a mano il tracking number parte la mail al cliente con "oggetto pacco in viaggio", ma non contiene il tracking number! neanche nell'account cliente sul sito ve n'è traccia! ma come si gestiscono le spedizioni? :huh2:

altra cosa: ma posso sapere per favore se lo status ordine "in attesa di pagamento", "pagamento accettato", "preparazione in corso" devo cambiarlo io o ci pensa PS? :huh:

Edited by alfredopacino (see edit history)
Link to comment
Share on other sites

io ho realizzato tool che esporta  file già funzionanti per GLS ed SDA. Chiaramente ho creato una connessione diretta al database, ma sarebbe interessante realizzare un modulino che esporti per qualsiasi corriere all'interno del backoffice. 

Non sono un programmatore esperto, ne lo faccio per professione, non sono ancora riuscito a capire bene la logica di Prestashop per agganciarmi all'interno, ma se qualcuno si vuole cimentare possiamo farlo insieme.

<?php
if ($id_order != "") {
$query="select o.id_shop, oi.id_order_invoice,cus.date_add, s.iso_code, a.id_country, a.id_state, s.name AS sname, c.name AS cname, cu.id_currency, cu.name AS currname, cu.conversion_rate AS currrate from ". _DB_PREFIX_."orders o";
$query .= " left join ". _DB_PREFIX_."order_invoice oi on o.id_order=oi.id_order";
$query .= " left join ". _DB_PREFIX_."address a on o.id_address_delivery=a.id_address";
$query .= " left join ". _DB_PREFIX_."country_lang c on a.id_country=c.id_country AND c.id_lang='".$id_lang."'";
$query .= " left join ". _DB_PREFIX_."state s on a.id_country=s.id_country  AND a.id_state=s.id_state";
$query .= " left join ". _DB_PREFIX_."currency cu on cu.id_currency=o.id_currency";
$query .= " left join ". _DB_PREFIX_."customer cus on cus.id_customer=o.id_customer";
$query.=" WHERE o.id_order ='".mysql_real_escape_string($id_order)."'";
$res=dbquery($query);
$row=mysql_fetch_array($res);
$id_country = $row['id_country'];
$id_state = $row['id_state'];
$id_shop = $row['id_shop'];
$id_order_invoice = $row['id_order_invoice'];
$provincia = $row['iso_code'];
$order_currency = $row['id_currency'];
$order_currname = $row['currname'];
$conversion_rate = $row['currrate'] / $cur_rate;
$data_cliente = $row['date_add'];
$nation =$row['cname'];

if ($id_order) {
	
$query="select distinct o.*,a.* from ". _DB_PREFIX_."orders o LEFT JOIN "._DB_PREFIX_."address a ON a.id_address=o.id_address_delivery";

$query .= " where o.id_order=".mysql_real_escape_string($id_order);

$res=dbquery($query);
if (mysql_num_rows($res)>0) {
$order=mysql_fetch_array($res);
$id_customer=$order['id_customer'];
$id_lang=$order['id_lang'];
$id_cart=$order['id_cart'];
$payment=$order['payment'];
$module=$order['module'];
$invoice_number=$order['invoice_number'];
$delivery_number=$order['delivery_number'];
$total_paid_tax_incl=$order['total_paid_tax_incl'];
$total_products=$order['total_products'];
$total_discounts=$order['total_discounts'];
$total_shipping=$order['total_shipping'];
$total_wrapping=$order['total_wrapping'];
$firstname=$order['firstname'];
$lastname=$order['lastname'];
$company=$order['company'];
$carrier = $order['id_carrier'];
$address = $order ['address1'];
$postcode = $order ['postcode'];
$city = $order ['city'];
$phone = $order ['phone'];
$reference = $order ['reference'];
$mobile =$order ['phone_mobile'];
$codice_ficale =$order ['dni'];
}
} 

Con queste 2 query si possono reperire tutti i campi voluti, mi sembra manchi la mail. 

Per GLS ho creato poi un array con i campi necessari e dopo averli assegnati ho salvato il file .txt (i campi devono avere anche degli spazi).

Per SDA ho usato una funziona che mi salva lo stesso array in un file CSV con tutti i campi

Se qualcuno vuole collaborare e farmi capire come posso fare la stessa cosa all'interno di Prestashop, vorrei che fosse possibile aggiungere un pulsante nel dettaglio dell'ordine, e quindi salvare direttamente da li il file.

Con il mio tool purtroppo devo uscire da prestashop ed inserire il mio numero d'ordine da cercare

grazie a tutti

Link to comment
Share on other sites

ragazzi scusate l'ot ma io ho parlato col commercialista, e anche la fattura generata da PS non è granché a norma di legge per l'italia (a voler essere buoni) servono i dati dell'azienda in intestazione

qui ho postato la richiesta d'aiuto

http://www.prestashop.com/forums/topic/309867-invoice-customization/?do=findComment&comment=1569569

 

e questo è un ordine dei dati decente

shop name
COMPANY REAL NAME
REGISTRATION CODE
ADDRESS
ADDRESS LINE2
CITY (PROVINCE) - COUNTRY
TELEPHONE - FAX 

se qualcuno sapesse realizzarla sarebbe d'aiuto a tutta la comunità italiana

anche i dati del cliente devono avere un ordine diverso, quindi bisogna trovare il modo di cambiare l'ordine

Edited by alfredopacino (see edit history)
Link to comment
Share on other sites

Ragazzi io sto cercando di realizzare questo modulo, ma non riesco a capire come passare una variabile al Template. Mi spiego meglio, nel dettaglio ordine lato Admin ho creato un box dove devo aggiungere i miei pulsanti.

post-728180-0-75285100-1393362730_thumb.png
tutto funziona fino ad ora.
Ho creato quindi il mio controller:
 
<?php

/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE

*/

class AdminCarrierRaf extends AdminOrdersControllerCore{

    public function __construct()
    {
        $this->table = 'order';
        $this->className = 'Order';
        $this->lang = false;
        $this->addRowAction('view');
        $this->explicitSelect = true;
        $this->allow_export = true;
        $this->deleted = false;
        $this->context = Context::getContext();

        $this->_select = '
		a.id_currency,
		a.id_order AS id_pdf,
		CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
		osl.`name` AS `osname`,
		os.`color`,
		IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer) > 1, 0, 1) as new';

        $this->_join = '
		LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
		LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = a.`current_state`)
		LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)$this->context->language->id.')';
        $this->_orderBy = 'id_order';
        $this->_orderWay = 'DESC';
        $this->shopLinkType = 'shop';


        if (Tools::isSubmit('id_order'))
        {
            // Save context (in order to apply cart rule)
            $order = new Order((int)Tools::getValue('id_order'));
            if (!Validate::isLoadedObject($order))
                throw new PrestaShopException('Cannot load Order object');
            $this->context->cart = new Cart($order->id_cart);
            $this->context->customer = new Customer($order->id_customer);
        }

        parent::__construct();
    }
public function displayContent()
{

global $cart;
    $order = new Order((int)Tools::getValue('id_order'));
self::$smarty->assign('orderTotal', ($cart->getOrderTotal() / 1.24) - $cart->getOrderShippingCost());
 $order = new Order($this->id_order);
	    $cart = new Cart($order->id_cart);
	    $description="";
	    foreach ($cart->getProducts() AS $k=>$v){
		    $description.=$v['name']."X".$v['quantity'];
	    }	   
	    $description=urlencode($description);
	   
	    $this->context->smarty->assign(array(
	    'total_to_pay'=>$order->getOrdersTotalPaid(),
	    'description'=>$description
	    ));
parent::displayContent();
}
	public function generateInvoicePDFByIdOrder($id_order)
	{
		$order = new Order((int)$id_order);
		if (!Validate::isLoadedObject($order))
			die(Tools::displayError('The order cannot be found within your database.'));

		$order_invoice_list = $order->getInvoicesCollection();
		Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list));
		$this->generatePDF($order_invoice_list, PDF::TEMPLATE_INVOICE);
	}
		public function processGenerateInvoicesPDF()
	{
		$order_invoice_collection = OrderInvoice::getByDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to'));

		if (!count($order_invoice_collection))
			die(Tools::displayError('No invoice was found.'));

		$this->generatePDF($order_invoice_collection, PDF::TEMPLATE_INVOICE);
	}
	

}

dove dovrei creare il mio metodo che si aggancia al pulsante, e funziona tutto solo per il fatto che non riesco a prelevare la variabile id_order.

Credo che dovrei passarla con in metodo init?

Aiutatemi

Link to comment
Share on other sites

  • 3 weeks later...

Se può esservi utile, io ho scritto un software che crea i file CSV, compatibili con GLS, eBoost, SDA, BRT e SpedireWeb.

 

Inoltre ho creato un modulo per prestashop che permette di passa al mio software tutte le informazioni del destinatario, il peso dell'ordine, l'eventuale importo del contrassegno e, impostando correttamente alcuni settings, crea automaticamente il file CSV in una cartella sull'HD al singolo click dalla pagina "dettaglio ordine" di prestashop.

 

Se il sito/software del corriere viene quindi impostato per la stampa "automatica"/"in background" ascoltando la cartella creata dal mio software, stampa subito anche la LDV.

 

Trovate tutti i detagli qui:

http://www.maipiusenza.com/LDV/

Modulo prestashop:

http://www.maipiusen..._prestashop.php

 

Inoltre sto lavorando ad una funzione aggiuntiva del software che permetta di elaborare  in un colpo solo un file contenete i dati di ordini multipli (esportati da prestashop, ebay, amazon o qualsiasi altra fonte visto che gli si può spiegare l'ordine dei campi che riceve per assegnarli in modo corretto a nome, cap, via ecc.). Elaborato tale file il software crea un CSV multiriga compatibile con i vari corrieri, così da stampare in un colpo un tot di LDV.

 

Con questa funzione aggiuntiva potrebbe quindi lavorare bene con il modulo al quale sta lavorando pinarello se invece di creare il CSV per il singolo ordine, lo si creasse per un tot di ordini selezionati dalla pagina con la lista degli ordini.

 

Nadia

Link to comment
Share on other sites

  • 6 months later...

 

Ragazzi io sto cercando di realizzare questo modulo, ma non riesco a capire come passare una variabile al Template. Mi spiego meglio, nel dettaglio ordine lato Admin ho creato un box dove devo aggiungere i miei pulsanti.

 
tutto funziona fino ad ora.
Ho creato quindi il mio controller:
<?php

/*
* 2007-2013 PrestaShop
*
CUT
...
...
	}
	

}

dove dovrei creare il mio metodo che si aggancia al pulsante, e funziona tutto solo per il fatto che non riesco a prelevare la variabile id_order.

Credo che dovrei passarla con in metodo init?

Aiutatemi

 

salve, mi chiedevo se poi questo progetto è andato avanti.

Conosco già LDV ma mi chiedevo se pinarello avesse proseguito.

Edited by KintaroOe (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...