Invio dati con pagamento e data scadenza

Ciao a tutti, sto facendo un sacco di prove di invio messaggi all’appIO per specializzarli in base al contesto. Sto sfruttando (o almeno ci provo) le varie opzioni previste ma mi sto scontrando con l’impostazione della data di scadenza del pagamento: non ci sono riuscito! Sto usando per comodità l’importazione da xls con il connettore javascript ma anche se l’import va a buon fine, il messaggio che arriva non ha la due_date valorizzata. Ho provato a cambiare formato alla data, a inserire il datetime sia nell’xls che a modificare la funzione di translate ma senza successo.

Qualcuno di voi c’è già passato?

Ciao,
nel file ‘translate.js’ se metti un console log tipo questo, cosa ti stampa?
magari riusciamo a capire che cosa arriva e come formattarlo

 // extract and convert fields using the config
function extract(key, data) {
    if(key === 'due_date') {
        console.log(data)
    }
    let field_map = config["field_map"]
    let convert = config["convert"]
    let value = undefined
    if(key in field_map) {
        value = data[field_map[key]]
    }
    if(key in convert) {
        value = convert[key](value)
    }
    if(key === 'due_date') {
        console.log(value.toString())
    }
    return value.toString()
}

La mega menata di excel è che le date sono in un formato tutto suo e occorre convertirle per produrre un valore valido per JSON. Per questo motivo nel file config.js puoi applicare una funzione di conversione, e c’è un esempio di come fare per tradurre una data in formato excel in formato JSON.

E sì @msciab, la data è sempre una rogna soprattutto con xls o sheet, infatti ho provato anche a cambiare funzione di conversione ma non gli è piaciuta. Ho controllato e il campo arriva NULL a destinazione. Sto cercando di fare come suggerisce @magicianred ma tra una telefonata e l’altra visto che è lunedì :frowning:

Se guardi il codice ci sta un modo di fare uno unit test senza che devi litigare con il deploy.
Se metti il codice che stai provando a scrivere in un repo pubblico con un file ti test magari riusciamo a darti una mano sul codice :).

Use the source, Luke…

E voi volete promuovermi a developer junior ma dovete portare pazienza che oggi non è una giornata tranquilla e quindi uso martello e scalpello!
Comunque, usando the source come proposto dal maestro Obi One e ho fatto un bel passo avanti: ora il campo due_date arriva popolato!

amount: 300
due_date: “2020-10-06T12:24:59.999Z”
fiscal_code: “SCCNDR68T05L483L”
invalid_after_due_date: true
markdown: “Buongiorno Andrea!
E’ stato emesso un avviso di pagamento TARI a tuo nome!
Puoi pagarlo direttamente dall’app oppure consultarne il dettagli nella tua area riservata sul nostro sito.”
notice_number: “0123456789012340”
subject: “Ciao Andrea!”
time_to_live: 3600

La funzione che ho usato è leggermente diversa da quella proposta ma funziona. Ho provato sia con una data che con un date-time.

“due_date”: function(v) { return new Date((v - 25569)864001000) }

Ora il problema è che sull’app non arriva il dato! La formattazione mi sembra corretta e anche compliant con le specifiche dei WS esposti dal backoffice. Non so dove cercare il payload che viene inviato. Dalla console vedo correttamente la chiamata al metodo send con i suoi bei dati ma poi io mi fermo.

Ci sta il debug (la cache) che dovrebbe dirti cosa è stato mandato… E assicurati di selezioonare Production come target il default è local (per debug).

Certo, ma espone solo una sintesi dei dati infatti volevo proporre di esporre tutto il contenuto della chiamata. Un esempio:

Key:

sent:SCCNDR68T05L483L

Value:

{ "sent:SCCNDR68T05L483L": 
{ "subject": "Ciao Andrea!", 
"markdown": "Buongiorno Andrea!<br>E' stato emesso un avviso di pagamento TARI a tuo nome!<br>Puoi pagarlo direttamente dall'app oppure consultarne il dettagli nella tua [area riservata](https://civilianext.soluzionipa.it/portal/servizi/pagamenti) sul nostro sito.", "fiscal_code": "SCCNDR68T05L483L" } 
}

Tutte le prove le faccio in produzione così vedo l’effetto sull’app (anche per vedere come viene formattato il contenuto del messaggio con i comandi markdown)

Ho seguito la guida e ho fatto un fork e ho riportato le modifiche fatte, dovresti vederlo.
Ci sono ancora le entry di debug verso la console che quando gira tutto tolgo.