Hevelop / invoice-request

Magento 2 module to generate invoice request field in checkout for italian invoicing
GNU Affero General Public License v3.0
16 stars 12 forks source link

Gli attributi personalizzati non vengo salvati nel db - Magento versione 2.3.3 #1

Closed carminemilieni closed 4 years ago

carminemilieni commented 4 years ago

https://github.com/Hevelop/invoice-request/blob/7c71045078cc35f37fc03cb5672bd2b64d598af5/Observer/SaveDataToOrderObserver.php#L46

Come da titolo, $quote->getEcWantInvoice(); funziona regolarmente e restituisce il valore corretto mentre $order->setEcWantInvoice($quote->getEcWantInvoice()); chiamate come questa impostano il valore solo temporaneamente, e non sono riscontrabili successivamente al salvataggio nel database. Ho riscontrato un'anomalia analoga con un mio attributo d'ordine custom, e sono stato costretto a tamponare eseguendo una query

carminemilieni commented 4 years ago

Mi correggo non funziona solo con PayPal express checkout

SamueleMartini commented 4 years ago

https://github.com/Hevelop/invoice-request/blob/7c71045078cc35f37fc03cb5672bd2b64d598af5/Observer/SaveDataToOrderObserver.php#L46

Come da titolo, $quote->getEcWantInvoice(); funziona regolarmente e restituisce il valore corretto mentre $order->setEcWantInvoice($quote->getEcWantInvoice()); chiamate come questa impostano il valore solo temporaneamente, e non sono riscontrabili successivamente al salvataggio nel database. Ho riscontrato un'anomalia analoga con un mio attributo d'ordine custom, e sono stato costretto a tamponare eseguendo una query

Ciao carminemilieni, quella chiamata infatti non ha lo scopo di impostare il valore a database. È inserita in un observer, e un observer, da best practice, non deve mai essere responsabile di consolidare dati. Lo scopo di quel pezzo di codice è solo quello di passare i valori all'oggetto, poi è la procedura nativa di Magento che, al momento del salvataggio, trova corrispondenza tra il data dell'oggetto e il db schema e consolida i dati.

Con PayPal express checkout, intendi il checkout fatto direttamente sul sito di PayPal? O compili il checkout su Magento e scegli come PayPal come metodo di pagamento al secondo step?

carminemilieni commented 4 years ago

https://github.com/Hevelop/invoice-request/blob/7c71045078cc35f37fc03cb5672bd2b64d598af5/Observer/SaveDataToOrderObserver.php#L46

Come da titolo,

$quote->getEcWantInvoice(); funziona regolarmente e restituisce il valore corretto

mentre

$order->setEcWantInvoice($quote->getEcWantInvoice()); chiamate come questa impostano il valore solo temporaneamente, e non sono riscontrabili successivamente al salvataggio nel database.

Ho riscontrato un'anomalia analoga con un mio attributo d'ordine custom, e sono stato costretto a tamponare eseguendo una query

Ciao carminemilieni,

quella chiamata infatti non ha lo scopo di impostare il valore a database. È inserita in un observer, e un observer, da best practice, non deve mai essere responsabile di consolidare dati.

Lo scopo di quel pezzo di codice è solo quello di passare i valori all'oggetto, poi è la procedura nativa di Magento che, al momento del salvataggio, trova corrispondenza tra il data dell'oggetto e il db schema e consolida i dati.

Con PayPal express checkout, intendi il checkout fatto direttamente sul sito di PayPal? O compili il checkout su Magento e scegli come PayPal come metodo di pagamento al secondo step?

Compilo il form nella finestra popup, quando il pagamento avviene con successo il popup si chiude avviene un redirect e solo allora viene richiamato L observer... Ma i dati di fatturazione vengono persi nel frattempo

SamueleMartini commented 4 years ago

https://github.com/Hevelop/invoice-request/blob/7c71045078cc35f37fc03cb5672bd2b64d598af5/Observer/SaveDataToOrderObserver.php#L46

Come da titolo,

$quote->getEcWantInvoice(); funziona regolarmente e restituisce il valore corretto

mentre

$order->setEcWantInvoice($quote->getEcWantInvoice()); chiamate come questa impostano il valore solo temporaneamente, e non sono riscontrabili successivamente al salvataggio nel database.

Ho riscontrato un'anomalia analoga con un mio attributo d'ordine custom, e sono stato costretto a tamponare eseguendo una query

Ciao carminemilieni, quella chiamata infatti non ha lo scopo di impostare il valore a database. È inserita in un observer, e un observer, da best practice, non deve mai essere responsabile di consolidare dati. Lo scopo di quel pezzo di codice è solo quello di passare i valori all'oggetto, poi è la procedura nativa di Magento che, al momento del salvataggio, trova corrispondenza tra il data dell'oggetto e il db schema e consolida i dati. Con PayPal express checkout, intendi il checkout fatto direttamente sul sito di PayPal? O compili il checkout su Magento e scegli come PayPal come metodo di pagamento al secondo step?

Compilo il form nella finestra popup, quando il pagamento avviene con successo il popup si chiude avviene un redirect e solo allora viene richiamato L observer... Ma i dati di fatturazione vengono persi nel frattempo

Ciao carminemilieni, abbiamo implementato la compatibilità con PayPal express checkout con la modalità "in-context", dovrebbe funzionarti se aggiorni all'ultima versione 1.1.5

Grazie per la segnalazione, un saluto.