Beispiel #1
0
int AB_ImExporterYN__ReadAccountStatus(AB_IMEXPORTER *ie,
				       AB_IMEXPORTER_ACCOUNTINFO *ai,
				       GWEN_XMLNODE *doc) {
  GWEN_XMLNODE *n;

  n=GWEN_XMLNode_FindFirstTag(doc, "SG4", 0, 0);
  while(n) {
    GWEN_XMLNODE *nn;

    nn=GWEN_XMLNode_GetNodeByXPath(n, "LIN/PF:D_0805",
				   GWEN_PATH_FLAGS_NAMEMUSTEXIST);
    if (nn) {
      const char *s;

      s=GWEN_XMLNode_GetProperty(nn, "Value", 0);
      if (s && strcasecmp(s, "LEN")==0) {
	GWEN_XMLNODE *nnn;
	GWEN_TIME *ti=0;
        AB_VALUE *val=0;

        /* read time */
	nnn=GWEN_XMLNode_GetNodeByXPath(n, "SG5/DTM",
					GWEN_PATH_FLAGS_NAMEMUSTEXIST);
	if (nnn)
	  ti=AB_ImExporterYN__ReadTime(ie, nnn, 202);

	/* read value */
	nnn=GWEN_XMLNode_GetNodeByXPath(n, "SG5/MOA",
					GWEN_PATH_FLAGS_NAMEMUSTEXIST);
	if (nnn)
	  val=AB_ImExporterYN__ReadValue(ie, nnn, 343);

	if (val) {
	  AB_ACCOUNT_STATUS *ast;
	  AB_BALANCE *bal;

          AB_Value_SetCurrency(val, AB_ImExporterAccountInfo_GetCurrency(ai));
	  ast=AB_AccountStatus_new();
	  bal=AB_Balance_new(val, ti);

	  AB_AccountStatus_SetBookedBalance(ast, bal);
	  AB_Balance_free(bal);

	  AB_ImExporterAccountInfo_AddAccountStatus(ai, ast);
	}
	AB_Value_free(val);
        GWEN_Time_free(ti);
      }
    }

    n=GWEN_XMLNode_FindNextTag(n, "SG4", 0, 0);
  }

  return 0;
}
Beispiel #2
0
AB_TRANSACTION *AB_ImExporterYN__ReadLNE_LNS(AB_IMEXPORTER *ie,
                                             AB_IMEXPORTER_ACCOUNTINFO *ai,
                                             GWEN_XMLNODE *node)
{
  AB_TRANSACTION *t;
  GWEN_XMLNODE *nn;
  GWEN_DATE *da=NULL;
  AB_VALUE *val=NULL;

  t=AB_Transaction_new();

  /* get date */
  nn=GWEN_XMLNode_FindFirstTag(node, "DTM", 0, 0);
  if (nn)
    da=AB_ImExporterYN__ReadDate(ie, nn, 209);
  AB_Transaction_SetValutaDate(t, da);
  GWEN_Date_free(da);
  da=NULL;

  /* read amount */
  nn=GWEN_XMLNode_FindFirstTag(node, "MOA", 0, 0);
  if (nn) {
    /* Gutschrift */
    val=AB_ImExporterYN__ReadValue(ie, nn, 210);
    if (val) {
      if (AB_Value_IsZero(val)) {
        AB_Value_free(val);
        val=NULL;
      }
    }
    if (val==NULL) {
      val=AB_ImExporterYN__ReadValue(ie, nn, 211);
      if (val)
        AB_Value_Negate(val);
    }
  }
  if (val==NULL)
    val=AB_Value_new();
  AB_Value_SetCurrency(val, AB_ImExporterAccountInfo_GetCurrency(ai));
  AB_Transaction_SetValue(t, val);
  AB_Value_free(val);
  val=0;

  /* read purpose */
  nn=GWEN_XMLNode_GetNodeByXPath(node, "FTX/C108",
                                 GWEN_PATH_FLAGS_NAMEMUSTEXIST);
  if (nn) {
    GWEN_XMLNODE *nnn;

    nnn=GWEN_XMLNode_FindFirstTag(nn, "D_4440", 0, 0);
    while (nnn) {
      GWEN_XMLNODE *nData;

      nData=GWEN_XMLNode_GetFirstData(nnn);
      if (nData) {
        const char *s;

        s=GWEN_XMLNode_GetData(nData);
        if (s) {
          GWEN_BUFFER *xbuf;

          xbuf=GWEN_Buffer_new(0, 256, 0, 1);
          AB_ImExporter_Iso8859_1ToUtf8(s, strlen(s), xbuf);
          AB_Transaction_AddPurposeLine(t, GWEN_Buffer_GetStart(xbuf));
          GWEN_Buffer_free(xbuf);
        }
      }
      nnn=GWEN_XMLNode_FindNextTag(nnn, "D_4440", 0, 0);
    }
  }

  return t;
}