Skip to content

Commit

Permalink
fix: various fixes to data sync with CRM (#10494)
Browse files Browse the repository at this point in the history
* crm sync fix
  • Loading branch information
4nt0ineB authored Jun 25, 2024
1 parent d704a0b commit 2105897
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 20 deletions.
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

0 comments on commit 2105897

Please sign in to comment.