View | Details | Raw Unified | Return to bug 21749
Collapse All | Expand All

(-)a/C4/ImportExportFramework.pm (-33 / +23 lines)
Lines 977-1016 sub _import_table_csv Link Here
977
                    seek($dom, $pos, 0);
977
                    seek($dom, $pos, 0);
978
                    return 1;
978
                    return 1;
979
                }
979
                }
980
                if (scalar(@$fields) == scalar(@arrData)) {
980
                if (!$fieldsNameRead) {
981
                    if (!$fieldsNameRead) {
981
                    # New table, we read the field names
982
                        # New table, we read the field names
982
                    $fieldsNameRead = 1;
983
                        $fieldsNameRead = 1;
983
                    $fields = [@arrData];
984
                        for (my $i=0; $i < @arrData; $i++) {
984
                    $fieldsStr = join(',', @$fields);
985
                            if ($arrData[$i] ne $fields->[$i]) {
985
                    $dataStr = '';
986
                                $fieldsNameRead = 0;
986
                    map { $dataStr .= '?,';} @$fields;
987
                                last;
987
                    chop($dataStr) if ($dataStr);
988
                            }
988
                    $updateStr = '';
989
                        }
989
                    map { $updateStr .= $_ . '=?,';} @$fields;
990
                        if ($fieldsNameRead) {
990
                    chop($updateStr) if ($updateStr);
991
                            $fieldsStr = join(',', @$fields);
991
                } else {
992
                            $dataStr = '';
992
                    # Read data
993
                            map { $dataStr .= '?,';} @$fields;
993
                    my $j = 0;
994
                            chop($dataStr) if ($dataStr);
994
                    my %dataFields = ();
995
                            $updateStr = '';
995
                    for (@arrData) {
996
                            map { $updateStr .= $_ . '=?,';} @$fields;
996
                        if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
997
                            chop($updateStr) if ($updateStr);
997
                            $dataFields{$fields->[$j]} = $frameworkcode;
998
                        }
998
                            $arrData[$j] = $frameworkcode;
999
                    } else {
999
                        } else {
1000
                        # Read data
1000
                            $dataFields{$fields->[$j]} = $_;
1001
                        my $j = 0;
1002
                        my %dataFields = ();
1003
                        for (@arrData) {
1004
                            if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
1005
                                $dataFields{$fields->[$j]} = $frameworkcode;
1006
                                $arrData[$j] = $frameworkcode;
1007
                            } else {
1008
                                $dataFields{$fields->[$j]} = $_;
1009
                            }
1010
                            $j++
1011
                        }
1001
                        }
1012
                        $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
1002
                        $j++
1013
                    }
1003
                    }
1004
                    $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
1014
                }
1005
                }
1015
                $pos = tell($dom);
1006
                $pos = tell($dom);
1016
            }
1007
            }
1017
- 

Return to bug 21749