- , $xml->field({name => "name"}, $nom . ($prenom ? " $prenom" : ""))
- , $xml->field({name => "member_ident"}, $number)
- , $xml->field({name => "type"}, "default")
- , ($cp ? $xml->field({name => "zip"}, $cp) : ())
- , ($city ? $xml->field({name => "city"}, $city) : ())
- , ($country ? $xml->field({name => "country_id", model => "res.country", search => "[('name','=','$country')]"}) : ())
- , ($email ? $xml->field({name => "email"}, $email) : ())
- , ($phone ? $xml->field({name => "phone"}) : ())
- , ($addr_postale? $xml->field({name => "street"}, $addr_postale) : ())
- , ($comment ? $xml->field({name => "comment"}, $comment) : ())
- );
- my %cots =
- ( ($cot1 ? ($cot1 => $date_cot1) : ())
- #, ($cot2 ? ($cot2 => $date_cot2) : ())
- ) ;
- while ( my ($amount, $date_from) = each(%cots) ) {
- push @$data_noupdate, $xml->function
- ( { model => "account.invoice"
- , name => "pay_and_reconcile"
- }
- , $xml->xmlcmnt('ids')
- , $xml->function
- ( { model => "account.invoice"
- , name => "draft2open"
- }
- , $xml->function
- ( { model => "res.partner"
- , name => "create_membership_invoice"
- }
- , $xml->xmlcmnt('partner_id')
- , $xml->value({eval => "ref('res_partner_${partner}_$number')"})
- , $xml->xmlcmnt('product_id')
- , $xml->value({eval => "ref('product_${reduction}_member')"})
- , $xml->xmlcmnt('context')
- , $xml->value({eval => "{'amount':$amount, 'date_from':'$date_from'}"})
- )
- )
- , $xml->xmlcmnt('pay_amount')
- , $xml->value ({eval => "$amount"})
- , $xml->xmlcmnt('pay_account_id')
- , $xml->value ({model => "account.account", search => "[('name', '=', 'Cash')]"})
- , $xml->xmlcmnt("moyen_cot1: $moyen_cot1")
- , $xml->xmlcmnt('period_id')
- , $xml->value ({model => "account.period", search => "[('name', '=', time.strftime('%m/%Y'))]"})
- , $xml->xmlcmnt('pay_journal_id')
- , $xml->value ({model => "account.journal", search => "[('name', '=', 'Cash')]"})
- , $xml->xmlcmnt('writeoff_acc_id')
- , $xml->value ({model => "account.account", search => "[('name', '=', 'Cash')]"})
- , $xml->xmlcmnt('writeoff_period_id')
- , $xml->value ({model => "account.period", search => "[('name', '=', time.strftime('%m/%Y'))]"})
- , $xml->xmlcmnt('writeoff_journal_id')
- , $xml->value ({model => "account.journal", search => "[('name', '=', 'Cash')]"})
- , $xml->xmlcmnt('context')
- , $xml->value ({eval => "{}"})
- , $xml->xmlcmnt('name')
- , $xml->value ({eval => "str('Import de paiement automatique')"})
- );
+ else {
+ $member = {};
+ $members->{$number} = $member;
+ }
+ $member->{number} = $number;
+ $member->{name}
+ = $csv_line->{name}
+ unless $member->{name};
+ $member->{firstname}
+ = $csv_line->{firstname}
+ unless $member->{firstname};
+ $member->{email}
+ = $csv_line->{email}
+ unless $member->{email};
+ $member->{cotisations}
+ = []
+ unless exists $member->{cotisations};
+ push @{$member->{cotisations}},
+ { amount => parse_amount($csv_line->{cotisation_amount})
+ , date => parse_date($csv_line->{cotisation_date})
+ , discount => parse_discount($csv_line->{cotisation_discount})
+ , mean => parse_payment_mean($csv_line->{cotisation_mean})
+ };
+ $member->{zip}
+ =($csv_line->{zip}
+ ? $csv_line->{zip}
+ : undef)
+ unless $member->{zip};
+ $member->{gender}
+ =($csv_line->{gender}
+ ? parse_gender($csv_line->{gender})
+ : undef)
+ unless $member->{gender};
+ $member->{city}
+ =($csv_line->{city}
+ ? $csv_line->{city}
+ : ($member->{zip} and ($member->{zip} =~ m/^750[0-2][0-9]$/) ? "Paris" : undef))
+ unless $member->{city};
+ $member->{country}
+ = ($member->{zip} and ($member->{zip} =~ m/^UK$/)
+ ? "Royaume-Uni"
+ : "France")
+ unless $member->{country};
+ $member->{phone}
+ =($csv_line->{landline_phone}
+ ? $csv_line->{landline_phone}
+ :($csv_line->{mobile_phone}
+ ? $csv_line->{mobile_phone}
+ : undef))
+ unless $member->{phone};
+ $member->{street}
+ =($csv_line->{street}
+ ? $csv_line->{street}
+ : undef)
+ unless $member->{street};
+ $member->{comment}
+ =($csv_line->{comment}
+ ? $csv_line->{comment}
+ : undef)
+ unless $member->{comment};
+ }
+ else {
+ push @$csv_lines_rejected, $csv_line;