Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: various fixes to data sync with CRM #10494

Merged
merged 4 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cgi/import_file_process.pl
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
use ProductOpener::Lang qw/$lc lang/;
use ProductOpener::Mail qw/:all/;
use ProductOpener::Producers qw/convert_file get_minion load_csv_or_excel_file normalize_column_name/;
use ProductOpener::CRM qw/update_company_last_import_type/;
use ProductOpener::Orgs qw/update_last_import_type/;

use Apache2::RequestRec ();
use Apache2::Const ();
Expand Down Expand Up @@ -202,7 +202,7 @@

store("$BASE_DIRS{IMPORT_FILES}/${Owner_id}/import_files.sto", $import_files_ref);

update_company_last_import_type($Org_id, 'CSV');
update_last_import_type($Org_id, 'CSV');

$template_data_ref->{process_file_id} = $file_id;
$template_data_ref->{process_import_id} = $import_id;
Expand Down
5 changes: 2 additions & 3 deletions cgi/product_multilingual.pl
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@
use ProductOpener::API qw/get_initialized_response/;
use ProductOpener::APIProductWrite qw/skip_protected_field/;
use ProductOpener::ProductsFeatures qw/feature_enabled/;
use ProductOpener::Orgs qw/update_import_date/;
use ProductOpener::CRM qw/update_company_last_import_type/;
use ProductOpener::Orgs qw/update_import_date update_last_import_type/;

use Apache2::RequestRec ();
use Apache2::Const ();
Expand Down Expand Up @@ -277,7 +276,7 @@ ($product_ref)
# sync crm
if (defined $Org_id) {
update_import_date($Org_id, $product_ref->{created_t});
update_company_last_import_type($Org_id, 'Manual import');
update_last_import_type($Org_id, 'Manual import');
}

$type = 'add';
Expand Down
15 changes: 14 additions & 1 deletion lib/ProductOpener/CRM.pm
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ package ProductOpener::CRM;

use ProductOpener::PerlStandards;
use Exporter qw< import >;
use experimental 'smartmatch';

BEGIN {
use vars qw(@ISA @EXPORT_OK %EXPORT_TAGS);
Expand Down Expand Up @@ -88,7 +89,8 @@ my $crm_data;
my @required_tag_labels = qw(onboarding);
# Category (res.partner.category) must be defined in Odoo :
# Contact > contact (individual or company) form > Tags field > "Search More"
my @required_category_labels = ('Producer', 'AGENA3000', 'EQUADIS', 'CSV', 'Manual import',);
my @data_source = ('AGENA3000', 'EQUADIS', 'CSV', 'Manual import',);
my @required_category_labels = ('Producer', @data_source);

# special commands to manipulate Odoo relation One2Many and Many2Many
# see https://www.odoo.com/documentation/15.0/developer/reference/backend/orm.html#odoo.fields.Command
Expand Down Expand Up @@ -644,9 +646,20 @@ sub add_category_to_company($org_id, $label) {
[[$org_ref->{crm_org_id}], {category_id => [[$commands{link}, $category_id]]}]);
}

=head2 update_company_last_import_type ($org_id, $data_source)

Update the last import type of a company in Odoo

=head4 $data_source

must match one of the values in CRM.pm @data_source

=cut

