Analýza dat přijatých faktur a automatický import do CRM – WordPress Plugin
Majitelé firmy pozitiv.cz mě oslovili se zajímavou poptávkou: potřebovali automaticky importovat přijaté faktury v PDF do CRM Podio, a to pomocí unikátního nástroje Rossum.
Analýza údajů na faktuře
Rossum je služba, která dokáže pomocí umělé inteligence analyzovat data na faktuře v PNG nebo PDF a přes API vrátit data ve strojově čitelné podobě. Podívejte se, jak funguje jejich API.
Vytvořil jsem tedy WordPress plugin, který:
- načte obsah emailové schránky, kam se posílají přijaté faktury
- stáhne přílohy a odešle je na API služby Rossum
- jednou za 5 minut kontroluje, zda už se faktura analyzovala
- pokud nastal v analýze problém, pošle upozornění emailem, pokud se faktura analyzovala v pořádku, vytvoří přes API Podio nový záznam s vyplněnými údaji a originálem faktury jako přílohou
Na načítání emailů jsem použil knihovnu IMAP, Podio má svoji PHP knihovnu, Rossum má uvedené příklady implementace.
Ukázka kódu, který zařídí načtení emailu, stažení přílohy a odeslání dokumentu na API Rossum, pak vypadá takto:
/** * Upload invoices * * @param \WP_REST_Request $request Full data about the request. * * @return \WP_Error|\WP_REST_Request|\WP_REST_Response | bool */ public function upload_invoices( $request ) { // Fetch emails foreach ( $this->imap->get_messages() as $message ) { /** @var $message \Ddeboer\Imap\Message */ $attachments = $message->getAttachments(); if ( ! $attachments || empty( $attachments ) ) { continue; } foreach ( $attachments as $attachment ) { // @var $attachment \Ddeboer\Imap\Message\Attachment $filename = $attachment->getFilename(); $path = ROSSUMPODIO_TMP_PATH . $filename; file_put_contents( $path, $attachment->getDecodedContent() ); $file_id = $this->rossum->upload_file( $path ); if ( is_wp_error( $file_id ) ) { wp_mail( $this->podio->error_email, sprintf( 'Error uploading invoice %s', $attachment->getFilename() ), $file_id->get_error_message() ); continue; } $this->db->save_item( $file_id, $filename ); } $message->move( $this->imap->get_mailbox( $this->imap->mailbox_name_trash ) ); $this->imap->expunge(); } return new \WP_REST_Response( array( 'status' => 'success' ), 200 ); }
Automatický import faktur do CRM ušetří firmě pozitiv.cz několik hodin práce týdně. Pokud se vám takové řešení líbí, nebo potřebujete jinou integraci služeb přes API, kontaktujte mě.
Václav Greif se programování pro Wordpress věnuje více než 16 let. Za tu dobu nasbíral mnoho zkušeností s tvorbou pluginů pro Wordpress, úpravou šablon a programováním komplexních funkcionalit. Věnuje se programování pro Wordpress a školení programátorů.