Registrazione Aziende in FlowPay
Le maestranze coinvolte nel cantiere, prima di poter operare, devono essere registrate al progetto in flowpay. Tale registrazione, crea il wallet per la maestranza destinato alle movimentazioni di somme di denaro. Attenzione, Il wallet appena creato, sarà pienamente operativo solo dopo essere stato connesso con un conto corrente reale.
Questa è una funzionalità che viene innescata SOLO dall'handler del relativo task.
Tutte le Maestranze, sia company che user (professionisti, designer, etc.), seguono lo stesso flusso.
Tramite il token del customer, viene richiesto a flowpay di generare un certo numero di contratti (pari al numero di maestranze che si intendono sottoscrivere al site). FP li definisce SiteWorkers.
Il metodo che espleta l'operazione è FlowpayService::registerSiteWorkers(Project $project, $target = [])
Questo, estrae le maestranze del progetto non ancora registrate e per ognuna, tramite il metodo FlowpayService::registerSiteWorker(Project $project, $worker, $token), richiede a fp di generare un contratto tramite la chiamata: post('constructions/contracts', $data, $token);
Questo contratto (identificato da un contract_id) viene assegnato (SOLO LATO AGORA') alla maestranza in lavorazione.
ATTENZIONE!!! Il contratto in questa fase NON HA ANCORA NESSUNA OPERATIVITA' LATO FLOWPAY
Una volta in possesso dei contratti, per renderli operativi, per ogni maestranza, bisogna accettarli. Il metodo che effettua l'accettazione è FlowpayService::acceptContract(Project $project, $siteWorker). Una volta attivato il contratto, contestualmente viene ATTIVATO IL WALLET PER QUELLA MAESTRANZA.
chiamata per l'accettazione: patch('constructions/contracts/'.$siteWorker->contract_id, [], $token); Il token deve essere quello del siteWorker.
Questa operazione viene espletata in maniera massiva dal metodo FlowpayService::acceptContracts(Project $project)
Database
Tutti i dati relativi a questo flusso vengono memorizzati nella tabella flowpay_site_workers. Tabella polimorfica (User, Company)
Le colonne della tabella sono:
- model_type - classe dell'oggetto di appartenenza (User o Company);
- model_id - id dell'oggetto di appartenenza;
- project_id - Id di cantiere
- contract_id - Id di invito a far parte del cantiere;
- accepted_contract_id - ad avvenuta accettazione dell'invito, verrà riempito con lo stesso valore del contract_id, null altrimenti.