sub update_company_last_import_type($org_id, $label) {
my $org_ref = retrieve_org($org_id);
return if not defined $org_ref->{crm_org_id};
return if $label ~~ @data_source;
my $category_id = $crm_data->{category}{$label};
add_category_to_company($org_id, $label);
return make_odoo_request('res.partner', 'write',
Expand Down
11 changes: 4 additions & 7 deletions lib/ProductOpener/Import.pm
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,15 @@ use ProductOpener::DataQuality qw/check_quality/;
use ProductOpener::Data qw/get_products_collection/;
use ProductOpener::ImportConvert qw/$empty_regexp $not_applicable_regexp $unknown_regexp clean_fields/;
use ProductOpener::Users qw/$Org_id $Owner_id $User_id/;
use ProductOpener::Orgs qw/create_org retrieve_org set_org_gs1_gln store_org update_import_date/;
use ProductOpener::Orgs
qw/create_org retrieve_org set_org_gs1_gln store_org update_import_date update_last_import_type/;
use ProductOpener::Data qw/:all/;
use ProductOpener::Packaging
qw/add_or_combine_packaging_component_data get_checked_and_taxonomized_packaging_component_data/;
use ProductOpener::Ecoscore qw/:all/;
use ProductOpener::ForestFootprint qw/:all/;
use ProductOpener::PackagerCodes qw/normalize_packager_codes/;
use ProductOpener::API qw/get_initialized_response/;
use ProductOpener::CRM qw/update_company_last_import_type/;

use CGI qw/:cgi :form escapeHTML/;
use URI::Escape::XS;
Expand Down Expand Up @@ -2774,11 +2774,8 @@ sub import_csv_file ($args_ref) {
# sync CRM
foreach my $org_id (keys %{$stats_ref->{orgs_existing}}) {
update_import_date($org_id, $time);
if ($args_ref->{source_id} eq 'agena3000') {
update_company_last_import_type($org_id, 'AGENA3000');
}
elsif ($args_ref->{source_id} eq 'equadis') {
update_company_last_import_type($org_id, 'EQUADIS');
if (exists $args_ref->{source_id}) {
update_last_import_type($org_id, uc($args_ref->{source_id}));
}
}

Expand Down
35 changes: 29 additions & 6 deletions lib/ProductOpener/Orgs.pm
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ BEGIN {
&update_import_date
&update_export_date
&update_last_logged_in_member
&update_last_import_type

); # symbols to export on request
%EXPORT_TAGS = (all => [@EXPORT_OK]);
Expand Down Expand Up @@ -199,17 +200,19 @@ sub store_org ($org_ref) {

$org_ref->{crm_org_id} = $company_id;
$org_ref->{crm_opportunity_id} = $opportunity_id;

# also, add the other members to the CRM, in the company
foreach my $user_id (keys %{$org_ref->{members}}) {
if ($user_id ne $main_contact_user) {
add_user_to_company($user_id, $org_ref->{crm_org_id});
}
}
1;
} or do {
$org_ref->{valid_org} = 'unreviewed';
$log->error("store_org", {error => $@}) if $log->is_error();
};
# also, add the other members to the CRM, in the company
foreach my $user_id (keys %{$org_ref->{members}}) {
if ($user_id ne $org_ref->{creator}) {
add_user_to_company($user_id, $org_ref->{crm_org_id});
}
}

}

if ( defined $org_ref->{crm_org_id}
Expand Down Expand Up @@ -533,11 +536,31 @@ sub update_last_logged_in_member($user_ref) {
is_user_in_org_group($org_ref, $user_ref->{userid}, "members") or return;

$org_ref->{last_logged_member} = $user_ref->{userid};
$org_ref->{last_logged_member_t} = time();

if (defined $org_ref->{crm_org_id}) {
update_company_last_logged_in_contact($org_ref, $user_ref);
}

store_org($org_ref);
return;
}

=head2 update_last_import_type($orgid, $data_source)

Update the last import type for an organization.

=head3 Arguments

=head4 $orgid

=cut

sub update_last_import_type ($org_id, $data_source) {
my $org_ref = retrieve_org($org_id);
$org_ref->{last_import_type} = $data_source;
update_company_last_import_type($org_id, $data_source);
store_org($org_ref);
return;
}

Expand Down
2 changes: 1 addition & 1 deletion lib/ProductOpener/Test.pm
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,7 @@ We remove time dependent fields, password (which encryption use salt) and sort s
=cut

sub normalize_org_for_test_comparison ($org_ref) {
my %specification = (fields_ignore_content => ["created_t"],);
my %specification = (fields_ignore_content => ["created_t", "last_logged_member_t"],);

normalize_object_for_test_comparison($org_ref, \%specification);
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
},
"created_t" : "--ignore--",
"creator" : "tests",
"last_logged_member" : "tests",
"last_logged_member_t" : "--ignore--",
"main_contact" : "tests",
"members" : {
"tests" : 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
"import_source_codeonline" : "",
"import_source_database-usda" : "",
"import_source_equadis" : "",
"last_logged_member" : "tests",
"last_logged_member_t" : "--ignore--",
"list_of_gs1_gln" : "",
"main_contact" : "tests",
"members" : {
Expand Down
Loading