Помощники по файлам, возвращающие только одну строку данных - PullRequest
0 голосов
/ 17 октября 2018

Я использую FileHelpers для загрузки в класс из csv, но по какой-то причине он возвращает только одну запись.

public void LoadPumpData(string Filename)
{
        var engine = new FileHelperEngine(typeof(FuelPumpData));
        //read the CSV file into your object Arrary
        var productSales = (FuelPumpData[])engine.ReadFile(Filename);


        if (productSales.Any())
        {
            //process your records as per your requirements
            foreach (var sales in productSales)
            {
                string carCodeNumber = GetCustomerCodeByVechicleTag(sales.VechicleTagNo);
                CreateInvoice(carCodeNumber, double.Parse(sales.FuelQty), double.Parse(sales.FuelValue));

            }
        }

 }

Это мой класс

[DelimitedRecord(",")]
[IgnoreEmptyLines()]
[IgnoreFirst()]

public class FuelPumpData
{
    [FieldQuoted(QuoteMode.OptionalForRead)]

    public int Date { get; set; }
    [FieldQuoted(QuoteMode.OptionalForRead)]

    public int Time { get; set; }
    public string SystemGroup1 { get; set; }
    public string SystemGroup3 { get; set; }
    public string VechicleTagNo { get; set; }
    public string SystemGroup2 { get; set; }
    public string SystemGroup4 { get; set; }
    public string FuelQty { get; set; }
    public string FuelValue { get; set; }
    public string FuelType { get; set; }
}

Я думалчтение поля и передача ему массива моего класса позволят прочитать все строки, но он будет возвращать только первую строку?.

Редактировать 2 Создать подпрограмму счета

 public void CreateInvoice(string customerCode, double fuelQty, double price)
 {
        try
        {
            SAPbobsCOM.Documents oInvoice = company.GetBusinessObject(BoObjectTypes.oInvoices);

            oInvoice.DocDate = DateTime.Now;
            oInvoice.CardCode = customerCode;

            oInvoice.Lines.ItemDescription="David Test";
            oInvoice.Lines.ItemCode = "DSL";
            oInvoice.Lines.Quantity = fuelQty;
            oInvoice.Lines.LineTotal = price;
            oInvoice.Lines.Add();



            int addInvoice = oInvoice.Add();

            if (addInvoice < 0 )
            {
                Console.Write("Error:" + company.GetLastErrorDescription());

            }
        }catch(Exception ex)
        {


        }

    }

Процедура создания счета-фактуры создает счет-фактуру в рамках одного продукта sap business, но не перезаписывает продажи продукта.

Редактировать 3, показывая мою отладку

enter image description here

CSV-запись для отображения в строках данных

"011018","0020","D SAYERS","SYSTEM DEFAULT",   5680,"20101","06009",35.64  ,               52.14,"DSL"
"011018","0438","SYSTEM DEFAULT","DECLAN MCDERMOTT",   5839,"SYSTEM DEFAULT","14502",36.52  ,               53.43,"DSL"

1 Ответ

0 голосов
/ 18 октября 2018

Для кого-то еще моей проблемой было то, что я сначала проигнорировал, думая, что собираюсь получить информацию заголовка в файле, когда меня нет.

[DelimitedRecord(",")]
[IgnoreEmptyLines()]
[IgnoreFirst()]

Один, я удалил IgnoreFirst, файл был обнаружен правильно с правыминформация.

...