Projekt

Allgemein

Profil

Herunterladen (2,74 KB) Statistiken
| Zweig: | Markierung: | Revision:
package SL::BackgroundJob::ImportPurchaseInvoiceEmails;

use strict;
use warnings;

use parent qw(SL::BackgroundJob::Base);

use SL::IMAPClient;
use SL::DB::Manager::EmailImport;

sub sync_email_folder {
my ($self) = @_;
my $folder = $self->{job_obj}->data_as_hash->{folder};

my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{purchase_invoice_emails_imap}});

my $email_import = $imap_client->update_emails_from_folder(
$folder,
{
email_journal => {
extended_status => 'purchase_invoice_import',
},
}
);
return unless $email_import;

return "Created email import: " . $email_import->id;
}

sub delete_email_imports {
my ($self) = @_;
my $job_obj = $self->{job_obj};

my $email_import_ids_to_delete =
$job_obj->data_as_hash->{email_import_ids_to_delete} || [];

my @deleted_email_imports_ids;
foreach my $email_import_id (@$email_import_ids_to_delete) {
my $email_import = SL::DB::Manager::EmailImport->find_by(id => $email_import_id);
next unless $email_import;
$email_import->delete(cascade => 1);
push @deleted_email_imports_ids, $email_import_id;
}
return unless @deleted_email_imports_ids;

return "Deleted email import(s): " . join(', ', @deleted_email_imports_ids);
}

sub clean_up_imported_emails {
my ($self) = @_;
my $folder = $self->{job_obj}->data_as_hash->{folder};

my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{purchase_invoice_emails_imap}});

$imap_client->clean_up_imported_emails_from_folder($folder);

return "Cleaned imported emails";
}

sub run {
my ($self, $job_obj) = @_;
$self->{job_obj} = $job_obj;

my @results;
push @results,